/** * Change Review status * @param Request $request * @param Review $review * @return \Symfony\Component\HttpFoundation\RedirectResponse */ public function changeStatusAction(Request $request, Review $review) { $em = $this->getDoctrine()->getManager(); $session = $request->getSession(); try { $status = $review->getStatus() ? 0 : 1; $review->setStatus($status); $em->persist($review); $em->flush(); $this->get('AccommodationService')->calculateReviewRate($review); $session->getFlashBag()->add('msgSuccess', $this->get('translator')->trans('change_status_success')); } catch (\Exception $e) { $session->getFlashBag()->add('msgError', $e->getMessage()); } return $this->redirect($this->generateUrl('admin_reviews')); }
/** * Create new Review * @param Request $request * @param Accommodation $accommodation * @return \Symfony\Component\HttpFoundation\RedirectResponse */ public function reviewAddAction(Request $request, Accommodation $accommodation) { $em = $this->getDoctrine()->getManager(); $session = $request->getSession(); $review = new Review(); $reviewForm = $this->createForm(new ReviewType()); $reviewForm->handleRequest($request); if ($reviewForm->isValid()) { $data = $reviewForm->getData(); $total = array($data->getCleanliness(), $data->getComfort(), $data->getLocation(), $data->getFacilities(), $data->getStaff(), $data->getValueForMoney()); # If review is active - depanding on rate $total = array_sum($total) / 6; $status = $total < 4 ? 0 : 1; $review->setTotal($total); $review->setAccommodation($accommodation); $review->setTourist($this->getUser()); $review->setText($data->getText()); $review->setCleanliness($data->getCleanliness()); $review->setComfort($data->getComfort()); $review->setLocation($data->getLocation()); $review->setFacilities($data->getFacilities()); $review->setStaff($data->getStaff()); $review->setValueForMoney($data->getValueForMoney()); $review->setStatus($status); $em->persist($review); $em->flush(); # Calculate total accommodation rate with new review if ($status) { $this->get('AccommodationService')->calculateReviewRate($review); } return $this->redirect($this->generateUrl('app_accommodation_single', array('id' => $accommodation->getId()))); } $session->getFlashBag()->add('reviewFormErrors', (string) $reviewForm->getErrors(true, false)); return $this->redirect($this->generateUrl('app_accommodation_single', array('id' => $accommodation->getId()))); }