src/Repository/ActionsRepository.php line 29

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\Actions;
  4. use App\Service\Securizer;
  5. use Doctrine\ORM\ORMException;
  6. use App\Repository\ContactsRepository;
  7. use Doctrine\ORM\OptimisticLockException;
  8. use Doctrine\Persistence\ManagerRegistry;
  9. use App\Repository\InterventionRepository;
  10. use ArrayObject;
  11. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  12. use DateInterval;
  13. use DateTime;
  14. use DateTimeInterface;
  15. use Doctrine\ORM\QueryBuilder;
  16. /**
  17.  * @method Actions|null find($id, $lockMode = null, $lockVersion = null)
  18.  * @method Actions|null findOneBy(array $criteria, array $orderBy = null)
  19.  * @method Actions[]    findAll()
  20.  * @method Actions[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  21.  */
  22. class ActionsRepository extends ServiceEntityRepository
  23. {
  24.     public function __construct(ManagerRegistry $registry)
  25.     {
  26.         parent::__construct($registryActions::class);
  27.     }
  28.     /**
  29.      * @throws ORMException
  30.      * @throws OptimisticLockException
  31.      */
  32.     public function add(Actions $entitybool $flush true): void
  33.     {
  34.         $this->_em->persist($entity);
  35.         if ($flush) {
  36.             $this->_em->flush();
  37.         }
  38.     }
  39.     /**
  40.      * @throws ORMException
  41.      * @throws OptimisticLockException
  42.      */
  43.     public function remove(Actions $entitybool $flush true): void
  44.     {
  45.         $this->_em->remove($entity);
  46.         if ($flush) {
  47.             $this->_em->flush();
  48.         }
  49.     }
  50.     public function findActionId(
  51.         $user,
  52.         Securizer $securizer,
  53.         TicketsRepository $repoTicket,
  54.         ContactsRepository $repoContact,
  55.         InterventionRepository $repoIntervention,
  56.         ContratsRepository $repoContrat,
  57.         LigneDeContratRepository $repoLigneContrat
  58.     ): array {
  59.         //recupere l'id du ou des tickets qu'il est possible d'afficher
  60.         $tickets $repoTicket->findticketAll($user$securizer$repoContact);
  61.         //recupere l'id du ou des interventions qu'il est possible d'afficher
  62.         $intervention $repoIntervention->findInterventionId($user$securizer$repoContrat$repoLigneContrat);
  63.         //gestion des données retournées en fonction du role de la personne connecté
  64.         if ($securizer->isGranted($user"ROLE_TECH")) {
  65.             //les roles qui sont au minimum tech peuvent avoir tous les contacts
  66.             $actions $this->findAll();
  67.         } else if ($securizer->isGranted($user"ROLE_CLIENT")) {
  68.             //les roles client peuvent voir la liste des tickets dons les beneficiares sont lié au même client qu'eux
  69.             $actionsTickets $this->findBy(['ticket' => $tickets]);
  70.             $actionsIntervention $this->findBy(['intervention' => $intervention]);
  71.             $actions array_merge($actionsTickets$actionsIntervention);
  72.         } else {
  73.             $actionsTickets $this->findBy(['ticket' => $tickets]);
  74.             $actionsIntervention $this->findBy(['intervention' => $intervention]);
  75.             $actions array_merge($actionsTickets$actionsIntervention);
  76.         }
  77.         return $actions;
  78.     }
  79.     protected function genericRequestOrder(QueryBuilder $queryBuilder)
  80.     {
  81.         $response $queryBuilder->select('a')
  82.             ->orderBy('a.dateAction')
  83.             ->getQuery()
  84.             ->getResult();
  85.         return $response;
  86.     }
  87.     public function getActionsByDate(string $startDatestring $endDate$userSecurizer $securizer): array
  88.     {
  89.         if ($securizer->isGranted($user"ROLE_TECH")) {
  90.             $queryBuilder = ($this->createQueryBuilder('a')
  91.                 ->where('a.dateAction BETWEEN :startDate AND :endDate')
  92.                 ->setParameter('startDate'$startDate)
  93.                 ->setParameter('endDate'$endDate));
  94.         }
  95.         return $this->genericRequestOrder($queryBuilder);
  96.     }
  97. }