- <?php
- namespace Webkul\UVDesk\CoreFrameworkBundle\Repository;
- use Doctrine\ORM\EntityRepository;
- use Doctrine\Common\Collections;
- use Doctrine\ORM\Tools\Pagination\Paginator;
- use Doctrine\Common\Collections\Criteria;
- /**
-  * AgentPrivilegeRepository
-  *
-  * This class was generated by the Doctrine ORM. Add your own custom
-  * repository methods below.
-  */
- class SupportTeamRepository extends \Doctrine\ORM\EntityRepository
- {
-     
-     public $safeFields = array('page','limit','sort','order','direction');
-     const LIMIT = 10;
-     public function getAllSupportTeams(\Symfony\Component\HttpFoundation\ParameterBag $obj = null, $container) {
-         $json = array();
-         $qb = $this->getEntityManager()->createQueryBuilder();
-         $qb->select('a')->from($this->getEntityName(), 'a');
-         $data = $obj->all();
-         $data = array_reverse($data);
-         foreach ($data as $key => $value) {
-             if(!in_array($key,$this->safeFields)) {
-                 if($key!='dateUpdated' AND $key!='dateAdded' AND $key!='search') {
-                     $qb->Andwhere('a.'.$key.' = :'.$key);
-                     $qb->setParameter($key, $value);
-                 } else {
-                     if($key == 'search') {
-                         $qb->orwhere('a.name'.' LIKE :name');
-                         $qb->setParameter('name', '%'.urldecode($value).'%');
-                         $qb->orwhere('a.description'.' LIKE :description');
-                         $qb->setParameter('description', '%'.urldecode(trim($value)).'%');
-                     }
-                 }
-             }
-         }
-         if(!isset($data['sort'])){
-             $qb->orderBy('a.id',Criteria::DESC);
-         }
-         $paginator  = $container->get('knp_paginator');
-         $results = $paginator->paginate(
-             $qb,
-             isset($data['page']) ? $data['page'] : 1,
-             self::LIMIT,
-             array('distinct' => false)
-         );
-         $parsedCollection = array_map(function($team) {
-             return [
-                 'id'          => $team->getId(),
-                 'name'        => $team->getName(),
-                 'description' => $team->getDescription(),
-                 'isActive'    => $team->getIsActive(),
-             ];
-         }, $results->getItems()); 
-         $paginationData = $results->getPaginationData();
-         $queryParameters = $results->getParams();
-         $paginationData['url'] = '#'.$container->get('uvdesk.service')->buildPaginationQuery($queryParameters);
-         $json['groups'] = $parsedCollection;
-         $json['pagination_data'] = $paginationData;
-         return $json;
-     }
-     public function findSubGroupById($filterArray = [])
-     {
-         $json = array();
-         $qb = $this->getEntityManager()->createQueryBuilder();
-         $qb->select('a')->from($this->getEntityName(), 'a');
-         foreach ($filterArray as $key => $value) {
-             $qb->Andwhere('a.'.$key.' = :'.$key);
-             $qb->setParameter($key, $value);
-         }
-         $result = $qb->getQuery()->getOneOrNullResult();
-         // $result = $qb->getQuery()->getOneOrNullResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
-         return($result);
-     }
- }
-