Ejemplo n.º 1
0
 /**
  * Edit Accommodation
  * @param Request $request
  * @param $id
  * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  */
 public function editAction(Request $request, Accommodation $accommodation)
 {
     $em = $this->getDoctrine()->getManager();
     $session = $request->getSession();
     $gallery = new Gallery();
     # If user isn't owner -> 403
     if ($this->getUser()->getId() != $accommodation->getUser()->getId()) {
         return $this->redirect($this->generateUrl('user_403'));
     }
     # Units of this accommodation
     $units = $em->getRepository('AppBundle:Unit')->getUnitsAccommodation($accommodation->getId());
     $countries = $em->getRepository('AppBundle:Country')->findAll();
     $regions = $em->getRepository('AppBundle:Region')->getByCountry($accommodation->getCity()->getRegion()->getCountry()->getId());
     $subregions = $em->getRepository('AppBundle:Subregion')->getByRegion($accommodation->getCity()->getRegion()->getId());
     if ($accommodation->getCity()->getSubregion()) {
         $cities = $em->getRepository('AppBundle:City')->getBySubregion($accommodation->getCity()->getSubregion()->getId());
     } else {
         $cities = $em->getRepository('AppBundle:City')->getByRegion($accommodation->getCity()->getRegion()->getId());
     }
     // price for form
     if (!is_null($accommodation->getWifi())) {
         $newPrice = $this->get("currencyService")->fromEuro($accommodation->getWifi());
         $accommodation->setWifi(round($newPrice, 2));
     }
     $form = $this->createForm(new AccommodationType($request->getLocale()), $accommodation);
     $formGallery = $this->createForm(new GalleryType(), $gallery);
     $formVideo = $this->createForm(new VideoType());
     if (!is_null($request->request->get('accommodation')) && (!isset($request->request->get('accommodation')['city']) || $request->request->get('accommodation')['city'] == '')) {
         $session->getFlashBag()->add('msgError', $this->get('translator')->trans('city_should_not_be_blank'));
         return $this->redirect($this->generateUrl('app_accommodation_edit', array('id' => $accommodation->getId())));
     }
     $cityPost = $request->request->get('accommodation')['city'];
     $reqAccommodation = $request->request->get('accommodation');
     unset($reqAccommodation['city']);
     $request->request->set('accommodation', $reqAccommodation);
     $form->handleRequest($request);
     if ($form->isValid()) {
         # All POST data
         $postData = $request->request->all();
         //            echo'<pre>';
         //            exit(\Doctrine\Common\Util\Debug::dump(intval($postData['wifi'])));
         //            echo'</pre>';
         if (intval($postData['wifi']) == 0) {
             $accommodation->setWifi(null);
         } else {
             $accommodation->setWifi($this->get("currencyService")->toEuro($postData['accommodation']['wifi']));
         }
         $city = $em->getRepository('AppBundle:City')->find($cityPost);
         $accommodation->setCity($city);
         $em->persist($accommodation);
         $em->flush();
         $session->getFlashBag()->add('msgSuccess', $this->get('translator')->trans('edit_success'));
         return $this->redirect($this->generateUrl('app_accommodation_edit', array('id' => $accommodation->getId())));
     }
     //        echo'<pre>';
     //        exit(\Doctrine\Common\Util\Debug::dump($accommodation->getWifi()));
     //        echo'</pre>';
     return $this->render('AppBundle:Accommodation:edit.html.twig', array('form' => $form->createView(), 'formGallery' => $formGallery->createView(), 'formVideo' => $formVideo->createView(), 'accommodation' => $accommodation, 'units' => $units, 'countries' => $countries, 'regions' => $regions, 'subregions' => $subregions, 'cities' => $cities));
 }