src/Controller/ManageSalesRequestController.php line 63

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use App\Form\Filters\ManageSalesRequestsFilter;
  9. use App\Form\SalesRequestsForm;
  10. use App\Form\SalesRequestsStatusForm;
  11. use App\Form\EditSalesRequestsNoteForm;
  12. use App\Repository\SalesRequestsRepository;
  13. use App\Entity\SalesRequests;
  14. use App\Entity\SalesRequestsInterested;
  15. #[Route('/request/manage-sales-requests')]
  16. class ManageSalesRequestController extends AbstractController
  17. {
  18.     #[Route('/'defaults: ['page' => '1'], methods: ['GET'], name'manage_sales_request_index')]
  19.     #[Route('/page/{page<[1-9]\d*>}'methods: ['GET'], name'manage_sales_request_index_paginated')]
  20.     #[Cache(smaxage10)]
  21.     public function index(Request $request,int $page,EntityManagerInterface $entityManager,SalesRequestsRepository $salesRequestsRepository): Response
  22.     {
  23.         $params $request->query->all();
  24.         $filter = [];
  25.         $filterForm $this->createForm(ManageSalesRequestsFilter::class);
  26.         
  27.         if(isset($params['name'])) {
  28.             $filterForm['name']->setData($params['name']);
  29.             $filter['name'] = $params['name'];
  30.         }
  31.         if(isset($params['email'])) {
  32.             $filterForm['email']->setData($params['email']);
  33.             $filter['email'] = $params['email'];
  34.         }
  35.         if(isset($params['status'])) {
  36.             $filterForm['status']->setData($params['status']);
  37.             $filter['status'] = $params['status'];
  38.         }
  39.         if(isset($params['createdAt'])) {
  40.             $filterForm['createdAt']->setData($params['createdAt']);
  41.             $filter['createdAt'] = $params['createdAt'];
  42.         }
  43.         $data $salesRequestsRepository->adminPaginatorFetchAll($page$filter);
  44.         $totalInterested count($entityManager->getRepository(\App\Entity\SalesRequests::class)->findAll());
  45.         return $this->render('manage-sales-requests/index.html.twig', [
  46.             'paginator' => $data,
  47.             'filter' => $filter,
  48.             'totalInterested' => $totalInterested,
  49.             'form' => $filterForm->createView(),
  50.         ]);
  51.     }
  52.     #[Route('/add'name'add_sales_request'methods: ['GET''POST'])]
  53.     public function add(Request $request,EntityManagerInterface $entityManager){
  54.         $salesRequests = new SalesRequests();
  55.         $form $this->createForm(SalesRequestsForm::class, $salesRequests);
  56.         $form->handleRequest($request);
  57.         $redirectPage $request->query->get('redirect_page');
  58.         if ($form->isSubmitted() && $form->isValid()) {
  59.             $salesRequests->setCreatedAt(new \Datetime());
  60.             $entityManager->persist($salesRequests);
  61.             $entityManager->flush();
  62.             $this->addFlash('success''Created successfully.');
  63.             $redirectPage $request->request->get('redirect_page');
  64.             if($redirectPage){
  65.                 return $this->redirectToRoute('manage_sales_request_index_paginated', ['page'=> $redirectPage], Response::HTTP_SEE_OTHER);
  66.             }
  67.             return $this->redirectToRoute('manage_sales_request_index', [], Response::HTTP_SEE_OTHER);
  68.         }
  69.             
  70.         return $this->renderForm('manage-sales-requests/add.html.twig', [
  71.             'form' => $form,
  72.             'redirect_page' => $redirectPage
  73.         ]);
  74.     }
  75.     #[Route('/edit-status/{id}'name'edit_status_sales_request'methods: ['GET''POST'])]
  76.     public function editStatus($idRequest $requestSalesRequests $salesRequestsEntityManagerInterface $entityManager){
  77.         $redirectPage $request->query->get('redirect_page');
  78.         $form $this->createForm(SalesRequestsStatusForm::class, $salesRequests);
  79.         $form->handleRequest($request);
  80.         if ($form->isSubmitted()) {
  81.             $entityManager->persist($salesRequests);
  82.             $entityManager->flush();
  83.             $this->addFlash('success''Update successfully.');
  84.             $redirectPage $request->request->get('redirect_page');
  85.             if($redirectPage){
  86.                 return $this->redirectToRoute('manage_sales_request_index_paginated', ['page'=> $redirectPage], Response::HTTP_SEE_OTHER);
  87.             }
  88.             return $this->redirectToRoute('manage_sales_request_index', [], Response::HTTP_SEE_OTHER);
  89.        }
  90.         return $this->renderForm('manage-sales-requests/_form_status.html.twig', [
  91.             'form' => $form,
  92.             'id'=>$id,
  93.             'redirect_page' => $redirectPage
  94.         ]);
  95.     }
  96.     #[Route('/edit-note/{id}'name'edit_note_sales_request'methods: ['GET''POST'])]
  97.     public function editNote(Request $requestSalesRequests $salesRequestsEntityManagerInterface $entityManager){
  98.         $redirectPage $request->query->get('redirect_page');
  99.         $form $this->createForm(EditSalesRequestsNoteForm::class, $salesRequests);
  100.         $form->handleRequest($request);       
  101.         if ($form->isSubmitted() && $form->isValid()) {
  102.             $entityManager->persist($salesRequests);
  103.             $entityManager->flush();
  104.             $this->addFlash('success''Update successfully.');
  105.             $redirectPage $request->request->get('redirect_page');
  106.             if($redirectPage){
  107.                 return $this->redirectToRoute('manage_sales_request_index_paginated', ['page'=> $redirectPage], Response::HTTP_SEE_OTHER);
  108.             }
  109.             return $this->redirectToRoute('manage_sales_request_index', [], Response::HTTP_SEE_OTHER);
  110.         }
  111.         return $this->renderForm('manage-sales-requests/_form_note.html.twig', [
  112.             'form' => $form,
  113.             'salesRequests'=>$salesRequests,
  114.             'redirect_page' => $redirectPage
  115.         ]);
  116.     }
  117.     #[Route('/delete/{id}'name'delete_sales_request'methods: ['GET''POST'])]
  118.     public function delete(Request $request,  SalesRequests $salesRequestsEntityManagerInterface $entityManager){
  119.         $redirectPage $request->query->get('redirect_page');
  120.         if ($this->isCsrfTokenValid('delete'.$salesRequests->getRequestId(), $request->request->get('_token'))) {
  121.             $entityManager->remove($salesRequests);
  122.             $entityManager->flush();
  123.             $this->addFlash('error''Delete successfully.');
  124.             $redirectPage $request->request->get('redirect_page');
  125.             if($redirectPage){
  126.                 return $this->redirectToRoute('manage_sales_request_index_paginated', ['page'=> $redirectPage], Response::HTTP_SEE_OTHER);
  127.             }
  128.             return $this->redirectToRoute('manage_sales_request_index', [], Response::HTTP_SEE_OTHER);
  129.         }
  130.         return $this->renderForm('manage-sales-requests/_delete_form.html.twig', [
  131.             'salesRequests' => $salesRequests,
  132.             'redirect_page' => $redirectPage
  133.         ]);
  134.     }
  135.     #[Route('/view/{id}'name'sales_interest_view'methods: ['GET'])]
  136.     public function salesInterestedViewAction($id,EntityManagerInterface $entityManager): Response
  137.     {
  138.         $salesRequestsInterested $entityManager->getRepository(SalesRequestsInterested::class)->findOneBy(['requestId' => $id]);
  139.         return $this->render('manage-sales-requests/view.html.twig', [
  140.             'salesRequestsInterested' => $salesRequestsInterested,
  141.         ]);
  142.     }
  143. }