src/Controller/POS/HomeController.php line 22
<?phpnamespace App\Controller\POS;use App\Entity\Order;use App\Entity\Payment;use App\Entity\Pos;use App\Form\OrderType;use App\Repository\OrderRepository;use App\Repository\PosRepository;use App\Repository\ProductRepository;use App\Repository\SettingsRepository;use Doctrine\ORM\EntityManagerInterface;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;class HomeController extends AbstractController{#[Route('/', name: 'app_home')]public function home(): Response{return $this->redirectToRoute('app_pos_home');}#[Route("/search", name: "app_pos_home_search")]public function search(Request $request, OrderRepository $orderRepository){$order = $orderRepository->find($request->get("s"));if ($order) {return $this->redirectToRoute("app_pos_order_edit", ['id' => $order->getId()]);}return $this->redirectToRoute("app_pos_home");}#[Route('/pos/', name: 'app_pos_home')]public function index(Request $request,ProductRepository $productRepository,PosRepository $posRepository,EntityManagerInterface $entityManager): Response{$pos = $posRepository->getLastElement($this->getUser());// dd($pos);$oldCredit = 0;if ($pos == null || $pos->getDateEnd()) {return $this->redirectToRoute('app_pos_index');}$order = new Order();$payment = new Payment();$payment->setMode("Espéce");$payment->setAmount(0);$order->addPayment($payment);$order->setPos($pos);$form = $this->createForm(OrderType::class, $order);$form->handleRequest($request);if ($form->isSubmitted() && $form->isValid()) {$this->saveOrder($order, $pos, $entityManager);return $this->redirectToRoute("app_pos_order_show", ['id' => $order->getId(),]);}$products = $productRepository->findAll();$productsArray = [];foreach ($products as $product) {$productsArray[] = $product->getName();}return $this->render('pos/home/index.html.twig', ['form' => $form,'products' => $productsArray,'pos' => $pos,'order' => $order]);}#[Route('/pos/edit/{id}', name: 'app_pos_order_edit')]public function edit(Request $request, Order $order, ProductRepository $productRepository,PosRepository $posRepository,EntityManagerInterface $entityManager){$pos = $posRepository->getLastElement($this->getUser());$oldCredit = 0;if ($pos == null || $pos->getDateEnd()) {return $this->redirectToRoute('app_pos_index');}$form = $this->createForm(OrderType::class, $order);$form->handleRequest($request);if ($form->isSubmitted() && $form->isValid()) {$this->saveOrder($order, $pos, $entityManager, true);return $this->redirectToRoute("app_pos_order_show", ['id' => $order->getId(),]);}$products = $productRepository->findAll();$productsArray = [];foreach ($products as $product) {$productsArray[] = $product->getName();}return $this->render('pos/home/index.html.twig', ['form' => $form,'products' => $productsArray,'pos' => $pos,'order' => $order]);}#[Route('/pos/order/show/{id}', name: 'app_pos_order_show')]public function show(Order $order){return $this->render("pos/home/show.html.twig", ['order' => $order,'pos' => $order->getPos()]);}#[Route("/pos/order/ticket/{id}", name: "app_pos_order_ticket")]public function ticket(Order $order, SettingsRepository $settingRepository){return $this->render("pos/home/ticket.html.twig", ['order' => $order,'setting' => $settingRepository->findOneBy([])]);}private function saveOrder(Order $order,Pos $pos,EntityManagerInterface $entityManager,bool $isEdit = false){$orderLines = $order->getOrderLines();foreach ($orderLines as $orderLine) {if (!$orderLine->getPrixUnite()) {$order->removeOrderLine($orderLine);}}$customer = $order->getCustomer();if ($customer) {$payments = $order->getPayments();foreach ($payments as $payment) {if ($payment->getAmount()) {} else {$order->removePayment($payment);}}}$to = 0;foreach ($order->getPayments() as $py) {if ($py->getMode() == 'Espèce') {$to += $py->getAmount();}}$pos->setFinalAmount($pos->getFinalAmount() + $to);$entityManager->persist($pos);$entityManager->persist($order);$entityManager->flush();}}