/** * @Route("/adv/search", name="search", options={"expose"=true}) * @param Request $request * @return JsonResponse */ public function searchAction(Request $request) { $data = json_decode($request->getContent(), true); /** @var EntityManager $em */ $em = $this->getDoctrine()->getManager(); $qb = $em->createQueryBuilder(); $slug = $data['slug']; $city = $data['city']; $region = $data['region']; $slug = trim($slug); $slug = str_replace(' ', '%', $slug); $slug = str_replace('.', '%', $slug); $slug = str_replace(',', '%', $slug); $slug = str_replace(':', '%', $slug); $qb->select('a')->from('NaidusvoeBundle:Advertisment', 'a')->where($qb->expr()->like('a.title', "'%" . $slug . "%'"))->orderBy('a.advertismentBlock', 'ASC')->addOrderBy('a.advertismentOnMainPage', 'ASC')->addOrderBy('a.categoryTop', 'ASC')->addOrderBy('a.colorHighlight', 'ASC'); if ($region !== "none") { $qb->andWhere('a.regionId = :region')->setParameter('region', $region); } if ($city !== "none") { $qb->andWhere('a.city = :city')->setParameter('city', $city); } $advs = $qb->getQuery(); $paginator = new Paginator(); $pager = $paginator->getJsonResponse($advs, $request, 10); return new JsonResponse($pager); }
/** * // TODO: check for expiration * @Route("/get-advs/{type}/{filter}", name="get-advs", options={"expose"=true}) * @param Request $request * @param string $type * @param int|null $filter * @return JsonResponse */ public function getAdvsAction(Request $request, $type = null, $filter = null) { $typeID = null; switch ($type) { case 'trade': $typeID = 1; break; case 'gift': $typeID = 3; break; case 'found': $typeID = 2; break; } /** @var EntityManager $em */ $em = $this->getDoctrine()->getManager(); $advs = Advertisment::getAdvs($em, $filter, $typeID); $paginator = new Paginator(); $pager = $paginator->getJsonResponse($advs, $request, 10); $categories = $em->getRepository('NaidusvoeBundle:AdvertismentCategory')->findBy(array('typeID' => $typeID)); $bests = $this->get('naidusvoe.advertisement')->getBestAdvs($typeID); return new JsonResponse(array('advs' => $pager, 'categories' => Functions::arrayToJson($categories), 'bests' => Functions::arrayToJson($bests))); }