/** * @ApiDoc( * description="Expertise list", * statusCodes={200="Expertise"}, * section="Expertise", * filters={ * {"name"="user", "dataType"="integer", "required"=true}, * {"name"="wish", "dataType"="boolean", "required"=false}, * {"name"="groupBy", "dataType"="string", "required"=false, "pattern"="cuisine|geoname"} * }) * @Route("/api/expertise") * @Route("/public-api/expertise") * @Method({"GET"}) * @throws BadRequestException * @Cache(maxage="+1 day", public=true) * @return View */ public function getAllAction() { $request = $this->requestStack->getCurrentRequest(); $user = (int) $this->requestStack->getCurrentRequest()->query->get('user'); $groupBy = $this->requestStack->getCurrentRequest()->query->get('groupBy'); $wish = (bool) $this->requestStack->getCurrentRequest()->query->get('wish'); if (!isset($user)) { throw new BadRequestException(array('exception.bad_request.missing_parameters')); } if ($wish) { return $this->getWishList(); } $expertiseList = $this->reviewRepository->getExpertiseByUser($user, $groupBy); $this->cacheManager->tagController($request, CacheTag::REVIEW); return $this->view(array('expertise' => $expertiseList)); }
/** * @ApiDoc( * description="Restaurant reviewed array of id", * statusCodes={200="Restaurant"}, * section="Restaurant", * filters={ * {"name"="user", "dataType"="integer", "required"=true} * }) * @Route("/api/restaurants/reviewed/ids") * @Cache(maxage="+1 week", public=true) * @Method({"GET"}) * @throws BadRequestException * @return View */ public function getReviewedAction() { $request = $this->requestStack->getCurrentRequest(); $userId = $request->query->get('user'); if (!$userId) { throw new BadRequestException(); } $restaurants = $this->reviewRepository->getReviewsIdsOf($userId); $this->cacheManager->tagController($request, CacheTag::REVIEW); return $this->view(array('restaurants' => $restaurants)); }
/** * @param integer $id * * @ApiDoc( * description="Delete Review", * statusCodes={204="Review Deleted"}, * section="Review") * @Route("/api/reviews/{id}") * @Method({"DELETE"}) * @return View */ public function deleteAction($id) { $user = $this->getUser(); $review = $this->reviewRepository->get($id); $this->securityCheck(Permission::WRITE, $review); $this->entityManager->remove($review); $user->decrementReviewsCount(); $this->entityManager->flush(); $this->reviewManager->autoReorderRankingOfReview($review); $this->dispatch(ApiEvent::REVIEW_DELETED, new ReviewDeletedEvent($review)); $this->cacheManager->invalidateOnDelete($review); return $this->view(array(), 204); }
protected function getRestaurantsIds(Request $request) { $reviewedBy = $request->query->get('reviewedBy'); $wishedBy = $request->query->get('wishedBy'); $results = array(); if ($reviewedBy && $wishedBy) { $wishedRestaurants = $this->wishRepository->getWishesIdsOf($wishedBy); $reviewedRestaurants = $this->reviewRepository->getReviewsIdsOf($reviewedBy); $results = array_unique(array_merge($wishedRestaurants, $reviewedRestaurants)); } else { if ($reviewedBy) { $results = $this->reviewRepository->getReviewsIdsOf($reviewedBy); } else { if ($wishedBy) { $results = $this->wishRepository->getWishesIdsOf($wishedBy); } } } return $results; }