src/Repository/RapportCentraleRepository.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\RapportCentrale;
  4. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. /**
  7.  * @method RapportCentrale|null find($id, $lockMode = null, $lockVersion = null)
  8.  * @method RapportCentrale|null findOneBy(array $criteria, array $orderBy = null)
  9.  * @method RapportCentrale[]    findAll()
  10.  * @method RapportCentrale[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  11.  */
  12. class RapportCentraleRepository extends ServiceEntityRepository
  13. {
  14.     public function __construct(ManagerRegistry $registry)
  15.     {
  16.         parent::__construct($registry, RapportCentrale::class);
  17.     }
  18.     public function search($isPerteProduction=false,$centrale = false,$suivi = false,$interventionObject=null,$data, $page = 0, $max = NULL, $getResult = true, $columnOrder = NULL, $dirOrder = NULL,$count=false) {
  19.         $qb =  $this->createQueryBuilder('c');
  20.         $query = isset($data['query']) && $data['query'] ? $data['query'] : null;
  21.         $qb->leftJoin('c.project','project');
  22.         $qb->andWhere('project.name like :query or c.name like :query ')
  23.             ->setParameter('query', "%" . $query . "%")
  24.         ;
  25.         if($centrale){
  26.             $qb->andWhere('project.id in (:centrale)')
  27.             ->setParameter('centrale', $centrale);
  28.         }
  29.         if($suivi === "0" or $suivi){
  30.             $qb->andWhere('c.isSuiviNecessaire = :suivi')
  31.                 ->setParameter('suivi', $suivi);
  32.         }
  33.         if($isPerteProduction === "0" or $isPerteProduction){
  34.             $qb->andWhere('c.isPerteProduction = :isPerteProduction')
  35.                 ->setParameter('isPerteProduction', $isPerteProduction);
  36.         }
  37.         if($interventionObject){
  38.             $qb->andWhere('c.objectIntervention = :interventionObject')
  39.                 ->setParameter('interventionObject', $interventionObject);
  40.         }
  41.         if(isset($data['centraleToken']) && $data['centraleToken'] && $data['centraleToken']!==0){
  42.             $qb->andWhere('project.token = :tokenCentrale ')
  43.                 ->setParameter('tokenCentrale', $data['centraleToken'])
  44.             ;
  45.         }
  46.         $spvsTab = isset($data['spvsTab']) && $data['spvsTab'] ? $data['spvsTab'] : null;
  47.         $user = isset($data['user']) && $data['user'] ? $data['user'] : null;
  48.         if($user and   (in_array("ROLE_AUDITEUR", $user->getRoles()) or in_array("ROLE_COMPTABLE", $user ->getRoles()))){
  49.             $qb->andWhere('c.spv in (:spvsTab)')
  50.                 ->setParameter('spvsTab',$spvsTab);
  51.         }
  52.         $qb->andWhere('c.isArchived = 0 or c.isArchived is null');
  53.         if($count){
  54.             $qb->select('count(DISTINCT c.id) as result');
  55.             return $qb->getQuery()->getOneOrNullResult();
  56.         }else{
  57.             $qb->select('DISTINCT c');
  58.             if ($columnOrder) {
  59.                 if($columnOrder == 'name'){
  60.                     $qb->orderBy("c.$columnOrder", $dirOrder);
  61.                 }
  62.                 if($columnOrder == 'project'){
  63.                     $qb->orderBy("c.project", $dirOrder);
  64.                 }
  65.                 if($columnOrder == 'objectIntervention'){
  66.                     $qb->orderBy("c.objectIntervention", $dirOrder);
  67.                 }
  68.                 if($columnOrder == 'dateIntervention'){
  69.                     $qb->orderBy("c.dateIntervention", $dirOrder);
  70.                 }
  71.                 if($columnOrder == 'isSuiviNecessaire'){
  72.                     $qb->orderBy("c.isSuiviNecessaire", $dirOrder);
  73.                 }
  74.                 if($columnOrder == 'createdAt'){
  75.                     $qb->orderBy("c.createdAt", $dirOrder);
  76.                 }
  77.             }
  78.             if ($max) {
  79.                 $preparedQuery = $qb->getQuery()
  80.                     ->setMaxResults($max)
  81.                     ->setFirstResult($page * $max)
  82.                 ;
  83.             } else {
  84.                 $preparedQuery = $qb->getQuery();
  85.             }
  86.             return $getResult ? $preparedQuery->getResult() : $preparedQuery;
  87.         }
  88.     }
  89.     public function findAllRapportsByTokens($tokens){
  90.         $qb =  $this->createQueryBuilder('c');
  91.         $qb->andWhere('c.token in (:tokens)')
  92.             ->setParameter('tokens',$tokens);
  93.         return  $qb->getQuery()->getResult();
  94.     }
  95.     public function getRapportPreventiveByAnnee($project,$annee) {
  96.         $qb =  $this->createQueryBuilder('c');
  97.         $qb->leftJoin('c.project','project');
  98.         $qb->andWhere('project.id = :idProject')
  99.             ->setParameter('idProject', $project->getId());
  100.         $qb->andWhere('c.objectIntervention = :interventionObject')
  101.             ->setParameter('interventionObject', RapportCentrale::INTERVENTION_PREVENTIVE);
  102.         $qb->andWhere('c.dateIntervention like :annee')
  103.             ->setParameter('annee', '%'.$annee.'%');
  104.         return $qb->getQuery()->getResult();
  105.     }
  106. }