isClosed()) { return $this->redirectToRoute('app_food_order_show', [ 'id' => $foodOrder->getId(), ], Response::HTTP_SEE_OTHER); } $orderItem = new OrderItem; $username = $request->cookies->get('username', 'nobody'); $orderItem->setCreatedBy($username); $form = $this->createForm(OrderItemType::class, $orderItem); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $menuItem = $menuItemRepository->findOneBy([ 'name' => $orderItem->getName(), 'foodVendor' => $foodOrder->getFoodVendor(), ]); if ($menuItem === null) { $menuItem = new MenuItem; $menuItem->setName($orderItem->getName()); $menuItem->setFoodVendor($foodOrder->getFoodVendor()); $entityManager->persist($menuItem); } $orderItem->setMenuItem($menuItem); $orderItem->setFoodOrder($foodOrder); $entityManager->persist($orderItem); $entityManager->flush(); return $this->redirectToRoute('app_food_order_show', [ 'id' => $foodOrder->getId(), ], Response::HTTP_SEE_OTHER); } $menuItems = $menuItemRepository->findBy([ 'foodVendor' => $foodOrder->getFoodVendor(), 'deletedAt' => null, ]); return $this->render('order_item/new.html.twig', [ 'order_item' => $orderItem, 'food_order' => $foodOrder, 'form' => $form, 'menuItems' => $menuItems, ]); } #[Route('/{id}/copy', name: 'app_order_item_copy', methods: ['GET'])] public function copy(OrderItem $orderItem, EntityManagerInterface $entityManager): Response { $foodOrder = $orderItem->getFoodOrder(); if ($foodOrder->isClosed()) { return $this->redirectToRoute('app_food_order_show', [ 'id' => $foodOrder->getId(), ], Response::HTTP_SEE_OTHER); } $newOrderItem = new OrderItem; $newOrderItem->setFoodOrder($orderItem->getFoodOrder()); $newOrderItem->setName($orderItem->getName()); $newOrderItem->setExtras($orderItem->getExtras()); $newOrderItem->setMenuItem($orderItem->getMenuItem()); $entityManager->persist($newOrderItem); $entityManager->flush(); return $this->redirectToRoute('app_food_order_show', [ 'id' => $orderItem->getFoodOrder() ->getId(), ], Response::HTTP_SEE_OTHER); } #[Route('/{id}/edit', name: 'app_order_item_edit', methods: ['GET', 'POST'])] public function edit( Request $request, OrderItem $orderItem, EntityManagerInterface $entityManager, MenuItemRepository $menuItemRepository, ): Response { $foodOrder = $orderItem->getFoodOrder(); if ($foodOrder->isClosed()) { return $this->redirectToRoute('app_food_order_show', [ 'id' => $foodOrder->getId(), ], Response::HTTP_SEE_OTHER); } $orderItem->setName($orderItem->getMenuItem()->getName()); $form = $this->createForm(OrderItemType::class, $orderItem); $form->setData($orderItem); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $menuItem = $menuItemRepository->findOneBy([ 'name' => $orderItem->getName(), 'foodVendor' => $foodOrder->getFoodVendor(), ]); if ($menuItem === null) { $menuItem = new MenuItem; $menuItem->setName($orderItem->getName()); $menuItem->setFoodVendor($foodOrder->getFoodVendor()); $entityManager->persist($menuItem); } $orderItem->setMenuItem($menuItem); $orderItem->setFoodOrder($foodOrder); $entityManager->persist($orderItem); $entityManager->flush(); return $this->redirectToRoute('app_food_order_show', [ 'id' => $orderItem->getFoodOrder() ->getId(), ], Response::HTTP_SEE_OTHER); } return $this->render('order_item/edit.html.twig', [ 'order_item' => $orderItem, 'form' => $form, ]); } #[Route('/delete/{id}', name: 'app_order_item_delete')] public function delete(OrderItem $orderItem, EntityManagerInterface $entityManager): Response { $foodOrder = $orderItem->getFoodOrder(); if ($foodOrder->isClosed()) { return $this->redirectToRoute('app_food_order_show', [ 'id' => $foodOrder->getId(), ], Response::HTTP_SEE_OTHER); } $entityManager->remove($orderItem); $entityManager->flush(); return $this->redirectToRoute('app_food_order_show', [ 'id' => $orderItem->getFoodOrder() ->getId(), ], Response::HTTP_SEE_OTHER); } }