%PDF- %PDF-
Direktori : /home/forge/api-takeaseat.eco-n-tech.co.uk/app/Repositories/ |
Current File : //home/forge/api-takeaseat.eco-n-tech.co.uk/app/Repositories/AvailabilityRepository.php |
<?php namespace App\Repositories; use Carbon\Carbon; use App\Models\Availability; use App\Http\Resources\SessionResource; use App\Http\Resources\Account\UserAddressResource; class AvailabilityRepository { /** * Get the available time slots * * @param datetime $from * @param datetime $to * @param int $increment * @return array $slots */ public static function getTimeSlots($item, $increment, $bookings) : array { $start_time = strtotime($item->available_from); $end_time = strtotime($item->available_to); $slot = strtotime(date('Y-m-d H:i:s', $start_time) . ' +'.$increment.' minutes'); $slots = []; for ($i=0; $slot <= $end_time; $i++) { if (!in_array(Carbon::parse($start_time), $bookings)) { $slots[] = [ 'start' => Carbon::parse($start_time), 'end' => Carbon::parse($slot), 'session_types' => SessionResource::collection($item->sessions), 'address' => $item->address ? new UserAddressResource($item->address) : null, ]; } $start_time = $slot; $slot = strtotime(date('Y-m-d H:i:s',$start_time) . ' +'.$increment.' minutes'); } return $slots; } }