src/Controller/HomeController.php line 127

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Livraisons;
  4. use App\Entity\User;
  5. use App\Form\Typeabonnement;
  6. use App\Form\LivraisonsType;
  7. use App\Repository\LivraisonsRepository;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use App\Service\InfobipService;
  13. use App\Form\SouscriptionType;
  14. use App\Entity\PaymentMethod;
  15. use App\Entity\Souscription;
  16. use Detection\MobileDetect;
  17. class HomeController extends AbstractController
  18. {
  19.     
  20.     
  21.     
  22.     private $infobipService;
  23.         public function __construct(InfobipService $infobipService)
  24.         {
  25.             $this->infobipService $infobipService;
  26.         }
  27.         #[Route('/rapportpointage'name'pointagereport')]
  28.         public function pointage_reporting_date()
  29.         {
  30.             $user $this->getUser();
  31.         // 🔹 Vérifie abonnement et rôle
  32.         if (!$user->isOkAbonnement() && in_array('ROLE_ADMIN'$user->getRoles(), false)) {
  33.             // Redirection admin avec abonnement actif
  34.             $this->addFlash('error''Vous n\'êtes pas autorisé à accéder à cette page, veuillez vous abonner d\'abord.');
  35.             return $this->redirectToRoute('souscription_new');
  36.         }
  37.             return $this->render('admin/reporting1.html.twig');
  38.         }
  39.         #[Route('/send-whatsapp'name'send_whatsapp')]
  40.         public function sendWhatsAppMessage(): Response
  41.         {
  42.             $to '+221774271878';  // Remplace par le numéro du destinataire
  43.             $message 'Hello, this is a test message from Infobip API!';
  44.             
  45.             $response $this->infobipService->sendMessage($to$message);
  46.             
  47.             return new Response('Message sent! Response: ' $response->getContent());
  48.         }
  49.     /**
  50.      * @Route("/", name="home")
  51.      */
  52.     public function index(Request $request): Response
  53.     {
  54.         $detect = new MobileDetect();
  55.         $isMobile $detect->isMobile();
  56.         
  57.         $livraison = new Livraisons();
  58.         $form $this->createForm(LivraisonsType::class, $livraison);
  59.         $form->handleRequest($request);
  60.         $now = new \DateTime();
  61.         $liv_hours $now->modify('+2 hours'); // Adds 2 hours
  62.         return $this->render('home/index.html.twig', [
  63.             'form' => $form->createView(),
  64.             'liv_hours' => $liv_hours,
  65.             'isMobile' => $isMobile,
  66.         ]);
  67.     }
  68.     
  69. #[Route('/reporting'name'dashboard_admin_reporting')]
  70. public function reporting(): Response
  71. {
  72.     $user $this->getUser();
  73.         // 🔹 Vérifie abonnement et rôle
  74.         if (!$user->isOkAbonnement() && in_array('ROLE_ADMIN'$user->getRoles(), false)) {
  75.             // Redirection admin avec abonnement actif
  76.             $this->addFlash('error''Vous n\'êtes pas autorisé à accéder à cette page, veuillez vous abonner d\'abord.');
  77.             return $this->redirectToRoute('souscription_new');
  78.         }
  79.     return $this->render('admin/reporting.html.twig', [
  80.       //  'users' => $users,
  81.     ]);
  82. }
  83.     
  84.     #[Route('/cgi'name'app_cgi_index'methods: ['GET'])]
  85.     public function cgi(): Response
  86.     {
  87.         return $this->render('home/cgi.html.twig');
  88.     }
  89.     #[Route('/aboutus'name'app_aboutus_index'methods: ['GET'])]
  90.     public function aboutus(): Response
  91.     {
  92.         return $this->render('home/aboutus.html.twig');
  93.     }
  94.     #[Route('/privacy'name'app_privacy_index'methods: ['GET'])]
  95.     public function privacy(): Response
  96.     {
  97.         return $this->render('home/privacy.html.twig');
  98.     }
  99.     #[Route('/tarification'name'app_tarification_index'methods: ['GET'])]
  100.     public function tarification(Request $request): Response
  101.     {
  102.         $souscription = new Souscription();
  103.     $form $this->createForm(SouscriptionType::class, $souscription);
  104.     $form->handleRequest($request);
  105. return $this->render('home/tarification.html.twig', [
  106.                 'form' => $form->createView(),
  107.             ]);
  108. /*
  109.         $currentUser =  $this->getUser();
  110.         if ($currentUser == $user)
  111.         {
  112.             
  113. }
  114.     else
  115.     {
  116.         return $this->redirectToRoute('app_login', [], Response::HTTP_SEE_OTHER);
  117.     }*/
  118.         
  119.     }
  120.    
  121.     
  122.     #[Route('/services'name'app_services_index'methods: ['GET'])]
  123.     public function services(): Response
  124.     {
  125.         return $this->render('home/services.html.twig');
  126.     }
  127.     #[Route('/programmefidelite'name'app_programmefidelite_index'methods: ['GET'])]
  128.     public function programmefidelite(): Response
  129.     {
  130.         return $this->render('home/programmefidelite.html.twig');
  131.     }
  132.     #[Route('/dashboardold'name'app_dashboard_indexold'methods: ['GET'])]
  133.     public function dashboardold(LivraisonsRepository $livraisonRepository): Response
  134.     {
  135.         // KPIs
  136.         $totalLivraisons $livraisonRepository->count([]);
  137.        // $livraisonsEnCours = $livraisonRepository->count(['statut' => 'en cours']);
  138.        // $livraisonsTerminees = $livraisonRepository->count(['statut' => 'livrée']);
  139.        // $revenuTotal = $livraisonRepository->getTotalRevenue(); // Méthode personnalisée
  140.         return $this->render('dashboard/index.html.twig', [
  141.             'totalLivraisons' => $totalLivraisons,
  142.             'livraisonsEnCours' => 0//$livraisonsEnCours,
  143.             'livraisonsTerminees' => 0//$livraisonsTerminees,
  144.             'revenuTotal' => 0//$revenuTotal,
  145.         ]);
  146.     }
  147.     #[Route('/dashboard'name'app_dashboard_index')]
  148.     public function dashboard(LivraisonsRepository $livraisonRepository): Response
  149.     {
  150.         $livraisonsJour $livraisonRepository->findToday();
  151.         $livraisonsSemaine $livraisonRepository->findThisWeek();
  152.         $livraisonsMois $livraisonRepository->findThisMonth();
  153.         $livraisonsencours $livraisonRepository->findEnAttente();
  154.         $totalLivraisons $livraisonRepository->count([]);
  155.         $nombrelivraisonsparzone $livraisonRepository->getNombreLivraisonsParZone();
  156.         return $this->render('dashboard/index.html.twig', [
  157.             'totalLivraisons' => $totalLivraisons,
  158.             'livraisonsJour' => $livraisonsJour,
  159.             'livraisonsSemaine' => $livraisonsSemaine,
  160.             'livraisonsMois' => $livraisonsMois,
  161.             'livraisonsencours' => $livraisonsencours,
  162.             'nombrelivraisonsparzone'  => $nombrelivraisonsparzone,
  163.             'caJour' => $livraisonRepository->getChiffreAffaireGroupedBy('day'),
  164.             'caSemaine' => $livraisonRepository->getChiffreAffaireGroupedBy('week'),
  165.             'caMois' => $livraisonRepository->getChiffreAffaireGroupedBy('month'),
  166.         ]);
  167.     }
  168. }