src/Controller/VehicleRtsActivitiesController.php line 66

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Activity;
  4. use App\Service\VehicleRtsActivitiesService;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Symfony\Component\Security\Http\Attribute\IsGranted;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\JsonResponse;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Contracts\Translation\TranslatorInterface;
  11. use Doctrine\Persistence\ManagerRegistry;
  12. /**
  13.  * Class VehicleRtsActivitiesController
  14.  *
  15.  * @package App\Controller
  16.  *
  17.  */
  18. #[Route('vehicleRtsActivities')]
  19. #[IsGranted('ROLE_ADMIN')]
  20. class VehicleRtsActivitiesController extends AbstractController
  21. {
  22.     /**
  23.      * Lists all vehicleRtsActivity entities.
  24.      *
  25.      * @return \Symfony\Component\HttpFoundation\Response
  26.      */
  27.     #[Route('/'name'vehiclertsactivities_index'methods:["GET"])]
  28.     public function indexAction(ManagerRegistry $doctrine)
  29.     {
  30.         $em $doctrine->getManager();
  31.         
  32.         $repository $em->getRepository(Activity::class);
  33.         $query      $repository->createQueryBuilder('A');
  34.         $query->select('A');
  35.         $query->join('A.destination''D');
  36.         $vehicleRtsActivities $query->getQuery()->getResult();
  37.         return $this->render('vehiclertsactivities/index.html.twig', ['vehicleRtsActivities' => $vehicleRtsActivities]);
  38.     }
  39.     /**
  40.      * Creates a new activity entity.
  41.      *
  42.      * @return \Symfony\Component\HttpFoundation\Response
  43.      */
  44.     #[Route('/{vehicleId}/{requestId}/new'name'vehiclertsactivities_new'methods:["GET"])]
  45.     #[Route('/{vehicleId}/new'name'new_vehiclertsactivitiy'methods:["GET"])]
  46.     public function newAction(Request $requestTranslatorInterface $translator,VehicleRtsActivitiesService $vehicleRtsActivitiesService$requestId null)
  47.     {
  48.         $newRtsActivity $vehicleRtsActivitiesService->newRtsActivity($requestId);
  49.         return $this->render('vehiclertsactivities/new.html.twig',$newRtsActivity );
  50.     }
  51.     /**
  52.      * Creates a new activity entity.
  53.      *
  54.      * @return \Symfony\Component\HttpFoundation\RedirectResponse
  55.      * @throws \Doctrine\DBAL\DBALException
  56.      */
  57.     #[Route('/{vehicleId}/{requestId}/new'name'vehiclertsactivities_save'methods:["POST"])]
  58.     #[Route('/{vehicleId}/new'name'save_vehiclertsactivitiy'methods:["POST"])]
  59.     public function addNewAction(Request $request$vehicleIdTranslatorInterface $translator,VehicleRtsActivitiesService $vehicleRtsActivitiesService$requestId null)
  60.     {
  61.         $addNewRtsActivity $vehicleRtsActivitiesService->addNewRtsActivity($requestId,$vehicleId);
  62.         if ($addNewRtsActivity['result']=='success') {
  63.             return $this->redirectToRoute('revokerequests_index', array('vehicleId' => $vehicleId));
  64.         }else{
  65.             return $this->render('vehiclertsactivities/new.html.twig'$addNewRtsActivity['param']);
  66.         }
  67.     }
  68.     /**
  69.      * Displays a form to edit an existing vehicleRtsActivity entity.
  70.      *
  71.      * @return \Symfony\Component\HttpFoundation\Response
  72.      */
  73.     #[Route('/{vehicleId}/{activityId}/edit'name'vehiclertsactivities_edit'methods:["GET"])]
  74.     public function editAction(Request $requestActivity $vehicleRtsActivity$vehicleId,VehicleRtsActivitiesService $vehicleRtsActivitiesService)
  75.     {
  76.        $vehicleRtsActivity $vehicleRtsActivitiesService->editRtsActivity($vehicleRtsActivity,$vehicleId);
  77.        return $this->render('vehiclertsactivities/edit.html.twig',$vehicleRtsActivity);
  78.     }
  79.     /**
  80.      * Save form edit of vehicleRtsActivity entity.
  81.      *
  82.      * @return \Symfony\Component\HttpFoundation\RedirectResponse
  83.      */
  84.     #[Route('/{vehicleId}/{activityId}/edit'name'vehiclertsactivities_update'methods:["POST""PATCH"])]
  85.     public function updateAction(Request $requestActivity $vehicleRtsActivity$vehicleIdTranslatorInterface $translator ,VehicleRtsActivitiesService $vehicleRtsActivitiesService )
  86.     {
  87.         $vehicleRtsActivity $vehicleRtsActivitiesService->updateRtsActivity($vehicleRtsActivity,$vehicleId);
  88.         if($vehicleRtsActivity['result']=='updated'){
  89.             return $this->redirectToRoute('revokerequests_index', array('vehicleId' => $vehicleId));
  90.         }
  91.         return $this->render('vehiclertsactivities/edit.html.twig'$vehicleRtsActivity['param']);
  92.     }
  93.     /**
  94.      * Deletes a vehicleRtsActivity entity.
  95.      *
  96.      * @return \Symfony\Component\HttpFoundation\RedirectResponse
  97.      */
  98.     #[Route('/{activityId}'name'vehiclertsactivities_delete'methods:["DELETE"])]
  99.     public function deleteAction(Request $requestActivity $vehicleRtsActivityManagerRegistry $doctrine)
  100.     {
  101.         // get vehicle id from vehicle if there is a vehicle related with this activity otherwise get the vehicle from the revoke request.
  102.         if ($vehicleRtsActivity->getVehicle()) {
  103.             $vehicleId $vehicleRtsActivity->getVehicle()->getVehicleId();
  104.         } elseif ($vehicleRtsActivity->getRevokeRequest()) {
  105.             $vehicleId $vehicleRtsActivity->getRevokeRequest()->getVehicle()->getVehicleId();
  106.         }
  107.         
  108.         $form $this->createDeleteForm($vehicleRtsActivity);
  109.         $form->handleRequest($request);
  110.         if ($form->isSubmitted() && $form->isValid()) {
  111.             $em $doctrine->getManager();
  112.             $em->remove($vehicleRtsActivity);
  113.             $em->flush();
  114.         }
  115.         return $this->redirectToRoute('revokerequests_index', array('vehicleId' => $vehicleId));
  116.     }
  117.     /**
  118.      * Creates a form to delete a vehicleRtsActivity entity.
  119.      *
  120.      * @param Activity $vehicleRtsActivity The vehicleRtsActivity entity
  121.      * @return \Symfony\Component\Form\Form|\Symfony\Component\Form\FormInterface
  122.      */
  123.     private function createDeleteForm(Activity $vehicleRtsActivity)
  124.     {
  125.         return $this->createFormBuilder()
  126.             ->setAction($this->generateUrl('vehiclertsactivities_delete', array('activityId' => $vehicleRtsActivity->getActivityid())))
  127.             ->setMethod('DELETE')
  128.             ->getForm()
  129.         ;
  130.     }
  131.     /**
  132.      *
  133.      * @Route("/getCityWarehouses", name="get_warehouses_ajax")
  134.      * @return Response|JsonResponse json array warehouses under specific city.
  135.      */
  136.     #[Route('/getCityWarehouses'name'get_warehouses_ajax')]
  137.     public function getCityWarehouses(Request $request,VehicleRtsActivitiesService $vehicleRtsActivitiesService)
  138.     {
  139.         if ($request->isXMLHttpRequest()) {
  140.             $cityID $request->request->get('cityID');
  141.             return $vehicleRtsActivitiesService->getCityWarehouses($cityID);
  142.         }
  143.         return new Response('This is not ajax!'400);
  144.     }
  145.     /**
  146.      * @return Response|JsonResponse json array drivers under specific transporter.
  147.      */
  148.     #[Route('/getTransporterDrivers'name'get_drivers_ajax')]
  149.     public function getTransporterDrivers(Request $request ,VehicleRtsActivitiesService  $vehicleRtsActivitiesService)
  150.     {
  151.         if ($request->isXMLHttpRequest()) {
  152.             $transporterID $request->request->get('transporterID');
  153.             $locale        $request->getLocale();
  154.             // concat driver name based on site locale
  155.             if ($locale === 'en') {
  156.                 $driverName "CONCAT(COALESCE(UII.firstnameEn,''), ' ', COALESCE(UII.secondnameEn,''), ' ', COALESCE(UII.thirdnameEn,''), ' ', COALESCE(UII.fourthnameEn,'')) name";
  157.             } else {
  158.                 $driverName "CONCAT(COALESCE(UII.firstnameAr,''), ' ', COALESCE(UII.secondnameAr,''), ' ', COALESCE(UII.thirdnameAr,''), ' ', COALESCE(UII.fourthnameAr,'')) name";
  159.             }
  160.             return $vehicleRtsActivitiesService->getTransporterDrivers($driverName,$transporterID);
  161.         }
  162.         return new Response('This is not ajax!'400);
  163.     }
  164. }