<?php
namespace App\Controller;
use App\Entity\Livraisons;
use App\Entity\User;
use App\Form\Typeabonnement;
use App\Form\LivraisonsType;
use App\Repository\LivraisonsRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use App\Service\InfobipService;
use App\Form\SouscriptionType;
use App\Entity\PaymentMethod;
use App\Entity\Souscription;
use Detection\MobileDetect;
class HomeController extends AbstractController
{
private $infobipService;
public function __construct(InfobipService $infobipService)
{
$this->infobipService = $infobipService;
}
#[Route('/rapportpointage', name: 'pointagereport')]
public function pointage_reporting_date()
{
$user = $this->getUser();
// 🔹 Vérifie abonnement et rôle
if (!$user->isOkAbonnement() && in_array('ROLE_ADMIN', $user->getRoles(), false)) {
// Redirection admin avec abonnement actif
$this->addFlash('error', 'Vous n\'êtes pas autorisé à accéder à cette page, veuillez vous abonner d\'abord.');
return $this->redirectToRoute('souscription_new');
}
return $this->render('admin/reporting1.html.twig');
}
#[Route('/send-whatsapp', name: 'send_whatsapp')]
public function sendWhatsAppMessage(): Response
{
$to = '+221774271878'; // Remplace par le numéro du destinataire
$message = 'Hello, this is a test message from Infobip API!';
$response = $this->infobipService->sendMessage($to, $message);
return new Response('Message sent! Response: ' . $response->getContent());
}
/**
* @Route("/", name="home")
*/
public function index(Request $request): Response
{
$detect = new MobileDetect();
$isMobile = $detect->isMobile();
$livraison = new Livraisons();
$form = $this->createForm(LivraisonsType::class, $livraison);
$form->handleRequest($request);
$now = new \DateTime();
$liv_hours = $now->modify('+2 hours'); // Adds 2 hours
return $this->render('home/index.html.twig', [
'form' => $form->createView(),
'liv_hours' => $liv_hours,
'isMobile' => $isMobile,
]);
}
#[Route('/reporting', name: 'dashboard_admin_reporting')]
public function reporting(): Response
{
$user = $this->getUser();
// 🔹 Vérifie abonnement et rôle
if (!$user->isOkAbonnement() && in_array('ROLE_ADMIN', $user->getRoles(), false)) {
// Redirection admin avec abonnement actif
$this->addFlash('error', 'Vous n\'êtes pas autorisé à accéder à cette page, veuillez vous abonner d\'abord.');
return $this->redirectToRoute('souscription_new');
}
return $this->render('admin/reporting.html.twig', [
// 'users' => $users,
]);
}
#[Route('/cgi', name: 'app_cgi_index', methods: ['GET'])]
public function cgi(): Response
{
return $this->render('home/cgi.html.twig');
}
#[Route('/aboutus', name: 'app_aboutus_index', methods: ['GET'])]
public function aboutus(): Response
{
return $this->render('home/aboutus.html.twig');
}
#[Route('/privacy', name: 'app_privacy_index', methods: ['GET'])]
public function privacy(): Response
{
return $this->render('home/privacy.html.twig');
}
#[Route('/tarification', name: 'app_tarification_index', methods: ['GET'])]
public function tarification(Request $request): Response
{
$souscription = new Souscription();
$form = $this->createForm(SouscriptionType::class, $souscription);
$form->handleRequest($request);
return $this->render('home/tarification.html.twig', [
'form' => $form->createView(),
]);
/*
$currentUser = $this->getUser();
if ($currentUser == $user)
{
}
else
{
return $this->redirectToRoute('app_login', [], Response::HTTP_SEE_OTHER);
}*/
}
#[Route('/services', name: 'app_services_index', methods: ['GET'])]
public function services(): Response
{
return $this->render('home/services.html.twig');
}
#[Route('/programmefidelite', name: 'app_programmefidelite_index', methods: ['GET'])]
public function programmefidelite(): Response
{
return $this->render('home/programmefidelite.html.twig');
}
#[Route('/dashboardold', name: 'app_dashboard_indexold', methods: ['GET'])]
public function dashboardold(LivraisonsRepository $livraisonRepository): Response
{
// KPIs
$totalLivraisons = $livraisonRepository->count([]);
// $livraisonsEnCours = $livraisonRepository->count(['statut' => 'en cours']);
// $livraisonsTerminees = $livraisonRepository->count(['statut' => 'livrée']);
// $revenuTotal = $livraisonRepository->getTotalRevenue(); // Méthode personnalisée
return $this->render('dashboard/index.html.twig', [
'totalLivraisons' => $totalLivraisons,
'livraisonsEnCours' => 0, //$livraisonsEnCours,
'livraisonsTerminees' => 0, //$livraisonsTerminees,
'revenuTotal' => 0, //$revenuTotal,
]);
}
#[Route('/dashboard', name: 'app_dashboard_index')]
public function dashboard(LivraisonsRepository $livraisonRepository): Response
{
$livraisonsJour = $livraisonRepository->findToday();
$livraisonsSemaine = $livraisonRepository->findThisWeek();
$livraisonsMois = $livraisonRepository->findThisMonth();
$livraisonsencours = $livraisonRepository->findEnAttente();
$totalLivraisons = $livraisonRepository->count([]);
$nombrelivraisonsparzone = $livraisonRepository->getNombreLivraisonsParZone();
return $this->render('dashboard/index.html.twig', [
'totalLivraisons' => $totalLivraisons,
'livraisonsJour' => $livraisonsJour,
'livraisonsSemaine' => $livraisonsSemaine,
'livraisonsMois' => $livraisonsMois,
'livraisonsencours' => $livraisonsencours,
'nombrelivraisonsparzone' => $nombrelivraisonsparzone,
'caJour' => $livraisonRepository->getChiffreAffaireGroupedBy('day'),
'caSemaine' => $livraisonRepository->getChiffreAffaireGroupedBy('week'),
'caMois' => $livraisonRepository->getChiffreAffaireGroupedBy('month'),
]);
}
}