src/Repository/LogRepository.php line 204

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\Log;
  4. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. /**
  7.  * @method Log|null find($id, $lockMode = null, $lockVersion = null)
  8.  * @method Log|null findOneBy(array $criteria, array $orderBy = null)
  9.  * @method Log[]    findAll()
  10.  * @method Log[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  11.  */
  12. class LogRepository extends ServiceEntityRepository
  13. {
  14.     public function __construct(ManagerRegistry $registry)
  15.     {
  16.         parent::__construct($registryLog::class);
  17.     }
  18.     /**
  19.     * @return Log[] Returns an array of Log objects
  20.     */
  21.     
  22.     public function findLatest($maxResult)
  23.     {
  24.         return $this->createQueryBuilder('u')
  25.             ->orderBy('u.id''DESC')
  26.             ->setMaxResults($maxResult)
  27.             ->getQuery()
  28.             ->getResult()
  29.         ;
  30.     }
  31.     public function findByUser($u$maxResult)
  32.     {
  33.         return $this->createQueryBuilder('u')
  34.             ->andWhere('u.user = :i')
  35.             ->setParameter('i'$u)
  36.             ->orderBy('u.id''DESC')
  37.             ->setMaxResults($maxResult)
  38.             ->getQuery()
  39.             ->getResult()
  40.         ;
  41.     }
  42.     public function findAllByCompany($company$maxResult 20){
  43.         $query $this->createQueryBuilder('a')
  44.                 ->andWhere('a.company = :co')
  45.                 ->setParameter('co'$company)
  46.                 ->setMaxResults($maxResult)
  47.                 ->getQuery()
  48.                 ->getResult();
  49.                 
  50.         return $query;
  51.     }
  52.     public function findByPage($page$resultsPerPage$order 'ASC'$orderBy ""$keyword ""$company ""$user ""$start ""$end ""$logType ""$logModule "")
  53.     {
  54.         $keyword filter_var($keywordFILTER_SANITIZE_STRING);
  55.         $order filter_var($orderFILTER_SANITIZE_STRING);
  56.         $orderBy filter_var($orderByFILTER_SANITIZE_STRING);
  57.         // try {
  58.             $query $this->createQueryBuilder('a')
  59.                 ->leftJoin('a.user''u')
  60.                 ->leftJoin('u.personalInfo''p')
  61.                 ->andWhere('a.company = :co')
  62.                 ->andWhere('a.message NOT LIKE :ts')->setParameter('ts''%timesheet%')
  63.                 ->andWhere('a.message NOT LIKE :ta')->setParameter('ta''%task%')
  64.                 ->setParameter('co'$company)
  65.                 ->setMaxResults($resultsPerPage)
  66.                 ->setFirstResult(($page 1) * $resultsPerPage);
  67.             if($logModule !== ""){
  68.                 if ($logModule == "leave") {
  69.                     $query->andWhere('a.message != :excludeMessage')->setParameter('excludeMessage''log.leave.create');
  70.                 }
  71.                 $query->andWhere('REGEXP(a.message, :val) = 1')->setParameter('val'$logModule);
  72.             }
  73.             if ($keyword !== "") {
  74.                 if($logType !== ""){
  75.                     $query->andWhere('a.message LIKE :val')->setParameter('val''%' $keyword '%');
  76.                 }else{
  77.                     if($logModule){
  78.                         $regex2 =  $logModule $logModule.".*".$keyword '%' $keyword '%';
  79.                         $query->andWhere('REGEXP(a.message, :mod) = 1 AND p.firstName LIKE :val')
  80.                         ->orWhere('REGEXP(a.message, :mod) = 1 AND p.middleName LIKE :val')
  81.                         ->orWhere('REGEXP(a.message, :mod) = 1 AND p.lastName LIKE :val')
  82.                         ->orWhere('REGEXP(a.message, :mod) = 1 AND CONCAT(p.firstName, \' \',p.lastName) LIKE :val')
  83.                         ->orWhere('REGEXP(a.message, :mod) = 1 AND CONCAT(p.firstName, \' \',p.middleName, \' \',p.lastName) LIKE :val')
  84.                         ->orWhere('REGEXP(a.message, :mod) = 1 AND a.userIP LIKE :val')
  85.                          // ->orWhere('REGEXP(a.message, :regex2) = 1')
  86.                         ->orWhere('REGEXP(a.message, :regex2) = 1' . ($logModule == "leave" " AND a.message != 'log.leave.create'" ""))
  87.                         ->setParameter('mod'$logModule)
  88.                         ->setParameter('val','%' $keyword '%')
  89.                         ->setParameter('regex2'$regex2);
  90.                     }else{
  91.                         $query->andWhere('p.firstName LIKE :val OR p.middleName LIKE :val OR p.lastName LIKE :val OR CONCAT(p.firstName, \' \',p.lastName) LIKE :val OR CONCAT(p.firstName, \' \',p.middleName, \' \',p.lastName) LIKE :val OR a.message LIKE :val OR a.userIP LIKE :val')->setParameter('val''%' $keyword '%');
  92.                     }
  93.                 }   
  94.             }
  95.             if($logType !== ""){
  96.                 $query->andWhere('a.user is NULL')->andWhere('a.clientContact is NULL');
  97.             }else{
  98.                 $query->andWhere('a.user is not NULL')->orWhere('a.clientContact is not NULL');
  99.             }
  100.             if($user !== ""){
  101.                 $query->andWhere('u.id = :us')->setParameter('us'$user);
  102.             }
  103.             if ($start !== "" && $end !== ""){
  104.                 $end date("Y-m-d 23:59:59"strtotime($end));
  105.                 $query->andWhere('a.timestamp >= :st AND a.timestamp <= :et')->setParameter('st'$start)->setParameter('et'$end);
  106.             }
  107.             if ($orderBy === "") {
  108.                 $query->orderBy('a.id''DESC');
  109.             // } elseif ($orderBy == "member") {
  110.             //     $query->select('count(a.users) as HIDDEN userCount');
  111.             //     $query->orderBy('userCount',  $order);
  112.             // } elseif ($orderBy == "job") {
  113.             //     $query->orderBy('count(a.jobs)',  $order);
  114.             }else {
  115.                 $query->orderBy("a." $orderBy$order);
  116.             }
  117.             return $query->getQuery()->getResult();
  118.         // } catch (\Exception $exception) {
  119.         //     return [];
  120.         // }
  121.     }
  122.     public function countByPage($keyword ""$company =""$user =""$start ""$end ""$logType ""$logModule "")
  123.     {
  124.         $keyword filter_var($keywordFILTER_SANITIZE_STRING);
  125.         // try {
  126.             $query $this->createQueryBuilder('a')
  127.                 ->leftJoin('a.user''u')
  128.                 ->leftJoin('u.personalInfo''p')
  129.                 ->andWhere('a.company = :co')
  130.                 ->setParameter('co'$company)
  131.                 ->andWhere('a.message NOT LIKE :ts')->setParameter('ts''%timesheet%')
  132.                 ->andWhere('a.message NOT LIKE :ta')->setParameter('ta''%task%')
  133.                 ->select('count(distinct(a.id))');
  134.                 
  135.             if($logModule !== ""){
  136.                 if ($logModule == "leave") {
  137.                     $query->andWhere('a.message != :excludeMessage')->setParameter('excludeMessage''log.leave.create');
  138.                 }
  139.                 $query->andWhere('REGEXP(a.message, :val) = 1')->setParameter('val'$logModule);
  140.                 
  141.             }
  142.             if ($keyword !== "") {
  143.                 if($logType !== ""){
  144.                     $query->andWhere('a.message LIKE :val')->setParameter('val''%' $keyword '%');
  145.                 }else{
  146.                     if($logModule){
  147.                         $regex2 =  $logModule $logModule.".*".$keyword '%' $keyword '%';
  148.                         $query->andWhere('REGEXP(a.message, :mod) = 1 AND p.firstName LIKE :val')
  149.                         ->orWhere('REGEXP(a.message, :mod) = 1 AND p.middleName LIKE :val')
  150.                         ->orWhere('REGEXP(a.message, :mod) = 1 AND p.lastName LIKE :val')
  151.                         ->orWhere('REGEXP(a.message, :mod) = 1 AND CONCAT(p.firstName, \' \',p.lastName) LIKE :val')
  152.                         ->orWhere('REGEXP(a.message, :mod) = 1 AND CONCAT(p.firstName, \' \',p.middleName, \' \',p.lastName) LIKE :val')
  153.                         ->orWhere('REGEXP(a.message, :mod) = 1 AND a.userIP LIKE :val')
  154.                         // ->orWhere('REGEXP(a.message, :regex2) = 1')
  155.                         ->orWhere('REGEXP(a.message, :regex2) = 1' . ($logModule == "leave" " AND a.message != 'log.leave.create'" ""))
  156.                         ->setParameter('mod'$logModule)
  157.                         ->setParameter('val','%' $keyword '%')
  158.                         ->setParameter('regex2'$regex2);
  159.                     }else{
  160.                         $query->andWhere('p.firstName LIKE :val OR p.middleName LIKE :val OR p.lastName LIKE :val OR CONCAT(p.firstName, \' \',p.lastName) LIKE :val OR CONCAT(p.firstName, \' \',p.middleName, \' \',p.lastName) LIKE :val OR a.message LIKE :val OR a.userIP LIKE :val')->setParameter('val''%' $keyword '%');
  161.                     }
  162.                     
  163.                 }
  164.             }
  165.             if($logType !== ""){
  166.                 $query->andWhere('a.user is NULL');
  167.             }else{
  168.                 $query->andWhere('a.user is not NULL');
  169.             }
  170.             if($user !== ""){
  171.                 $query->andWhere('u.id = :us')->setParameter('us'$user);
  172.             }
  173.             if ($start !== "" && $end !== ""){
  174.                 $end date("Y-m-d 23:59:59"strtotime($end));
  175.                 $query->andWhere('a.timestamp >= :st AND a.timestamp <= :et')->setParameter('st'$start)->setParameter('et'$end);
  176.             }
  177.             return $query->getQuery()->getSingleScalarResult();
  178.         // } catch (\Exception $exception) {
  179.         //     return [];
  180.         // }
  181.     }
  182.     public function findByLogMessage($page$resultsPerPage$order 'ASC'$orderBy ""$message$id null$type null)
  183.     {
  184.         $query $this->createQueryBuilder('l')
  185.             ->andWhere('l.message LIKE :msg')
  186.             ->setParameter('msg'$message)
  187.             ->setMaxResults($resultsPerPage)
  188.             ->setFirstResult(($page 1) * $resultsPerPage);
  189.         
  190.         if($id !== null){
  191.             $query->andWhere("JSON_EXTRACT(l.newData,'$.id') = :id")
  192.                 ->setParameter('id'$id);
  193.         }
  194.         if($type !== null){
  195.             // $query->andWhere("JSON_UNQUOTE(JSON_EXTRACT(l.oldData, :type)) != JSON_UNQUOTE(JSON_EXTRACT(l.newData, :type))")
  196.             // $query->andWhere("JSON_UNQUOTE(JSON_EXTRACT(l.oldData, :type)) != JSON_UNQUOTE(JSON_EXTRACT(l.newData, :type)) OR (JSON_UNQUOTE(JSON_EXTRACT(l.oldData, :type)) IS NULL AND JSON_UNQUOTE(JSON_EXTRACT(l.newData, :type)) IS NOT NULL)")
  197.             $query->andWhere("JSON_UNQUOTE(JSON_EXTRACT(l.oldData, :type)) != JSON_UNQUOTE(JSON_EXTRACT(l.newData, :type)) OR JSON_UNQUOTE(JSON_EXTRACT(l.oldData, :type)) IS NULL")
  198.             ->setParameter('type''$.'.$type);
  199.         }
  200.         
  201.         $query->orderBy('l.id'$order);
  202.         return $query->getQuery()->getResult();
  203.     }
  204.     /*
  205.     public function findByExampleField($value)
  206.     {
  207.         return $this->createQueryBuilder('l')
  208.             ->andWhere('l.exampleField = :val')
  209.             ->setParameter('val', $value)
  210.             ->orderBy('l.id', 'ASC')
  211.             ->setMaxResults(10)
  212.             ->getQuery()
  213.             ->getResult()
  214.         ;
  215.     }
  216.     */
  217.     /*
  218.     public function findOneBySomeField($value): ?Log
  219.     {
  220.         return $this->createQueryBuilder('l')
  221.             ->andWhere('l.exampleField = :val')
  222.             ->setParameter('val', $value)
  223.             ->getQuery()
  224.             ->getOneOrNullResult()
  225.         ;
  226.     }
  227.     */
  228. }