vendor/uvdesk/core-framework/Repository/EmailTemplatesRepository.php line 14

Open in your IDE?
  1. <?php
  2. namespace Webkul\UVDesk\CoreFrameworkBundle\Repository;
  3. use Doctrine\ORM\Query;
  4. use Doctrine\ORM\EntityRepository;
  5. use Doctrine\Common\Collections\Criteria;
  6. class EmailTemplatesRepository extends EntityRepository
  7. {
  8. const LIMIT = 10;
  9. public $safeFields = array('page','limit','sort','order','direction');
  10. public function getEmailTemplates(\Symfony\Component\HttpFoundation\ParameterBag $obj = null, $container)
  11. {
  12. $json = array();
  13. $qb = $this->getEntityManager()->createQueryBuilder();
  14. $qb->select('sr')->from($this->getEntityName(), 'sr');
  15. $data = $obj->all();
  16. $data = array_reverse($data);
  17. foreach ($data as $key => $value) {
  18. if (! in_array($key,$this->safeFields)) {
  19. if ($key!='dateUpdated' AND $key!='dateAdded' AND $key!='search') {
  20. $qb->andWhere('sr.'.$key.' = :'.$key);
  21. $qb->setParameter($key, $value);
  22. } else {
  23. if($key == 'search') {
  24. $qb->andWhere('sr.name'.' LIKE :name');
  25. $qb->setParameter('name', '%'.urldecode(trim($value)).'%');
  26. }
  27. }
  28. }
  29. }
  30. if (! isset($data['sort']))
  31. $qb->orderBy('sr.id', Criteria::DESC);
  32. $paginator = $container->get('knp_paginator');
  33. $newQb = clone $qb;
  34. $newQb->select('COUNT(DISTINCT sr.id)');
  35. $results = $paginator->paginate(
  36. $qb->getQuery()->setHydrationMode(Query::HYDRATE_ARRAY)->setHint('knp_paginator.count', $newQb->getQuery()->getSingleScalarResult()),
  37. isset($data['page']) ? $data['page'] : 1,
  38. self::LIMIT,
  39. array('distinct' => false)
  40. );
  41. $paginationData = $results->getPaginationData();
  42. $queryParameters = $results->getParams();
  43. if (isset($queryParameters['template']))
  44. unset($queryParameters['template']);
  45. $paginationData['url'] = '#'.$container->get('uvdesk.service')->buildPaginationQuery($queryParameters);
  46. $json['templates'] = $results->getItems();
  47. $json['pagination_data'] = $paginationData;
  48. return $json;
  49. }
  50. }