HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/farmfun.komma.pro/app/Komma/Availability/AvailabilityController.php
<?php

namespace App\Komma\Availability;

use App\Komma\Availability\Resources\PopUpAvailabilityResponse;
use App\Komma\Availability\Types\Availability;
use App\Komma\Products\Models\Product;
use App\Komma\Products\Resources\PopUpProductResponse;
use Illuminate\Routing\Controller as BaseController;

final class AvailabilityController extends BaseController
{
    /** @var AvailabilityService availabilityService */
    private $availabilityService;

    public function __construct()
    {
        $this->availabilityService = app(AvailabilityService::class);
    }

    /**
     * @param Product $product
     * @return PopUpProductResponse
     */
    public function product(Product $product)
    {
        $product->load('translation');

        return new PopUpProductResponse($product);
    }

    public function check(Product $product)
    {
        $product->load('locations', 'locations.translation', 'locations.availability');

        if ($product->locations->isEmpty()) {
            return response()->noContent();
        }

        $availabilities = collect();

        foreach ($product->locations as $location) {
            $availability = new Availability($product, $location);

            $availability->appendCapacity($location->pivot->max_persons_each_block, $location->pivot->available_each_block, $location->pivot->capacity_type);
            $availability->setDate(request()->get('date'));

            $this->availabilityService->isAvailabilityValid($availability, true);

            $availabilities->push($availability);
        }

        $availabilities = $availabilities->sortByDesc('available');

        return PopUpAvailabilityResponse::collection($availabilities);
    }
}