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);
}
}