src/Controller/GSHomeController.php line 195

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Permission;
  4. use App\Entity\Service;
  5. use App\Repository\PaysRepository;
  6. use App\Repository\ServiceRepository;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use App\Service\StatistiqueService;
  11. use App\Entity\User;
  12. use App\Repository\CommandeRepository;
  13. use App\Repository\ServicePaysLivraisonRepository;
  14. use Symfony\Component\HttpFoundation\Request;
  15. class GSHomeController extends AbstractController
  16. {
  17.     /**
  18.      * @Route("/gs", name="app_gs_home")
  19.      */
  20.     public function index(
  21.         ServiceRepository $serviceRepository
  22.         PaysRepository $paysRepository
  23.         StatistiqueService $statistiqueService,
  24.         CommandeRepository $commandeRepository): Response
  25.     {
  26.   
  27.         /** @var User $user */
  28.         $user $this->getUser();
  29.         $fournisseur $user->getFournisseur();
  30.         $servicesLibelle $paysLivraisons = [];
  31.         if (!empty($fournisseur))
  32.         {
  33.             $services $fournisseur->getServicePaysLivraisons();
  34.             $arr = [];
  35.             foreach ($services as $servicePays)
  36.             {
  37.                 if (!$servicePays->isStatus())
  38.                 {
  39.                     continue;
  40.                 }
  41.                 $pays $servicePays->getPays();
  42.                 $service $pays->getService();
  43.                 $arr[] = $service;
  44.                 $paysLivraisons[$pays->getId()] = $pays;
  45.                 $servicesLibelle[] = $service->getNom();
  46.             }
  47.             // Verifier si le fournisseur a le droit de voir le service vente privée
  48.             if ($this->isGranted(Permission::ATTRIBUTE_VIEWPermission::MODULE_VENTES_EMBALLAGE))
  49.             {
  50.                 $service $serviceRepository->findOneBy(['code' => Service::CODE_VENTE_PRIVEES]);
  51.                 if (null !== $service)
  52.                 {
  53.                     $service->setNom(Permission::MODULE_VENTES_EMBALLAGE);
  54.                     
  55.                     $listePays $service->getPays();
  56.                     foreach ($listePays as $pays)
  57.                     {
  58.                         if (!$pays->isActif())
  59.                         {
  60.                             continue;
  61.                         }
  62.     
  63.                         $paysLivraisons[$pays->getId()] = $pays;
  64.                     }
  65.                     $servicesLibelle[] = $service->getNom();
  66.                     $arr[] = $service;
  67.                 }
  68.             }
  69.             $services $arr;
  70.             $paysLivraisons array_values($paysLivraisons);
  71.         }
  72.         else 
  73.         {
  74.             $services $serviceRepository->findBy([], ['position' => 'ASC']);
  75.             $arr = [];
  76.             /** @param Service $service */
  77.             foreach ($services as $service)
  78.             {
  79.                 if (!$service->isStatut())
  80.                 {
  81.                     continue;
  82.                 }
  83.                 $listePays $service->getPays();
  84.                 foreach ($listePays as $pays)
  85.                 {
  86.                     if (!$pays->isActif())
  87.                     {
  88.                         continue;
  89.                     }
  90.                     $paysLivraisons[$pays->getId()] = $pays;
  91.                 }
  92.                 $servicesLibelle[] = $service->getNom();
  93.             }
  94.             $paysLivraisons array_values($paysLivraisons);
  95.         }
  96.         // Récuperer les pays de livraison
  97.         if (count($paysLivraisons) < 1)
  98.         {
  99.             $paysLivraisons $paysRepository->getPaysByServices($services'depart'true);
  100.         }
  101.         
  102.         $arr = [];
  103.         foreach ($paysLivraisons as $pays)
  104.         {
  105.             $service $pays->getService();
  106.             $arr[$service->getNom()][] = $pays;
  107.         }
  108.         $paysLivraisons $arr;
  109.         $nombreVisiteurs $nombreVisitByClient = [];
  110.         if (empty($fournisseur))
  111.         {
  112.             $nombreVisiteurs $statistiqueService->getVisiteurStats('all''visiteur'nullnull$fournisseur);
  113.             $nombreVisitByClient $statistiqueService->getVisiteurStats('all''client'nullnull$fournisseur);
  114.         }
  115.         $chiffreAffaireTotal 0;
  116.         $evolutionVentes = [];
  117.         
  118.         $startDate $endDate null;
  119.         if (count($services) > 0)
  120.         {
  121.             // par défault on prendra l'année en cours
  122.             $startDate = (new \DateTime('first day of january'))->format('Y-m-d');
  123.             $endDate = (new \DateTimeImmutable())->format('Y-m-d');
  124.             $searchEndDate = (new \DateTimeImmutable())->modify('+1 day')->format('Y-m-d');
  125.             $chiffreAffaireTotal $commandeRepository->getChiffreAffaireTotal($servicesLibelle, [], $startDate$searchEndDate$fournisseur);
  126.             
  127.             $evolutionVentes $statistiqueService->getEvolutionVentes($servicesLibelle, [], $startDate$endDate$fournisseur);
  128.         }
  129.         $data = [];
  130.         foreach ($services as $service)
  131.         {
  132.             $data[$service->getNom()] = $service;
  133.         }
  134.      
  135.         return $this->render('home/index.html.twig', [
  136.             'services' => $services,
  137.             'servicesFilter' => $data,
  138.             'paysLivraisons' => $paysLivraisons,
  139.             'nombreVisiteurs' => $nombreVisiteurs,
  140.             'nombreVisitByClient' => $nombreVisitByClient,
  141.             'chiffreAffaireTotal' => $chiffreAffaireTotal,
  142.             'evolutionsVentes' => $evolutionVentes,
  143.             'dateDebut' => $startDate,
  144.             'dateFin' => $endDate
  145.         ]);
  146.     }
  147.     
  148.     /**
  149.      * @Route("/", name="app_home")
  150.      */
  151.     public function home(): Response
  152.     {
  153.         return $this->redirectToRoute('app_gs_home');
  154.     }
  155. }