src/Controller/Back/SecurityController.php line 79

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Back;
  3. use App\Entity\Siege;
  4. use App\Entity\User;
  5. use App\Form\UserRegistrationType;
  6. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  7. use App\Entity\Commerciale;
  8. use App\Classes\ChallengeFunction;
  9. use App\Repository\FactureRepository;
  10. use App\Repository\FactureUserRepository;
  11. use App\Repository\CommercialeRepository;
  12. use App\Repository\UserRepository;
  13. use App\Repository\SiegeRepository;
  14. use App\Services\CurrentPathService;
  15. use Doctrine\ORM\EntityManagerInterface;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\Routing\Annotation\Route;
  18. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  19. use Symfony\Component\HttpFoundation\Request;
  20. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  21. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  22. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  23. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  24. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  25. use Symfony\Component\Validator\Constraints\DateTime;
  26. use Symfony\Contracts\Translation\TranslatorInterface;
  27. use Symfony\Component\Security\Core\Security;
  28. class SecurityController extends AbstractController
  29. {
  30.     /**
  31.      * @Route("/login", name="app_login")
  32.      */
  33.     public function login(Request $requestAuthenticationUtils $authenticationUtilsTranslatorInterface $translatorCurrentPathService $currentPathServiceSecurity $securityUserRepository $userRepositoryTokenStorageInterface $tokenStorage): Response
  34.     {
  35.         if ($security->getUser()) {
  36.             $user $security->getUser();
  37.             if( $user instanceof User ){
  38.                 $fromValue $request->getSession()->get("login_from");
  39.                 $isSuperAdmin $userRepository->isSuperAdmin($user);
  40.                 if( $isSuperAdmin === true ){
  41.                     $request->getSession()->set("trig""");
  42.                     $dateTime = new \DateTime();
  43.                     $hourNow date('H:i'strtotime((date('H')+1).':'.date('i')));
  44.                     $dateArray = [
  45.                         $translator->trans($dateTime->format('l')),
  46.                         $dateTime->format('d'),
  47.                         $translator->trans($dateTime->format('F')),
  48.                         $hourNow
  49.                     ];
  50.                     if($fromValue == "front"){
  51.                         return $this->redirectToRoute('app_front_home', [], Response::HTTP_SEE_OTHER);
  52.                     } else {
  53.                         return $this->render('back/home/welcome.html.twig', [
  54.                             'dateArray' => $dateArray,
  55.                             'classes' => $currentPathService->classes()
  56.                         ]);
  57.                     }
  58.                 }
  59.                 else{
  60.                     $token $tokenStorage->getToken();
  61.                     if ($token) {
  62.                         $request->getSession()->set("token"$token);
  63.                         $tokenStorage->setToken(null);
  64.                     }
  65.                     return $this->render('back/security/trig.html.twig', [ 'erreur' => ""]);
  66.                 }
  67.             }
  68.         }
  69.         $from $request->query->get("from") ?? "back";
  70.         if ($from) {
  71.             $request->getSession()->set("login_from"$from);
  72.         }
  73.         // else{
  74.             $erreur "";
  75.             $error null;
  76.             // if( $request->getSession()->get("erreur") ){
  77.             //     $erreur = $request->getSession()->get("erreur");
  78.             //     $request->getSession()->remove("erreur");
  79.             // }
  80.             // else{
  81.                 $error $authenticationUtils->getLastAuthenticationError();
  82.             // }
  83.             $lastUsername $authenticationUtils->getLastUsername();
  84.             return $this->render('back/security/login.html.twig', ['last_username' => $lastUsername'error' => $error'erreur' => $erreur]);
  85.         // }
  86.     }
  87.     /**
  88.      * @Route("/ckeckTrig", name="ckeckTrig", methods={"POST"})
  89.      */
  90.     public function ckeckTrig(TranslatorInterface $translatorCurrentPathService $currentPathServiceRequest $requestSecurity $securityFactureRepository $factureRepositoryFactureUserRepository $factureUserRepositoryUrlGeneratorInterface $urlGeneratorCommercialeRepository $commercialeRepository,  TokenStorageInterface $tokenStorage){
  91.         
  92.         $token $request->getSession()->get("token");
  93.         $user $token->getUser();
  94.         if( $user instanceof User ){
  95.             $data $request->request->all();
  96.             $trig $data["trig"];
  97.             $commerciale $commercialeRepository->isTrueTrig($trig);
  98.             if( $commerciale !== '' ){
  99.                 $request->getSession()->remove("token");
  100.                 return $this->render('back/security/trig.html.twig', [ 'erreur' => $commerciale.". Vous devez vous connecter à nouveau."]);
  101.             }
  102.             else{
  103.                 $tokenStorage->setToken($request->getSession()->get("token"));
  104.                 $request->getSession()->set("trig"$trig);
  105.                 $request->getSession()->remove("token");
  106.                 $dateTime = new \DateTime();
  107.                 $hourNow date('H:i'strtotime((date('H')+1).':'.date('i')));
  108.                 $dateArray = [
  109.                     $translator->trans($dateTime->format('l')),
  110.                     $dateTime->format('d'),
  111.                     $translator->trans($dateTime->format('F')),
  112.                     $hourNow
  113.                 ];
  114.                 $trig $request->getSession()->get("trig");
  115.                 $commercialeData $commercialeRepository->getCommercialeByTRIG($trig);
  116.                 $fonction $commercialeData->getFonction();
  117.                 $msgChallenge "";
  118.                 /*if (!is_null($fonction) && in_array($fonction, Commerciale::getAllowedFunctions())) {
  119.                     if (Commerciale::isCOM($fonction)) {
  120.                         $firstDay = new \DateTime('last friday');
  121.                         $lastDay = new \DateTime('next thursday');
  122.                     }
  123.                     else if (Commerciale::isCAG($fonction)) {
  124.                         $firstDay = new \DateTime('first day of this month');
  125.                         $lastDay = new \DateTime('last day of this month');
  126.                     }
  127.                     $dateDebut = $firstDay->format("Y-m-d")." 00:00:00";
  128.                     $dateFin = $lastDay->format("Y-m-d")." 23:59:59";
  129.                     $limit = 1;
  130.                     $challengeFunction = new ChallengeFunction();
  131.                     $challenges = $challengeFunction->getChallengesDecroissante($factureRepository, $factureUserRepository, $commercialeRepository, $dateDebut, $dateFin, $limit, false);
  132.                     if (count($challenges)) {
  133.                         $challengeFirst = $challenges[0];
  134.                         if (Commerciale::isCOM($fonction)) {
  135.                             if ($challengeFirst->getCommerciale()->getTrig() == $trig) {
  136.                                 $msgChallenge = "Félicitations, ".$commercialeData->getPrenom()." ! <br>Vous êtes actuellement en tête dans le cadre du challenge de vente organisée par notre plateforme. Continuez à relever ce défi avec détermination. Votre performance est remarquable, et nous vous encourageons à maintenir cet élan!<br>Verifier en permanence votre position <a href='".$urlGenerator->generate("app_admin_commerciale_challenge")."'>ici</a>";
  137.                             }
  138.                             else {
  139.                                 $ca_owner = 0;
  140.                                 foreach ($challenges as $key => $value) {
  141.                                     if ($value->getCommerciale()->getTrig() == $trig) $ca_owner += $value->getChiffreAffaires();
  142.                                 }
  143.                                 $ca_msg = $challengeFirst->getChiffreAffaires() - $ca_owner;
  144.                                 if ($ca_msg > 0) $msgChallenge = "Bonjour ".$commercialeData->getPrenom().",<br>selon les données actuelles, il vous suffirait de réaliser des ventes d'une valeur totale de ".number_format($ca_msg, 0, ',', '.')." Ar pour remporter le lot de la semaine d’une valeur de 100.000 Ar. 🎉🎉🎉 <br><br>BONNE CHANCE";
  145.                             }
  146.                         }
  147.                         else if (Commerciale::isCAG($fonction)) {
  148.                             $siege = $security->getUser()->getSiege()->getId();
  149.                             if (count($challengeFirst->getFactures()) && $challengeFirst->getFactures()[0]->getSiege()->getId() == $siege) {
  150.                                 $msgChallenge = "Félicitations, ".$commercialeData->getPrenom()." ! <br>Vous êtes actuellement en tête dans le cadre du challenge de vente organisée par notre plateforme. Continuez à relever ce défi avec détermination. Votre performance est remarquable, et nous vous encourageons à maintenir cet élan!<br>Verifier en permanence votre position <a href='".$urlGenerator->generate("app_admin_commerciale_challenge")."'>ici</a>";
  151.                             }
  152.                             else {
  153.                                 $hv_owner = 0;
  154.                                 foreach ($challenges as $key => $value) {
  155.                                     $factures = $value->getFactures();
  156.                                     if (is_array($factures) && count($factures)) {
  157.                                         foreach ($factures as $keyF => $facture) {
  158.                                             if ($siege == $facture->getSiege()->getId()) $hv_owner += $facture->getMontant();
  159.                                         }
  160.                                     }
  161.                                 }
  162.                                 $ca_msg = $challengeFirst->getChiffreAffaires() - $hv_owner;
  163.                                 if ($ca_msg > 0) $msgChallenge = "Bonjour ".$commercialeData->getPrenom().",<br>selon les données actuelles, il vous suffirait de réaliser des ventes d'une valeur totale de ".number_format($ca_msg, 0, ',', '.')." Ar pour remporter votre lot du mois équivalent à un SMARTPHONE ITEL A04. 🎉🎉🎉 <br><br>BONNE CHANCE";
  164.                             }
  165.                         }
  166.                     }
  167.                 }*/
  168.                 return $this->render('back/home/welcome.html.twig', [
  169.                     'msgChallenge' => $msgChallenge,
  170.                     'dateArray' => $dateArray,
  171.                     'classes' => $currentPathService->classes()
  172.                 ]); 
  173.             }
  174.         }
  175.     }
  176.     
  177.     /**
  178.      * @Route("/dashboard", name="app_dashboard")
  179.      */
  180.     public function dashboard(TranslatorInterface $translatorCurrentPathService $currentPathService): Response{
  181.         $dateTime = new \DateTime();
  182.         $hourNow date('H:i'strtotime((date('H')+1).':'.date('i')));
  183.         $dateArray = [
  184.             $translator->trans($dateTime->format('l')),
  185.             $dateTime->format('d'),
  186.             $translator->trans($dateTime->format('F')),
  187.             $hourNow
  188.         ];
  189.         return $this->render('back/home/dashboard.html.twig', [
  190.             'dateArray' => $dateArray,
  191.             'classes' => $currentPathService->classes()
  192.         ]);
  193.     }
  194.     /**
  195.      * @Route("/logout", name="app_logout")
  196.      */
  197.     public function logout(): void
  198.     {
  199.         throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
  200.     }
  201.         /**
  202.      * @Route("/user/add", name="app_user_add")
  203.      */
  204.     public function addUser(
  205.         UserRepository $ur
  206.         SiegeRepository $sr
  207.         EntityManagerInterface $em,
  208.         UserPasswordHasherInterface $hasher
  209.     ){
  210.         $user = new User();
  211.         $user->setEmail("contact@teko-consulting.com");
  212.         $user->setRoles(['ROLE_SUPER_ADMIN''ROLE_ADMIN''ROLE_OPERATOR']);
  213.         $user->setFirstname("Teko");
  214.         $user->setName("Dom");
  215.         $user->setPhone("3456345667");
  216.         $siege $sr->find(37);
  217.         $user->setSiege($siege);
  218.         $password $hasher->hashPassword($user'devis_facture1234');
  219.         $user->setPassword($password);
  220.         $em->persist($user);
  221.         $em->flush();
  222.         dd('user ajouté');
  223.     }
  224.     /**
  225.      * @Route("/register", name="app_register")
  226.      */
  227.     public function register(Request $requestUserRepository $ur
  228.         EntityManagerInterface $em,
  229.         UserPasswordHasherInterface $hasher): Response{
  230.         $user = new User();
  231.         $form $this->createForm(UserRegistrationType::class, $user);
  232.         $form->handleRequest($request);
  233.         if ($form->isSubmitted() && $form->isValid()) {
  234.             $user->setRoles(['ROLE_OPERATOR']);
  235.             $password $hasher->hashPassword($user$form->get('password')->getData());
  236.             $user->setPassword($password);
  237.             //dd($user);
  238.             $em->persist($user);
  239.             $em->flush();
  240.             
  241.             return $this->redirectToRoute('app_login', [], Response::HTTP_SEE_OTHER);
  242.         }
  243.         return $this->renderForm('back/security/register.html.twig', [
  244.             'user' => $user,
  245.             'form' => $form,
  246.         ]);
  247.     }
  248. }