src/Controller/Admin/EodriveClientController.php line 31

Open in your IDE?
  1. <?php
  2.     namespace App\Controller\Admin;
  3.     use App\Entity\{EodriveClientSiteCommande};
  4.     use App\Form\EodriveClient\{UserType};
  5.     use App\Controller\AppBaseController;
  6.     
  7.     use App\Security\StubAuthenticator;
  8.     use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9.     use Symfony\Component\HttpFoundation\Request;
  10.     use Symfony\Component\HttpFoundation\Response;
  11.     use Symfony\Component\Routing\Annotation\Route;
  12.     use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  13.     use Symfony\Component\Security\Guard\GuardAuthenticatorHandler;
  14.     use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  15.     use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  16.     use Omines\DataTablesBundle\Adapter\ArrayAdapter;
  17.     use Omines\DataTablesBundle\Column\{DateTimeColumnBoolColumnTextColumnMapColumn};
  18.     use Omines\DataTablesBundle\Controller\DataTablesTrait;
  19.     use Omines\DataTablesBundle\Adapter\Doctrine\ORMAdapter;
  20.     use Doctrine\ORM\QueryBuilder;
  21.     use App\Manager\{CommandeManagerClientManagerMoneticoHelper};
  22.     use Symfony\Component\HttpFoundation\JsonResponse;
  23.     /**
  24.      * @Route("/client")
  25.      * @IsGranted("ROLE_SUPER_ADMIN")
  26.     */
  27.     class EodriveClientController extends AppBaseController
  28.     {
  29.     use DataTablesTrait;
  30.         /**
  31.          * @Route("/", name="admin.client.list")
  32.          */
  33.         public function listAction(Request $request){
  34.             $table $this->createDataTable()
  35.                 ->add('num'TextColumn::class,  ['field'=>'c.id','label' => 'Id''className' => 'bold''searchable' => true ])
  36.                 ->add('nom'TextColumn::class,  ['label' => 'Nom''className' => 'bold''searchable' => true ])
  37.                 ->add('prenom'TextColumn::class, ['label' => 'Prénom''className' => 'bold''searchable' => true ])
  38.                 ->add('societe'TextColumn::class, ['label' => 'Société''className' => 'bold''searchable' => true ])
  39.                 ->add('siret'TextColumn::class, ['label' => 'Siret''className' => 'bold''searchable' => true ])
  40.                 ->add('tel'TextColumn::class, ['label' => 'Tel.''className' => 'bold''searchable' => true ])
  41.                 ->add('email'TextColumn::class, ['label' => 'Email''className' => 'bold''searchable' => true ])
  42.                 ->add('lastLogin'DateTimeColumn::class, ['label' => 'Dernière conexion''field' => 'user.lastLogin''format' => 'd/m/Y H:i:s''orderable' => true])
  43.                 ->add('etat'TextColumn::class, ['label' => 'Etat''className' => 'bold''searchable' => true ])
  44.                 ->add('nbConnexion'TextColumn::class, ['label' => 'Nombre de connexions''render' => function($value$context) {
  45.                     $nbConnexion 0;
  46.                     $users $this->getRepository('App:Bflow\UserBO')->findBy(['clientEodrive' => $context]);
  47.                     foreach ( $users as $user )
  48.                     {
  49.                         $nbConnexion += $user->getNombreConnexion();
  50.                     }
  51.                     return $nbConnexion;
  52.                 }])
  53.                 
  54.                 
  55.                 ->createAdapter(ORMAdapter::class, [
  56.                         'entity' => EodriveClient::class,
  57.                         'query' => function (QueryBuilder $builder) {
  58.                             $builder
  59.                                 ->select('c')
  60.                                 ->from(EodriveClient::class, 'c')
  61.                             ;
  62.                         },
  63.                 ])
  64.                 ->add('id'TextColumn::class, ['label' => 'Actions''render' => function($value$context) {
  65.                     /**/
  66.                      $action 
  67.                         '<div class="dropdown small">
  68.                           <button class="btn btn-xs small border" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  69.                            <i class="fas fa-bars"></i>
  70.                           </button>
  71.                           <div class="dropdown-menu small" aria-labelledby="dropdownMenuButton">
  72.                     ';
  73.                     $action .= '<a class="dropdown-item small" href="'.$this->generateUrl('admin.client.edit', ['id' =>  $value],  true).'"><i class="fas fa-pencil-alt"></i> Éditer</a>';
  74.                     $action .= '<a class="dropdown-item small delete" data-id="'.$value.'" data-message="Êtes vous sûre de vouloir supprimer ce client?" href="'.$this->generateUrl('admin.client.delete', ['id' =>  $value],  true).'"><i class="fas fa-trash"></i> Supprimer</a>';
  75.                     $action .= '<a class="dropdown-item small" href="'.$this->generateUrl('admin.client.regenererPasswd', ['id' =>  $value],  true).'"><i class="fas fa-envelope"></i> Réinitialiser mot de passe</a>';
  76.                     $action .= '<a class="dropdown-item small" href="'.$this->generateUrl('admin.client.send-lien-paiement', ['id' =>  $value],  true).'"><i class="fas fa-envelope"></i> Envoyer lien de paiement</a>';
  77.                     $action .= '<a class="dropdown-item small" href="'.$this->generateUrl('admin.client.sendActivation', ['id' =>  $value],  true).'"><i class="fas fa-envelope"></i> Envoyer activation et mot de passe</a>';
  78.                     $action .= '</div>
  79.                         </div>';
  80.                     return $action;                            
  81.                 }])
  82.                 ->handleRequest($request);
  83.             if ($table->isCallback()) {
  84.                 return $table->getResponse();
  85.             }
  86.             return $this->render('admin/client/list.html.twig', ['datatable' => $table] );
  87.         }
  88.         /**
  89.          * @Route("/sendActivation/{id}", name="admin.client.sendActivation")
  90.          */
  91.         public function sendActivation(EodriveClient $clientRequest $requestClientManager $clientManager){
  92.             $clientManager->envoiActivationDomaine($client);
  93.       //     $clientManager->envoiReinitialiseMdp($client);
  94.             $this->addFlash("success""Le mail de réinitialisation à été envoyé correctement");
  95.             return $this->redirectToRoute('admin.client.list');
  96.         }
  97.         /**
  98.          * @Route("/regenererPasswd/{id}", name="admin.client.regenererPasswd")
  99.          */
  100.         public function regenererPasswdAction(EodriveClient $clientRequest $requestClientManager $clientManager){
  101.             $clientManager->envoiReinitialiseMdp($client);
  102.             $this->addFlash("success""Le mail de réinitialisation à été envoyé correctement");
  103.             return $this->redirectToRoute('admin.client.list');
  104.         }
  105.         /**
  106.          * @Route("/domaineActif/{id}", name="admin.client.domaineActif")
  107.          */
  108.         public function domaineActifAction(EodriveClient $clientRequest $requestClientManager $clientManager){
  109.             $client->setEtat(EodriveClient::ETAT_INSCRIT);
  110.             $this->save($client);
  111.             $clientManager->envoiActivationDomaine($client);
  112.             $clientManager->sendClient($client);
  113.             $this->addFlash("success""Le client a été passé en 'inscrit' et a reçu ses informations de connexion.");
  114.             return $this->redirectToRoute('admin.client.list');
  115.         }
  116.         /**
  117.          * @Route("/add", name="admin.client.add")
  118.          */
  119.         public function addAction(Request $requestUserPasswordEncoderInterface $passwordEncoderCommandeManager $commandeManagerClientManager $clientManager): Response
  120.         {
  121.             $user = new EodriveClient();           
  122.             $form $this->createForm(UserType::class, $user);
  123.             $form->handleRequest($request);
  124.             if ($form->isSubmitted() && $form->isValid()) {
  125.                 /*if($user->getIsCompteGratuit()){ 
  126.                     $commandeManager->generateFree($user);
  127.                 }
  128.                 */
  129.                 $this->save($user);
  130.                 $this->addFlash("success""Le client à été créé correctement");
  131.                 $clientManager->sendClient($client);
  132.                 return $this->redirectToRoute('admin.client.list');
  133.             }
  134.           
  135.             return $this->render('admin/client/new.html.twig', [
  136.                 'form' => $form->createView(),
  137.             ]);
  138.         }
  139.         /**
  140.          * @Route("/edit/{id}", name="admin.client.edit")
  141.          */
  142.         public function editAction(EodriveClient $userRequest $requestUserPasswordEncoderInterface $passwordEncoderClientManager $clientManagerCommandeManager $commandeManager): Response
  143.         {
  144.             $form $this->createForm(UserType::class, $user);
  145.             $form->handleRequest($request);
  146.             if ($form->isSubmitted() && $form->isValid()) {
  147.                 
  148.                 /*if($user->getIsCompteGratuit()){ 
  149.                     $commandeManager->generateFree($user);
  150.                 }*/
  151.                 
  152.                 $entityManager $this->getDoctrine()->getManager();
  153.                 $entityManager->persist($user);
  154.                 $entityManager->flush();
  155.           //      $clientManager->sendUpdateClient($user);
  156.                 $this->addFlash("success""Le client à été modifié correctement");
  157.                 return $this->redirectToRoute('admin.client.edit', ['id' => $user->getId() ]);
  158.             }
  159.             return $this->render('admin/client/edit.html.twig', [
  160.                 'form' => $form->createView(),
  161.             ]);
  162.         }
  163.            /**
  164.          * @Route("/delete/{id}", name="admin.client.delete")
  165.          */
  166.         public function deleteAction(EodriveClient $clientRequest $request): Response
  167.         {
  168.             $client->setUserAdmin(null);
  169.             $this->save($client);
  170.           
  171.             $vehiculeClients $this->getRepository("App:Bflow\VehiculeClient")->findByClientEodrive($client);
  172.             foreach ($vehiculeClients as $v) {
  173.                 $planning $this->getRepository("App:Bflow\Flotte\Planning\Planning")->findByResource($v);
  174.                 foreach ($planning as $p) {
  175.                     $this->delete($p);
  176.                 }
  177.                 $pvs $this->getRepository("App:Bflow\Flotte\GestionPV")->findByVehiculeClient($v);
  178.                 foreach ($pvs as $pv) {
  179.                     $this->delete($pv);
  180.                 }
  181.                 $this->delete($v);
  182.             }
  183.             $clients_ $this->getRepository("App:Bflow\Client")->findByClientEodrive($client);
  184.             foreach ($clients_ as $c) {
  185.                $ints $c->getInterlocuteurs();
  186.                $users $this->getRepository("App:Bflow\UserBO")->findByClient($c);
  187.                foreach($users as $u){
  188.                 $u->setClient(null);
  189.                 $this->save($u);
  190.                }
  191.                 foreach ($ints as $int) {
  192.                     if($int->getUser()->getClient() == $client){
  193.                         $int->getUser()->setClient(null);
  194.                     }
  195.                    $int->setClient(null);
  196.                    $this->save($int);
  197.                 }    
  198.                 $this->delete($c);
  199.             }
  200.             $commandes $this->getRepository("App:Commande")->findByClient($client);
  201.             foreach ($commandes as $c) {
  202.                 $c->setClient(null);
  203.                 $this->save($c);
  204.                $this->delete($c);
  205.             }
  206.             $financeurs $this->getRepository("App:Bflow\Flotte\CoordonnerFinanceurs")->findByClientEodrive($client);
  207.             foreach ($financeurs as $i) {
  208.                 $this->delete($i);
  209.             }
  210.             $interlocteurs $this->getRepository("App:Bflow\Interlocuteur")->findByClientEodrive($client);
  211.             foreach ($interlocteurs as $i) {
  212.                 $i->setUser(null);
  213.                 $this->delete($i);
  214.             }
  215.             $client->setUserAdmin(null);
  216.             $this->save($client);
  217.             $users $this->getRepository("App:Bflow\UserBO")->findByClientEodrive($client);
  218.             foreach ($users as $u) {
  219.                 $u->setClientEodrive(null);
  220.                 $this->save($u);
  221.                 $this->delete($u);
  222.             }
  223.             $this->save($client);
  224.             $this->delete($client);
  225.             $this->addFlash("success""Le client à été supprimée correctement");
  226.             return $this->redirectToRoute('admin.client.list');
  227.         }
  228.         /**
  229.          * @Route("/ajax-update-client-commentaire", name="admin.client.update-comment")
  230.          */
  231.         public function ajaxUpdateProspectCommentAction(Request $request){
  232.             $comment $request->request->get('comment');
  233.             $id $request->request->get('id');
  234.             $eodriveClient $this->getRepository(EodriveClient::class)->find($id);
  235.             $eodriveClient->setCommentaire($comment);
  236.             $this->save($eodriveClient);
  237.             return new JsonResponse(['success' => true]);
  238.         }
  239.         /**
  240.          * @Route("/envoi-lien-paiement/{id}", name="admin.client.send-lien-paiement")
  241.          */
  242.         public function sendLienAction(EodriveClient $adherentRequest $requestCommandeManager $commandeManagerMoneticoHelper $moneticoHelperClientManager $clientManager){
  243.             $em =  $this->getDoctrine()->getManager();
  244.             $commande = new Commande();
  245.             $commande $commandeManager->createCommande($commande);
  246.             $commande->setClient($adherent);
  247.             $commande->setNumCommande($commandeManager->generateNumCommande($adherent));
  248.             $url_paiement $moneticoHelper->generateLink($commande);
  249.             $clientManager->envoiURLPaiement($adherent$url_paiement);                        
  250.             $commande->setLinkSended(true);
  251.             $em->persist($commande);              
  252.             $em->flush();
  253.             $this->addFlash("success""Le lien a été envoyé");
  254.             return $this->redirectToRoute('admin.client.list');
  255.         }
  256.     }
  257. ?>