```
✨ feat(ReserverController): Ajoute vérification de disponibilité produit. 🛠️ refactor(BackupCommand): Utilise DatabaseDumper et ZipArchiver. ✨ feat(GitSyncLogCommand): Utilise Gemini pour messages plus clairs. ✨ feat(GenerateVideoThumbsCommand): Utilise VideoThumbnailer service. ✨ feat(AppWarmupImagesCommand): Utilise StorageInterface pour warmup. 🔒️ security(nelmio_security): Renforce la sécurité avec des en-têtes. 🔧 chore(caddy): Améliore la configuration de Caddy pour la performance. 🐛 fix(makefile): Corrige les commandes de test. 🧪 chore(.env.test): Supprime la ligne vide à la fin du fichier. 🔧 chore(doctrine): Active native_lazy_objects. 🔧 chore(cache): Ajoute un cache system. ```
This commit is contained in:
@@ -7,6 +7,7 @@ use App\Entity\AccountResetPasswordRequest;
|
||||
use App\Entity\Customer;
|
||||
use App\Entity\CustomerTracking;
|
||||
use App\Entity\Product;
|
||||
use App\Entity\ProductReserve;
|
||||
use App\Entity\SitePerformance;
|
||||
use App\Form\RequestPasswordConfirmType;
|
||||
use App\Form\RequestPasswordRequestType;
|
||||
@@ -15,6 +16,7 @@ use App\Repository\CustomerRepository;
|
||||
use App\Repository\CustomerTrackingRepository;
|
||||
use App\Repository\FormulesRepository;
|
||||
use App\Repository\ProductRepository;
|
||||
use App\Repository\ProductReserveRepository;
|
||||
use App\Service\Mailer\Mailer;
|
||||
use App\Service\ResetPassword\Event\ResetPasswordConfirmEvent;
|
||||
use App\Service\ResetPassword\Event\ResetPasswordEvent;
|
||||
@@ -66,6 +68,47 @@ class ReserverController extends AbstractController
|
||||
'formules' => $formules,
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/produit/check', name: 'produit_check', methods: ['GET', 'POST'])]
|
||||
public function productCheck(Request $request, ProductReserveRepository $productReserveRepository, ProductRepository $productRepository): Response
|
||||
{
|
||||
$productId = $request->get('id');
|
||||
$startStr = $request->get('start');
|
||||
$endStr = $request->get('end');
|
||||
|
||||
if (!$productId && $request->isMethod('POST')) {
|
||||
$payload = $request->getPayload();
|
||||
$productId = $payload->get('id');
|
||||
$startStr = $payload->get('start');
|
||||
$endStr = $payload->get('end');
|
||||
}
|
||||
|
||||
if (!$productId || !$startStr || !$endStr) {
|
||||
return new JsonResponse(['error' => 'Missing parameters'], Response::HTTP_BAD_REQUEST);
|
||||
}
|
||||
|
||||
$product = $productRepository->find($productId);
|
||||
if (!$product) {
|
||||
return new JsonResponse(['error' => 'Product not found'], Response::HTTP_NOT_FOUND);
|
||||
}
|
||||
|
||||
try {
|
||||
$start = new \DateTimeImmutable($startStr);
|
||||
$end = new \DateTimeImmutable($endStr);
|
||||
} catch (\Exception $e) {
|
||||
return new JsonResponse(['error' => 'Invalid date format'], Response::HTTP_BAD_REQUEST);
|
||||
}
|
||||
|
||||
$reserve = new ProductReserve();
|
||||
$reserve->setProduct($product);
|
||||
$reserve->setStartAt($start);
|
||||
$reserve->setEndAt($end);
|
||||
|
||||
$isAvailable = $productReserveRepository->checkAvailability($reserve);
|
||||
|
||||
return new JsonResponse(['dispo' => $isAvailable]);
|
||||
}
|
||||
|
||||
#[Route('/web-vitals', name: 'reservation_web-vitals', methods: ['POST'])]
|
||||
public function webVitals(Request $request, EntityManagerInterface $em): Response
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user