src/Service/CartService.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Service;
  3. use App\Repository\PrestationsRepository;
  4. use Symfony\Component\HttpFoundation\RequestStack;
  5. class CartService
  6. {
  7.     private $session;
  8.     private $PrestationsRepository;
  9.     public function __construct(RequestStack $requestStackPrestationsRepository $PrestationsRepository)
  10.     {
  11.         $this->session $requestStack;
  12.         $this->PrestationsRepository $PrestationsRepository;
  13.     }
  14.     public function add($id$surface null$nombrePieces null$fraisdedeplacement)
  15.     {
  16.         $panier $this->session->getSession()->get("panier", []);
  17.         
  18.         if ($nombrePieces !== null && $fraisdedeplacement === 'sur place') {
  19.             $panier[$id] = [
  20.                 'nombrePieces' => $nombrePieces,
  21.                 'fraisdedeplacement' => 'sur place'
  22.             ];
  23.         } elseif ($nombrePieces !== null && $fraisdedeplacement === 'par_telephone') {
  24.             $panier[$id] = [
  25.                 'nombrePieces' => $nombrePieces,
  26.                 'fraisdedeplacement' => 'par_telephone'
  27.             ];
  28.         } elseif ($surface !== null && $fraisdedeplacement === 'sur place') {
  29.             $panier[$id] = [
  30.                 'surface' => $surface,
  31.                 'fraisdedeplacement' => 'sur place',
  32.             ];
  33.         } elseif ($surface !== null && $fraisdedeplacement === 'par_telephone') {
  34.             $panier[$id] = [
  35.                 'surface' => $surface,
  36.                 'fraisdedeplacement' => 'par_telephone',
  37.             ];
  38.         } else {
  39.             if (!isset($panier[$id])) {
  40.                 $panier[$id] = 0;
  41.             }
  42.             $panier[$id]++;
  43.         }
  44.         $this->session->getSession()->set("panier"$panier);
  45.     }
  46.     public function show()
  47.     {
  48.         $panier $this->session->getSession()->get("panier", []);
  49.         $panier_complet = [];
  50.         if (!empty($panier)) {
  51.             foreach ($panier as $key => $value) {
  52.                 $prestation_encours $this->PrestationsRepository->find($key);
  53.                 if ($prestation_encours !== null) {
  54.                     $fraisdedeplacement = isset($value['fraisdedeplacement']) ? $value['fraisdedeplacement'] : null;
  55.                     if ($prestation_encours->getForfait() !== null) {
  56.                         $nombrePieces = isset($value['nombrePieces']) ? $value['nombrePieces'] : null;
  57.                         $prixReel $prestation_encours->getPrixReel($nombrePieces$fraisdedeplacement);
  58.                         $total $prixReel !== null $prixReel 0;
  59.                         $prestation_encours->setPrix($total);
  60.                         
  61.                         if ($fraisdedeplacement === 'sur place') {
  62.                             $prixReel $prestation_encours->getPrixReel($nombrePieces$fraisdedeplacement);
  63.                             $total $prixReel !== null $prixReel 0;
  64.                             $prestation_encours->setPrix($total);
  65.                         }
  66.                     } elseif ($fraisdedeplacement === 'sur place') {
  67.                         $total $prestation_encours->getPrix() * (isset($value['surface']) ? $value['surface'] : (isset($value['nombrePieces']) ? $value['nombrePieces'] : 1)) + $prestation_encours->getFraisdedeplacement();
  68.                         
  69.                     } else {
  70.                         $total $prestation_encours->getPrix() * (($value['surface'] ?? $value['nombrePieces']) ?? 1);
  71.                     }
  72.                     
  73.                     $panier_complet[] = [
  74.                         'prestation' => $prestation_encours,
  75.                         'quantite' => is_array($value) ? $value 1,
  76.                         'total' => $total,
  77.                     ];
  78.                 }
  79.             }
  80.         }
  81.         return $panier_complet;
  82.     }
  83.     public function getTotalAll()
  84.     {
  85.         $panier $this->session->getSession()->get("panier");
  86.         $total 0;
  87.         if (!empty($panier)) {
  88.             foreach ($panier as $key => $value) {
  89.                 $prestation_encours $this->PrestationsRepository->find($key);
  90.                 
  91.                 if ($prestation_encours !== null) {
  92.                     $fraisdedeplacement = isset($value['fraisdedeplacement']) ? $value['fraisdedeplacement'] : 'sur place';
  93.                     if ($prestation_encours->getForfait() !== null) {
  94.                         $nombrePieces = isset($value['nombrePieces']) ? $value['nombrePieces'] : null;
  95.                         
  96.                         // Assurez-vous que $fraisdedeplacement est défini correctement
  97.                         $fraisdedeplacement = ($fraisdedeplacement === 'par_telephone') ? 'par_telephone' 'sur place';
  98.                         
  99.                         $prixReel $prestation_encours->getPrixReel($nombrePieces$fraisdedeplacement);
  100.                         $subTotal $prixReel !== null $prixReel 0;
  101.                     } elseif ($fraisdedeplacement === 'sur place') {
  102.                         $subTotal $prestation_encours->getPrix() * (isset($value['surface']) ? $value['surface'] : (isset($value['nombrePieces']) ? $value['nombrePieces'] : 1)) + $prestation_encours->getFraisdedeplacement();
  103.                     } else {
  104.                         $subTotal $prestation_encours->getPrix() * (($value['surface'] ?? $value['nombrePieces']) ?? 1);
  105.                     }
  106.                     
  107.                     $total += $subTotal;
  108.                 }
  109.             }
  110.         }
  111.         return $total;
  112.     }
  113.     public function clear()
  114.     {
  115.         // remove pour vider la session
  116.         $this->session->getSession()->remove("panier");
  117.     }
  118.     public function remove($id)
  119.     {
  120.         // on recupere le panier
  121.         $panier $this->session->getSession()->get("panier");
  122.         // on baisse la quantité à -1
  123.         if ($panier[$id] < 1) {
  124.             return;
  125.         }
  126.         $panier[$id]--;
  127.         // on modifie la variable panier en session
  128.         $this->session->getSession()->set("panier"$panier);
  129.     }
  130.     public function remove_all($id)
  131.     {
  132.         // on recupere le panier
  133.         $panier $this->session->getSession()->get("panier");
  134.         // on supprimer la clé du panier
  135.         unset($panier[$id]);
  136.         // on modifie la variable panier en session
  137.         $this->session->getSession()->set("panier"$panier);
  138.     }
  139.     public function getFraisDeDeplacementAmount(): ?string
  140.     {
  141.         $panier $this->session->getSession()->get("panier", []);
  142.         $fraisdedeplacement null;
  143.         foreach ($panier as $key => $value) {
  144.             $prestation_encours $this->PrestationsRepository->find($key);
  145.             if ($prestation_encours !== null) {
  146.                 $fraisdedeplacement = isset($value['fraisdedeplacement']) ? $value['fraisdedeplacement'] : 'sur place';
  147.             }
  148.         }
  149.         return $fraisdedeplacement;
  150.     }
  151. }