Files
api-extranetwork/app/Http/Controllers/BookingEngine/V1/BookingEngineBaseController.php
ExtraNetwork e5c4b6aa13 first commit
2026-05-12 17:04:54 +03:00

110 lines
3.2 KiB
PHP

<?php
namespace App\Http\Controllers\BookingEngine\V1;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
Abstract class BookingEngineBaseController
{
protected $cachePrefix = 'enwAPISearch:';
protected $cacheExpireTime = 30;
public function __construct()
{
}
public function setCacheDataWithSearchKey($searchKey, $dataArray)
{
$searchKeyPrefix = $this->cachePrefix . $searchKey;
Cache::put($searchKeyPrefix, $dataArray, $this->cacheExpireTime * 60);//5 min, 300 ttl, 600 10 dk
if (Cache::has($searchKeyPrefix)) {
return true;
} else {
return false;
}
}
public function getCacheDataWithSearchKey($searchKey)
{
$cacheData = [];
$searchKeyPrefix = $this->cachePrefix . $searchKey;
if (Cache::has($searchKeyPrefix)) {
$cacheData = Cache::get($searchKeyPrefix);
}
return $cacheData;
}
public function rateKeyCodeDecode($rateKeyCode)
{
$rateKeyCodeExplode = explode('-', $rateKeyCode);
$data = [
'propertyId' => $rateKeyCodeExplode[0],
'channelId' => $rateKeyCodeExplode[1],
'availabilityTypeId' => $rateKeyCodeExplode[2],
'roomId' => $rateKeyCodeExplode[3],
'rateMappingId' => $rateKeyCodeExplode[4],
'roomOccupancyCode' => $rateKeyCodeExplode[5],
'checkInDate' => Carbon::parse($rateKeyCodeExplode[6])->format('Y-m-d'),
'checkOutDate' => Carbon::parse($rateKeyCodeExplode[7])->format('Y-m-d'),
'cancellationPolicyId' => $rateKeyCodeExplode[8],
'paymentTypeId' => $rateKeyCodeExplode[9],
];
return $data;
}
public function getDateByDay($dates = [])
{
$dateByDay = [];
$diffInDays = Carbon::parse($dates['checkIn'])->floatDiffInDays(Carbon::parse($dates['checkOut']));
for ($i = 0; $i < $diffInDays; $i++) {
$dateByDay[] = Carbon::parse($dates['checkIn'])->addDay($i)->format('Y-m-d');
}
return $dateByDay;
}
public function getRoomsByOccupancies($rooms = [])
{
$roomsByOccupancies = [];
foreach ($rooms as $roomOrder => $room) {
$roomKey = [];
$roomKey[] = str_repeat('A', $room['adults']);
if ($room['children'] > 0) {
foreach ($room['age'] as $childAge) {
$roomKey[] = 'C' . $childAge;
}
}
$roomKey = implode($roomKey, '');
$roomsByOccupancies[$roomKey]['rooms'][] = $roomOrder;
$roomsByOccupancies[$roomKey]['roomCount'] = count($roomsByOccupancies[$roomKey]['rooms']);
$roomsByOccupancies[$roomKey]['occupancy'] = intval($room['adults'] + $room['children']);
$roomsByOccupancies[$roomKey]['adultCount'] = $room['adults'];
$roomsByOccupancies[$roomKey]['childCount'] = $room['children'];
$roomsByOccupancies[$roomKey]['childAges'] = fillOnUndefined($room, 'age', []);
$roomsByOccupancies[$roomKey]['occupancyCode'] = str_repeat('A', $room['adults']) . str_repeat('C', $room['children']);
}
return $roomsByOccupancies;
}
}