/** * Delete unit * @param Request $request * @param $id * @return \Symfony\Component\HttpFoundation\RedirectResponse */ public function deleteAction(Request $request, Unit $unit) { $em = $this->getDoctrine()->getManager(); $session = $request->getSession(); # If user isn't owner -> 403 if ($this->getUser()->getId() != $unit->getAccommodation()->getUser()->getId()) { return $this->redirect($this->generateUrl('user_403')); } if (count($em->getRepository('AppBundle:Booking')->getBookingUnit($unit)) == 0) { $em->remove($unit); $em->flush(); $session->getFlashBag()->add('msgSuccess', $this->get('translator')->trans('delete_success')); } else { $session->getFlashBag()->add('msgError', $this->get('translator')->trans('unit_has_bookings')); } return $this->redirect($this->generateUrl('app_accommodation_edit', array('id' => $unit->getAccommodation()->getId()))); }
/** * Step4 - Unit Data * @param Request $request * @param Accommodation $accommodation * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response */ public function step4Action(Request $request, Accommodation $accommodation) { $em = $this->getDoctrine()->getManager(); $unit = new Unit(); $priceExtraRep = $em->getRepository('AppBundle:PriceExtra'); $priceExtra = $priceExtraRep->findAll(); if (!$this->get("accommodationService")->moreUnitAllowedSteps($accommodation)) { $request->getSession()->getFlashBag()->add('msgError', $this->get('translator')->trans('max_unit_exceeded')); return $this->redirect($this->generateUrl('app_profile_step_4a', array('id' => $accommodation->getId()))); } // price for form foreach ($unit->getUnitPriceExtra() as $pe) { if (!is_null($pe->getPrice())) { $newPrice = $this->get("currencyService")->fromEuro($pe->getPrice()); $pe->setPrice(round($newPrice, 2)); } } $form = $this->createForm(new UnitType(), $unit); $form->handleRequest($request); # All POST data $postData = $request->request->all(); if ($form->isValid()) { $unit->setAccommodation($accommodation); $unit->setBasicPrice($this->get("currencyService")->toEuro($postData['unit']['basicPrice'])); $em->persist($unit); $em->flush(); # Add price extra to join table with unit foreach ($postData['priceExtra'] as $priceExtra) { $unitPriceExtra = new UnitPriceExtra(); $pExtra = $priceExtraRep->find($priceExtra['priceExtraId']); $unitPriceExtra->setUnit($unit); $unitPriceExtra->setPriceExtra($pExtra); $price = $this->get("currencyService")->toEuro($priceExtra['price']); $unitPriceExtra->setPrice($price); $unitPriceExtra->setAvailability($priceExtra['availability']); $em->persist($unitPriceExtra); $em->flush(); } return $this->redirect($this->generateUrl('app_profile_step_4a', array('id' => $accommodation->getId()))); } return $this->render('AppBundle:Profile/Steps:step4.html.twig', array('form' => $form->createView(), 'unit' => $unit, 'currencies' => $this->get("currencyService")->getCurrencies(), 'priceExtra' => $priceExtra)); }