src/Repository/LeadRepository.php line 60

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\Lead;
  4. use DateInterval;
  5. use DateTime;
  6. use DateTimeZone;
  7. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  8. use Doctrine\ORM\Query\Expr\Func;
  9. use Doctrine\Persistence\ManagerRegistry;
  10. /**
  11.  * @method Lead|null find($id, $lockMode = null, $lockVersion = null)
  12.  * @method Lead|null findOneBy(array $criteria, array $orderBy = null)
  13.  * @method Lead[]    findAll()
  14.  * @method Lead[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  15.  */
  16. class LeadRepository extends ServiceEntityRepository
  17. {
  18.     public function __construct(ManagerRegistry $registry)
  19.     {
  20.         parent::__construct($registryLead::class);
  21.     }
  22.     public function dateInterval($start$end=null)
  23.     {
  24.         $query $this->createQueryBuilder('l');
  25.         if($end != null){
  26.             $query $query
  27.             ->andWhere('l.created_at < :end')
  28.             ->setParameter('end'$end);
  29.         }
  30.         $query $query
  31.             ->andWhere('l.created_at > :start')
  32.             ->setParameter('start'$start)
  33.             ->getQuery()
  34.             ->getResult();
  35.         return $query;
  36.     }
  37.     public function findByToken($token$order$sort$user null)
  38.     {
  39.         $query $this->createQueryBuilder('l');
  40.         if (null !== $user) {
  41.             $query $query
  42.                 ->andWhere('l.user = :id')
  43.                 ->setParameter('id'$user);
  44.         }
  45.         $query $query
  46.             ->andWhere('l.token IN (:token)')
  47.             ->setParameter('token'$token)
  48.             ->orderBy($order$sort)
  49.             ->getQuery()
  50.             ->getResult();
  51.         return $query;
  52.     }
  53.     public function findByTokenMap($token$order$sort$user null$verified)
  54.     {
  55.         $query $this->createQueryBuilder('l');
  56.         $params =
  57.             [
  58.                 'token'     => $token,
  59.                 'verified'  => $verified
  60.             ];
  61.         if (null !== $user) {
  62.             $query $query
  63.                 ->andWhere('l.user = :id');
  64.             $params['id'] = $user;
  65.         }
  66.         $query $query
  67.             ->andWhere('l.token IN (:token)')
  68.             ->andWhere('l.verified = :verified')
  69.             ->setParameters($params)
  70.             ->orderBy($order$sort)
  71.             ->getQuery()
  72.             ->getResult();
  73.         return $query;
  74.     }
  75.     public function getAllMarker($id$parent_id$verified)
  76.     {
  77.         $q $this->createQueryBuilder('l');
  78.         if ($id === $parent_id) {
  79.             $q->andWhere('l.possessor = :id');
  80.         } else {
  81.             $q->andwhere('l.user_id = :id');
  82.         }
  83.         $q->andWhere('l.verified = :verified')
  84.             ->setParameters([
  85.                 'id'        => $id,
  86.                 'verified'  => $verified
  87.             ]);
  88.         return $q->getQuery()->getResult();
  89.     }
  90.     public function findSpam($latlng$token)
  91.     {
  92.         $interval = new DateTime(date('Y-m-d H:i:s'time() - 3600));
  93.         return $this->createQueryBuilder('l')
  94.             ->andWhere('l.lat_lng = :latlng')
  95.             ->andWhere('l.token = :token')
  96.             ->andWhere('l.created_at > :interval')
  97.             ->andWhere('l.verified = 0')
  98.             ->setParameters([
  99.                 'latlng'    => $latlng,
  100.                 'token'     => $token,
  101.                 'interval'  => $interval,
  102.             ])
  103.             ->orderBy('l.created_at''DESC')
  104.             ->getQuery()
  105.             ->getResult();
  106.     }
  107.     // REFONTE Système
  108.     public function findAllLeads($user$order$sort$search ""$where = [])
  109.     {
  110.         $query $this->createQueryBuilder('l');
  111.         if ($search != "") {
  112.             $fields = [
  113.                 'l.street',
  114.                 'l.street_number',
  115.                 'l.zipcode',
  116.                 'l.city',
  117.                 'l.name',
  118.                 'l.last_name',
  119.                 'l.email',
  120.                 'l.phone',
  121.             ];
  122.             $search explode(' '$search);
  123.             // $query = $query
  124.             //     ->addSelect('CONCAT(l.street, \' \', l.street_number, \' \', l.zipcode, \' \', l.city, \' \', l.name, \' \', l.last_name, \' \', l.email, \' \', l.phone) AS search ');
  125.             for ($i 0$i count($search); $i++) {
  126.                 $query $query
  127.                     ->andWhere('CONCAT_WS(l.street, \' \', l.street_number, \' \', l.zipcode, \' \', l.city, \' \', l.name, \' \', l.last_name, \' \', l.email, \' \', l.phone) LIKE :search' $i)
  128.                     ->setParameter('search' $i'%' trim($search[$i]) . '%');
  129.             }
  130.         }
  131.         if (!empty($where)) {
  132.             foreach ($where as $key => $values) {
  133.                 if($key == 'created_at'){
  134.                     if($values[0] != '0'){
  135.                         $query->andWhere('l.created_at > :val1')
  136.                         ->setParameter('val1'$values[0]);
  137.                     }
  138.                     if($values[1] != '0'){
  139.                         $query->andWhere('l.created_at < :val2')
  140.                             ->setParameter('val2'$values[1]);
  141.                     }
  142.                 }else{
  143.                     $query->andWhere('l.' $key ' IN (:values' $key ')')
  144.                         ->setParameter('values' $key$values)
  145.                         ->andWhere('l.' $key ' IS NOT NULL');
  146.                 }
  147.             }
  148.         }
  149.         if (in_array('ROLE_SUPER_ADMIN'$user->getRoles())) {
  150.             $query $query
  151.                 ->andWhere('l.possessor = :id')
  152.                 ->setParameter('id'$user->getId());
  153.         } else {
  154.             $query $query
  155.                 ->andWhere('l.user = :id')
  156.                 ->setParameter('id'$user->getId());
  157.         }
  158.         $query
  159.             ->orderBy($order$sort);
  160.         $query->getQuery()
  161.             ->getResult();
  162.         return $query;
  163.     }
  164.     public function findLeadsBetweenDate($date1$date2$user){
  165.         return $this->createQueryBuilder('l')
  166.         ->where('l.user = :user')
  167.         ->andWhere('l.created_at BETWEEN :date1 AND :date2')
  168.         ->setParameters([
  169.             'date1' => $date1,
  170.             'date2' => $date2,
  171.             'user'  => $user->getId()
  172.         ])
  173.         ->getQuery()->getResult();
  174.     }
  175.     public function findLeadsWithMandat($user){
  176.         return $this->createQueryBuilder('l')
  177.         ->where('l.user = :user')
  178.         ->andWhere('l.mandat is not NULL')
  179.         ->setParameters([
  180.             'user'  => $user->getId()
  181.         ])
  182.         ->getQuery()->getResult();
  183.     }
  184. }