diff --git a/config/routes/ticket.yaml b/config/routes/ticket.yaml index a1d6bdff..6e4d5343 100644 --- a/config/routes/ticket.yaml +++ b/config/routes/ticket.yaml @@ -10,18 +10,20 @@ ticket_rows: methods: [POST] ticket_create: - path: /tickets/create/{customer_id} + path: /tickets/create/{customer_id}/{job_order_id} controller: App\Controller\TicketController::addForm methods: [GET] defaults: customer_id: false + job_order_id: false ticket_create_submit: - path: /tickets/create/{customer_id} + path: /tickets/create/{customer_id}/{job_order_id} controller: App\Controller\TicketController::addSubmit methods: [POST] defaults: customer_id: false + job_order_id: false ticket_update: path: /tickets/{id} diff --git a/src/Controller/TicketController.php b/src/Controller/TicketController.php index af5b1e60..f8a2d3e0 100644 --- a/src/Controller/TicketController.php +++ b/src/Controller/TicketController.php @@ -7,6 +7,7 @@ use App\Ramcar\TicketType; use App\Ramcar\TicketStatus; use App\Entity\Ticket; use App\Entity\Customer; +use App\Entity\JobOrder; use Doctrine\ORM\Query; use Symfony\Component\HttpFoundation\Request; @@ -123,7 +124,7 @@ class TicketController extends BaseController ]); } - public function addForm(Request $req, $customer_id) + public function addForm(Request $req, $customer_id, $job_order_id) { $this->denyAccessUnlessGranted('ticket.add', null, 'No access.'); @@ -131,6 +132,7 @@ class TicketController extends BaseController $params['obj'] = new Ticket(); $params['mode'] = 'create'; $params['customer'] = false; + $params['job_order'] = false; $customer = false; // get customer data @@ -144,6 +146,18 @@ class TicketController extends BaseController // add to view $params['customer'] = $customer; + + // get job order data + if ($job_order_id) { + $job_order = $em->getRepository(JobOrder::class)->find($job_order_id); + + // make sure this row exists + if (empty($job_order)) + throw $this->createNotFoundException('This job order does not exist'); + + // add to view + $params['job_order'] = $job_order; + } } // get parent associations @@ -160,13 +174,21 @@ class TicketController extends BaseController if ($referer == $cust_update_url) $params['redirect_url'] = $cust_update_url; + + if ($job_order) + { + $job_order_url = $this->generateUrl('jo_proc_form', ['id' => $job_order->getID()], UrlGeneratorInterface::ABSOLUTE_URL); + + if ($referer == $job_order_url) + $params['redirect_url'] = $job_order_url; + } } // response return $this->render('ticket/form.html.twig', $params); } - public function addSubmit(Request $req, ValidatorInterface $validator, $customer_id) + public function addSubmit(Request $req, ValidatorInterface $validator, $customer_id, $job_order_id) { $this->denyAccessUnlessGranted('ticket.add', null, 'No access.'); @@ -190,6 +212,15 @@ class TicketController extends BaseController if (count($mobile_numbers) > 0) { $contact_num = $mobile_numbers[0]->getID(); } + + // get job order data + if ($job_order_id) { + $job_order = $em->getRepository(JobOrder::class)->find($job_order_id); + + // make sure this row exists + if (empty($job_order)) + throw $this->createNotFoundException('This job order does not exist'); + } } else { // get values directly from form $first_name = $req->request->get('first_name'); @@ -226,6 +257,11 @@ class TicketController extends BaseController $obj->setCustomer($customer); } + // if linked to job order, set association + if ($job_order_id) { + $obj->setJobOrder($job_order); + } + // initialize error list $error_array = []; @@ -279,9 +315,11 @@ class TicketController extends BaseController $em = $this->getDoctrine()->getManager(); $customer = $obj->getCustomer(); + $job_order = $obj->getJobOrder(); // get parent associations $params['customer'] = $customer; + $params['job_order'] = $job_order; $params['ticket_types'] = TicketType::getCollection(); $params['statuses'] = TicketStatus::getCollection(); $params['other_ticket_type'] = TicketType::OTHER; diff --git a/templates/job-order/form.html.twig b/templates/job-order/form.html.twig index a651990a..d395a52b 100644 --- a/templates/job-order/form.html.twig +++ b/templates/job-order/form.html.twig @@ -376,7 +376,7 @@ {% if mode == 'update-processing' %}
-