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' %}
-
+

Nearest Hubs @@ -421,8 +421,12 @@

+
+
+
+
+
-
{% endif %} {% if mode in ['update-assigning', 'update-fulfillment'] %} @@ -473,7 +477,7 @@
{% if mode == 'update-assigning' %} -
+

Rider Assignment @@ -525,7 +529,7 @@ {% endif %} {% if mode == 'update-fulfillment' %} -
+

Rider Details @@ -565,6 +569,28 @@ {% endif %} {% endif %} + {% if mode != 'create' %} +
+ +
+
+

+ Tickets +

+
+
+
+
+
+
+
+ +
+
+ {% endif %} +

@@ -1070,7 +1096,7 @@ $(function() { selectedHub = id; // center the map - omap.setCenter(lat, lng); + hmap.setCenter(lat, lng); } else { // unhighlight this row $(this).removeClass('m-table__row--primary'); @@ -1104,6 +1130,76 @@ $(function() { } }); {% endif %} + + {% if mode != 'create' %} + var ticketRows = []; + + {% for ticket in obj.getTickets %} + trow = { + id: "{{ ticket.getID }}", + date_create: "{{ ticket.getDateCreate|date('d M Y - h:i A') }}", + subject: "{{ ticket.getSubject }}", + ticket_type: "{{ ticket.getTicketTypeText }}", + status: "{{ ticket.getStatusText }}", + edit_url: "{{ url('ticket_update', {'id': ticket.getID}) }}" + }; + + ticketRows.push(trow); + {% endfor %} + + // tickets data table + var ticketOptions = { + data: { + type: 'local', + source: ticketRows, + saveState: { + cookie: false, + webstorage: false + } + }, + layout: { + scroll: true + }, + columns: [ + { + field: 'id', + title: 'ID', + width: 30 + }, + { + field: 'date_create', + title: 'Date Created', + width: 200 + }, + { + field: 'subject', + title: 'Subject', + width: 300 + }, + { + field: 'ticket_type', + title: 'Ticket Type' + }, + { + field: 'status', + title: 'Status' + }, + { + field: 'Actions', + width: 70, + title: 'Actions', + sortable: false, + overflow: 'visible', + template: function (row, index, datatable) { + return ''; + }, + } + ], + pagination: false + }; + + var ticketTable = $("#data-tickets").mDatatable(ticketOptions); + {% endif %} }); {% endblock %} diff --git a/templates/ticket/form.html.twig b/templates/ticket/form.html.twig index 61d16890..e7bcee69 100644 --- a/templates/ticket/form.html.twig +++ b/templates/ticket/form.html.twig @@ -35,7 +35,7 @@
-
+
@@ -107,6 +107,21 @@
+
+
+ + + +
+ {% if job_order %} +
+ + +
+ {% endif %} +