/**
  * Creates a Review object based on a DB row.
  *
  * @param array $row The DB row containing Review data.
  * @return \VeryGoodTrip\Domain\Review
  */
 protected function buildDomainObject($row)
 {
     $review = new Review();
     $review->setId($row['review_id']);
     $review->setContent($row['review_content']);
     $review->setRating($row['review_rating']);
     if (array_key_exists('review_id', $row)) {
         //Find and set the associated trip
         $tripId = $row['trip_id'];
         $trip = $this->tripDAO->find($tripId);
         $review->setTrip($trip);
     }
     if (array_key_exists('user_id', $row)) {
         // Find and set the associated author
         $userId = $row['user_id'];
         $user = $this->userDAO->find($userId);
         $review->setUser($user);
     }
     return $review;
 }
 /**
  * Trip details controller
  *
  * @param integer $id Trip id
  * @param Request $request Incoming request
  * @param Application $app Silex application
  * @return Application $app Silex application
  */
 public function tripAction($id, Request $request, Application $app)
 {
     $trip = $app['dao.trip']->find($id);
     $reviewFormView = null;
     if ($app['security.authorization_checker']->isGranted('IS_AUTHENTICATED_FULLY')) {
         // A user is fully authenticated : he can add comments
         $review = new Review();
         $review->setTrip($trip);
         $user = $app['user'];
         $review->setUser($user);
         $reviewForm = $app['form.factory']->create(new ReviewType(), $review);
         $reviewForm->handleRequest($request);
         if ($reviewForm->isSubmitted() && $reviewForm->isValid()) {
             $app['dao.review']->save($review);
             $app['session']->getFlashBag()->add('success', 'Your review was succesfully added.');
         }
         $reviewFormView = $reviewForm->createView();
     }
     $reviews = $app['dao.review']->findAllByTrip($id);
     return $app['twig']->render('trip.html.twig', array('trip' => $trip, 'reviews' => $reviews, 'reviewForm' => $reviewFormView));
 }