src/IlaveU/Apps/POSBundle/Controller/POSApiController.php line 25
<?phpnamespace App\IlaveU\Apps\POSBundle\Controller;use App\IlaveU\ShopBundle\Entity\Order\Order;use App\IlaveU\ShopBundle\Entity\Shipping\ShippingMethod;use App\IlaveU\ShopBundle\Service\IlaveUShopProvider;use Doctrine\Persistence\ManagerRegistry;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;class POSApiController extends AbstractController{#[Route('/api/calculate-shipping-slots', name: 'calculateShippingSlots',methods:["POST","GET"])]public function calculateShippingSlots(IlaveUShopProvider $ilaveShopProvider,Request $request,ManagerRegistry $doctrine) {$contentJsonRequest = [];if ($request->getContentType() == 'json' and $request->getContent()) {$contentJsonRequest = json_decode($request->getContent(), true, 512, JSON_THROW_ON_ERROR);if ($contentJsonRequest) {$request->request->replace($contentJsonRequest);} else {return $this->json(['status' => 'error','message' => 'Content is not well formated',]);}}$shippingMethodId = (int) ($request->request->get('shippingMethodId')?? $request->request->get('shippingMethod')?? 0);if ($shippingMethodId > 0) {$shippingMethod = $doctrine->getManager()->getRepository(ShippingMethod::class)->find($shippingMethodId);if (!$shippingMethod) {return $this->json(['status' => 'error','message' => 'Mode de livraison introuvable',], 404);}$collectPreview = new \DateTime($request->request->get('datetime') ?? 'now');$shippingPreview = $collectPreview;if ($request->request->get('startDeliveryAt')) {$shippingPreview = new \DateTime($request->request->get('startDeliveryAt'));} elseif ($request->request->get('startProcessingAt')) {$collectPreview = new \DateTime($request->request->get('startProcessingAt'));$shippingPreview = clone $collectPreview;}return $this->json($ilaveShopProvider->getOrderSlotsForMobile($shippingMethod,$collectPreview,$shippingPreview,(string) $request->request->get('deliveryType', 'collecte-and-delivery')));}$useWorkingHours = filter_var($request->request->get('useWorkingHours', false), FILTER_VALIDATE_BOOLEAN)|| $request->request->get('slotType') === 'delivery';return $this->json($ilaveShopProvider->calculateShippingSlots(new \DateTime($request->request->get('datetime') ?? 'now'),(float) $request->request->get('interval', 1),(float) $request->request->get('duration', 0),(float) $request->request->get('offsetStartHours', 0),$useWorkingHours));}#[Route('/api/calculate-shipping-fees', name: 'calculateShippingFees',methods:["POST","GET"])]public function calculateShippingFees(IlaveUShopProvider $ilaveShopProvider,Request $request,ManagerRegistry $doctrine){$contentJsonRequest = [];$result = [];if ($request->getContentType() == 'json' and $request->getContent()) {$contentJsonRequest = json_decode($request->getContent(),true, 512, JSON_THROW_ON_ERROR);if($contentJsonRequest){$request->request->replace($contentJsonRequest);}else{return $this->json(["status"=>"error","message"=>"Content is not well formated"]);}}$shippingMethod = $doctrine->getManager()->getRepository(ShippingMethod::class)->find((int)$request->request->get("shippingMethodId"));$deliveryType = $request->request->get("deliveryType");if($deliveryType == "on-store" and $shippingMethod->getCode() == "CLASSIQUE GRATUIT"){return $this->json(["fees"=>0]);}return $this->json(["fees"=>$ilaveShopProvider->calculateShippingFees($shippingMethod,(float)$request->request->get("price"),true)]);}}