diff --git a/src/Controller/OutletController.php b/src/Controller/OutletController.php index 0db56e8a..654d0468 100644 --- a/src/Controller/OutletController.php +++ b/src/Controller/OutletController.php @@ -6,6 +6,7 @@ use App\Ramcar\BaseController; use App\Entity\Outlet; use Doctrine\ORM\Query; +use Doctrine\ORM\QueryBuilder; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface; @@ -34,14 +35,15 @@ class OutletController extends BaseController ->getRepository(Outlet::class) ->createQueryBuilder('q'); - // count total records - $total = $qb->select('COUNT(q)') - ->getQuery() - ->getSingleScalarResult(); - // get datatable params $datatable = $req->request->get('datatable'); + // count total records + $tquery = $qb->select('COUNT(q)'); + $this->setQueryFilters($datatable, $tquery); + $total = $tquery->getQuery() + ->getSingleScalarResult(); + // get current page number $page = $datatable['pagination']['page'] ?? 1; @@ -60,13 +62,7 @@ class OutletController extends BaseController // build query $query = $qb->select('q'); - - // check if filter is present - if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) { - $query->where('q.name LIKE :filter') - ->orWhere('q.address LIKE :filter') - ->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%'); - } + $this->setQueryFilters($datatable, $query); // check if sorting is present, otherwise use default if (isset($datatable['sort']['field']) && !empty($datatable['sort']['field'])) { @@ -81,7 +77,6 @@ class OutletController extends BaseController ->setMaxResults($perpage) ->getQuery() ->getResult(); - // Query::HYDRATE_ARRAY); // process rows $rows = []; @@ -94,7 +89,6 @@ class OutletController extends BaseController $row['time_open'] = $orow->getTimeOpen()->format('h:i A'); $row['time_close'] = $orow->getTimeClose()->format('h:i A'); - // add row metadata $row['meta'] = [ 'update_url' => '', @@ -148,6 +142,15 @@ class OutletController extends BaseController ->setCoordinates($point); } + protected function setQueryFilters($datatable, QueryBuilder $query) + { + if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) { + $query->where('q.name LIKE :filter') + ->orWhere('q.address LIKE :filter') + ->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%'); + } + } + public function addSubmit(Request $req, EncoderFactoryInterface $ef, ValidatorInterface $validator) { $this->denyAccessUnlessGranted('outlet.add', null, 'No access.');