src/Controller/VehicleRtsActivitiesController.php line 66
<?php
namespace App\Controller;
use App\Entity\Activity;
use App\Service\VehicleRtsActivitiesService;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Attribute\IsGranted;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Contracts\Translation\TranslatorInterface;
use Doctrine\Persistence\ManagerRegistry;
/**
* Class VehicleRtsActivitiesController
*
* @package App\Controller
*
*/
#[Route('vehicleRtsActivities')]
#[IsGranted('ROLE_ADMIN')]
class VehicleRtsActivitiesController extends AbstractController
{
/**
* Lists all vehicleRtsActivity entities.
*
* @return \Symfony\Component\HttpFoundation\Response
*/
#[Route('/', name: 'vehiclertsactivities_index', methods:["GET"])]
public function indexAction(ManagerRegistry $doctrine)
{
$em = $doctrine->getManager();
$repository = $em->getRepository(Activity::class);
$query = $repository->createQueryBuilder('A');
$query->select('A');
$query->join('A.destination', 'D');
$vehicleRtsActivities = $query->getQuery()->getResult();
return $this->render('vehiclertsactivities/index.html.twig', ['vehicleRtsActivities' => $vehicleRtsActivities]);
}
/**
* Creates a new activity entity.
*
* @return \Symfony\Component\HttpFoundation\Response
*/
#[Route('/{vehicleId}/{requestId}/new', name: 'vehiclertsactivities_new', methods:["GET"])]
#[Route('/{vehicleId}/new', name: 'new_vehiclertsactivitiy', methods:["GET"])]
public function newAction(Request $request, TranslatorInterface $translator,VehicleRtsActivitiesService $vehicleRtsActivitiesService, $requestId = null)
{
$newRtsActivity = $vehicleRtsActivitiesService->newRtsActivity($requestId);
return $this->render('vehiclertsactivities/new.html.twig',$newRtsActivity );
}
/**
* Creates a new activity entity.
*
* @return \Symfony\Component\HttpFoundation\RedirectResponse
* @throws \Doctrine\DBAL\DBALException
*/
#[Route('/{vehicleId}/{requestId}/new', name: 'vehiclertsactivities_save', methods:["POST"])]
#[Route('/{vehicleId}/new', name: 'save_vehiclertsactivitiy', methods:["POST"])]
public function addNewAction(Request $request, $vehicleId, TranslatorInterface $translator,VehicleRtsActivitiesService $vehicleRtsActivitiesService, $requestId = null)
{
$addNewRtsActivity = $vehicleRtsActivitiesService->addNewRtsActivity($requestId,$vehicleId);
if ($addNewRtsActivity['result']=='success') {
return $this->redirectToRoute('revokerequests_index', array('vehicleId' => $vehicleId));
}else{
return $this->render('vehiclertsactivities/new.html.twig', $addNewRtsActivity['param']);
}
}
/**
* Displays a form to edit an existing vehicleRtsActivity entity.
*
* @return \Symfony\Component\HttpFoundation\Response
*/
#[Route('/{vehicleId}/{activityId}/edit', name: 'vehiclertsactivities_edit', methods:["GET"])]
public function editAction(Request $request, Activity $vehicleRtsActivity, $vehicleId,VehicleRtsActivitiesService $vehicleRtsActivitiesService)
{
$vehicleRtsActivity = $vehicleRtsActivitiesService->editRtsActivity($vehicleRtsActivity,$vehicleId);
return $this->render('vehiclertsactivities/edit.html.twig',$vehicleRtsActivity);
}
/**
* Save form edit of vehicleRtsActivity entity.
*
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
#[Route('/{vehicleId}/{activityId}/edit', name: 'vehiclertsactivities_update', methods:["POST", "PATCH"])]
public function updateAction(Request $request, Activity $vehicleRtsActivity, $vehicleId, TranslatorInterface $translator ,VehicleRtsActivitiesService $vehicleRtsActivitiesService )
{
$vehicleRtsActivity = $vehicleRtsActivitiesService->updateRtsActivity($vehicleRtsActivity,$vehicleId);
if($vehicleRtsActivity['result']=='updated'){
return $this->redirectToRoute('revokerequests_index', array('vehicleId' => $vehicleId));
}
return $this->render('vehiclertsactivities/edit.html.twig', $vehicleRtsActivity['param']);
}
/**
* Deletes a vehicleRtsActivity entity.
*
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
#[Route('/{activityId}', name: 'vehiclertsactivities_delete', methods:["DELETE"])]
public function deleteAction(Request $request, Activity $vehicleRtsActivity, ManagerRegistry $doctrine)
{
// get vehicle id from vehicle if there is a vehicle related with this activity otherwise get the vehicle from the revoke request.
if ($vehicleRtsActivity->getVehicle()) {
$vehicleId = $vehicleRtsActivity->getVehicle()->getVehicleId();
} elseif ($vehicleRtsActivity->getRevokeRequest()) {
$vehicleId = $vehicleRtsActivity->getRevokeRequest()->getVehicle()->getVehicleId();
}
$form = $this->createDeleteForm($vehicleRtsActivity);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $doctrine->getManager();
$em->remove($vehicleRtsActivity);
$em->flush();
}
return $this->redirectToRoute('revokerequests_index', array('vehicleId' => $vehicleId));
}
/**
* Creates a form to delete a vehicleRtsActivity entity.
*
* @param Activity $vehicleRtsActivity The vehicleRtsActivity entity
* @return \Symfony\Component\Form\Form|\Symfony\Component\Form\FormInterface
*/
private function createDeleteForm(Activity $vehicleRtsActivity)
{
return $this->createFormBuilder()
->setAction($this->generateUrl('vehiclertsactivities_delete', array('activityId' => $vehicleRtsActivity->getActivityid())))
->setMethod('DELETE')
->getForm()
;
}
/**
*
* @Route("/getCityWarehouses", name="get_warehouses_ajax")
* @return Response|JsonResponse json array warehouses under specific city.
*/
#[Route('/getCityWarehouses', name: 'get_warehouses_ajax')]
public function getCityWarehouses(Request $request,VehicleRtsActivitiesService $vehicleRtsActivitiesService)
{
if ($request->isXMLHttpRequest()) {
$cityID = $request->request->get('cityID');
return $vehicleRtsActivitiesService->getCityWarehouses($cityID);
}
return new Response('This is not ajax!', 400);
}
/**
* @return Response|JsonResponse json array drivers under specific transporter.
*/
#[Route('/getTransporterDrivers', name: 'get_drivers_ajax')]
public function getTransporterDrivers(Request $request ,VehicleRtsActivitiesService $vehicleRtsActivitiesService)
{
if ($request->isXMLHttpRequest()) {
$transporterID = $request->request->get('transporterID');
$locale = $request->getLocale();
// concat driver name based on site locale
if ($locale === 'en') {
$driverName = "CONCAT(COALESCE(UII.firstnameEn,''), ' ', COALESCE(UII.secondnameEn,''), ' ', COALESCE(UII.thirdnameEn,''), ' ', COALESCE(UII.fourthnameEn,'')) name";
} else {
$driverName = "CONCAT(COALESCE(UII.firstnameAr,''), ' ', COALESCE(UII.secondnameAr,''), ' ', COALESCE(UII.thirdnameAr,''), ' ', COALESCE(UII.fourthnameAr,'')) name";
}
return $vehicleRtsActivitiesService->getTransporterDrivers($driverName,$transporterID);
}
return new Response('This is not ajax!', 400);
}
}