src/Controller/Admin/DefaultController.php line 36

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Controller\AppBaseController;
  4. use App\Entity\{CommandeEodriveClient};
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  7. use Symfony\Component\HttpFoundation\JsonResponse;
  8. use Symfony\Component\Translation\Translator;
  9. use Symfony\Component\Translation\TranslatorInterface;
  10. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
  11. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
  12. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  13. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  14. use Omines\DataTablesBundle\Adapter\ArrayAdapter;
  15. use Omines\DataTablesBundle\Column\{DateTimeColumnTextColumn};
  16. use Omines\DataTablesBundle\Controller\DataTablesTrait;
  17. use Omines\DataTablesBundle\Adapter\Doctrine\ORMAdapter;
  18. use Doctrine\ORM\QueryBuilder;
  19. /**
  20.  *
  21.  * @IsGranted("ROLE_USER")
  22.  * @Route("/")
  23.  */
  24. use App\Entity\Alert;
  25. use App\Form\AlertType;
  26. use App\Manager\{ClientManagerCommandeManager};
  27. class DefaultController extends AppBaseController
  28. {
  29.     use DataTablesTrait;
  30.          /**
  31.          * @Route("/", name="admin.homepage")
  32.          */
  33.         public function listAction(Request $request){
  34.             
  35.             $clients $this->createDataTable()
  36.                
  37.                 ->add('nom'TextColumn::class,  ['label' => 'Nom''className' => 'bold''searchable' => true ])
  38.                 ->add('prenom'TextColumn::class, ['label' => 'Prénom''className' => 'bold''searchable' => true ])
  39.                 ->add('societe'TextColumn::class, ['label' => 'Société''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.                 ->add('tmpCommentaire'TextColumn::class, ['label' => 'Commentaires''render' => function($value$context) {
  54.                     $pathUpdateclientComment $this->generateUrl('admin.client.update-comment');
  55.                     $fullHtml '<div class="row"><textarea rows="3" class="w-100 flatPickr txt-a-'.$context->getId().'" >' $context->getCommentaire() . '</textarea></div>';
  56.                     $fullHtml .= '<div class="row"><div class="col-sm-2 offset-10"><button class="btn btn-primary btn-xs btn-update-client-commentaire pull-right mt-1 ml-1" type="button" data-url-action="'.$pathUpdateclientComment.'"  data-id="'.$context->getId().'"><i class="fa fa-check"></i></button>';
  57.                     $fullHtml .= "</div></div>";
  58.                     return $fullHtml;
  59.                 }])
  60.                 ->createAdapter(ORMAdapter::class, [
  61.                         'entity' => EodriveClient::class,
  62.                         'query' => function (QueryBuilder $builder) {
  63.                             $builder
  64.                                 ->select('c')
  65.                                 ->from(EodriveClient::class, 'c')
  66.                                 ->leftJoin('c.userAdmin','user')
  67.                                 ->where('c.etat IN (:etat_doit_paye, :etat_creation_sous_domaine)')
  68.                                 ->setParameter(':etat_doit_paye'EodriveClient::ETAT_DOIT_PAYER)
  69.                                ->setParameter(':etat_creation_sous_domaine'EodriveClient::ETAT_CREATION_SOUS_DOMAINE)
  70.                             ;
  71.                         },
  72.                 ])
  73.                 ->add('id'TextColumn::class, ['label' => 'Actions''render' => function($value$context) {
  74.                      $action 
  75.                         '<div class="dropdown small">
  76.                           <button class="btn btn-xs small border" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  77.                            <i class="fas fa-bars"></i>
  78.                           </button>
  79.                           <div class="dropdown-menu small" aria-labelledby="dropdownMenuButton">
  80.                     ';
  81.                     if($context->getEtat() == EodriveClient::ETAT_CREATION_SOUS_DOMAINE){
  82.                         $action .= '<a class="dropdown-item small" href="'.$this->generateUrl('admin.client.domaineActif', ['id' =>  $value],  true).'"><i class="fas fa-check"></i> Passé client à inscrit</a>';
  83.                     }
  84.                     $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>';
  85.                     $action .= '</div>
  86.                         </div>';
  87.                     return $action;                            
  88.                 }])
  89.                 ->handleRequest($request);
  90.             if ($clients->isCallback()) {
  91.                 return $clients->getResponse();
  92.             }
  93.             return $this->render('admin/dashboard/index.html.twig', ['clients' => $clients] );
  94.         }
  95.       
  96. }