ldc-boutique-cnc/app/Policies/ProductPolicy.php
2022-09-03 16:56:16 +02:00

44 lines
1.4 KiB
PHP

<?php
namespace App\Policies;
use App\Models\Product;
use Illuminate\Auth\Access\HandlesAuthorization;
use Illuminate\Auth\Access\Response;
use Illuminate\Support\Carbon;
class ProductPolicy
{
use HandlesAuthorization;
/**
* Create a new policy instance.
*
* @return void
*/
public function __construct()
{
}
/**
* @param App\Models\User|App\Models\Customers $user
* @param \App\Models\Product $product
*
* @return \Illuminate\Auth\Access\Response
* @phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundBeforeLastUsed
*/
public function addToCart($user, Product $product)
{
// phpcs:enable
$now = Carbon::now();
if ($product->orderable_start === null or $product->orderable_start <= $now) {
// On est entré dans la période commandable ou c'est commandable depuis toujours.
if ($product->orderable_end === null or $product->orderable_end >= $now) {
// Il n'y a pas de limite dans le temps ou elle n'est pas encore passée.
return Response::allow();
}
return Response::deny('Ce produit n\'est pas disponible pour le moment');
}
return Response::deny('Commande à partir du ' . $product->orderable_start->formatLocalized('%d %B %Y à %H:%M'));
}
}