Exemplo n.º 1
0
 /**
  * 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())));
 }