getForm($accommodationPrice, null); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $accommodation->addAccommodationPrice($accommodationPrice); $this->entityManager->persist($accommodationPrice); $this->entityManager->flush(); $this->addFlash('success', 'Der Preis wurde angelegt'); $this->logger->info('Created accommodation price', [ 'name' => $accommodation->getName(), 'code' => $accommodation->getCode(), 'date_range' => [ 'from' => $accommodationPrice->getDateFrom()->format('Y-m-d'), 'to' => $accommodationPrice->getDateTo()->format('Y-m-d'), ] ]); return $this->redirectToRoute('app_admin_accommodation_edit', [ 'id' => $accommodation->getId(), ]); } return $this->render('admin/accommodation_price/create.html.twig', [ 'accommodation' => $accommodation, 'form' => $form, ]); } #[Route('/admin/accommodation-price/{id}/edit', name: 'app_admin_accommodationprice_edit', defaults: ['duplicate' => false])] #[Route('/admin/accommodation-price/{id}/duplicate', name: 'app_admin_accommodationprice_duplicate', defaults: ['duplicate' => true])] public function edit(AccommodationPrice $accommodationPrice, bool $duplicate, Request $request): Response { $accommodation = $accommodationPrice->getAccommodation(); if (true === $duplicate) { $accommodationPrice = clone $accommodationPrice; } $form = $this->getForm($accommodationPrice, $accommodation); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { if (true === $duplicate) { $accommodation->addAccommodationPrice($accommodationPrice); } $this->entityManager->persist($accommodationPrice); $this->entityManager->flush(); $this->addFlash('success', 'Der Preis wurde aktualisiert'); $this->logger->info('Edited accommodation price', [ 'name' => $accommodation->getName(), 'code' => $accommodation->getCode(), 'date_range' => [ 'from' => $accommodationPrice->getDateFrom()->format('Y-m-d'), 'to' => $accommodationPrice->getDateTo()->format('Y-m-d'), ] ]); return $this->redirectToRoute('app_admin_accommodation_edit', [ 'id' => $accommodation->getId(), ]); } return $this->render('admin/accommodation_price/edit.html.twig', [ 'accommodation' => $accommodation, 'accommodationPrice' => $accommodationPrice, 'form' => $form, 'duplicate' => $duplicate, ]); } #[Route('/admin/accommodation-price/{id}/delete', name: 'app_admin_accommodationprice_delete')] public function delete(AccommodationPrice $accommodationPrice, Request $request): Response { $accommodation = $accommodationPrice->getAccommodation(); if (true === $request->isMethod(Request::METHOD_POST)) { $this->entityManager->remove($accommodationPrice); $this->entityManager->flush(); $this->addFlash('success', 'Der Preis wurde gelöscht'); $this->logger->info('Deleted accommodation price', [ 'name' => $accommodation->getName(), 'code' => $accommodation->getCode(), 'date_range' => [ 'from' => $accommodationPrice->getDateFrom()->format('Y-m-d'), 'to' => $accommodationPrice->getDateTo()->format('Y-m-d'), ] ]); $returnUrl = $this->generateUrl('app_admin_accommodation_edit', [ 'id' => $accommodation->getId(), ]); return new HxRedirectResponse($returnUrl); } return $this->render('admin/accommodation_price/modal_delete.html.twig', [ 'accommodationPrice' => $accommodationPrice, 'accommodation' => $accommodation, ]); } private function getForm(AccommodationPrice $accommodationPrice, ?Accommodation $accommodation): FormInterface { return $this->createForm(AccommodationPriceType::class, $accommodationPrice, ['currency' => $accommodation->getCurrency()]); } }