diff --git a/src/Entity/JobOrder.php b/src/Entity/JobOrder.php index 947dd074..0278405a 100644 --- a/src/Entity/JobOrder.php +++ b/src/Entity/JobOrder.php @@ -408,6 +408,13 @@ class JobOrder */ protected $caller_classification; + // emergency type + /** + * @ORM\ManyToOne(targetEntity="EmergencyType", inversedBy="job_orders") + * @ORM\JoinColumn(name="emergency_type_id", referencedColumnName="id", nullable=true) + */ + protected $emergency_type; + public function __construct() { $this->date_create = new DateTime(); @@ -1164,4 +1171,15 @@ class JobOrder return $this->caller_classification; } + public function setEmergencyType(EmergencyType $emergency_type = null) + { + $this->emergency_type = $emergency_type; + return $this; + } + + public function getEmergencyType() + { + return $this->emergency_type; + } + } diff --git a/src/Service/JobOrderHandler/ResqJobOrderHandler.php b/src/Service/JobOrderHandler/ResqJobOrderHandler.php index 1adc6c0d..df4208e4 100644 --- a/src/Service/JobOrderHandler/ResqJobOrderHandler.php +++ b/src/Service/JobOrderHandler/ResqJobOrderHandler.php @@ -26,6 +26,7 @@ use App\Entity\JORejection; use App\Entity\Warranty; use App\Entity\Customer; use App\Entity\CustomerTag; +use App\Entity\EmergencyType; use App\Ramcar\InvoiceCriteria; use App\Ramcar\ServiceType; @@ -433,6 +434,10 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface // get caller classification if any $caller_class = $req->request->get('caller_class',''); + // get emergency type if any + $etype_id = $req->request->get('emergency_type', 0); + $etype = $em->getRepository(EmergencyType::class)->find($etype_id); + // TODO: check status before saving since JO might already // have a status that needs to be retained @@ -470,7 +475,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ->setInitialConcern($initial_concern) ->setInitialConcernNotes($initial_concern_notes) ->setCallerClassification($caller_class) - ->setGender($gender); + ->setGender($gender) + ->setEmergencyType($etype); // check if user is null, meaning call to create came from API if ($user != null) @@ -683,6 +689,10 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface // get caller classification if any $caller_class = $req->request->get('caller_class', ''); + // get emergency type if any + $etype_id = $req->request->get('emergency_type', 0); + $etype = $em->getRepository(EmergencyType::class)->find($etype_id); + if (empty($error_array)) { // get current user @@ -715,7 +725,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ->setInitialConcern($initial_concern) ->setInitialConcernNotes($initial_concern_notes) ->setCallerClassification($caller_class) - ->setGender($gender); + ->setGender($gender) + ->setEmergencyType($etype); // did they change invoice? $invoice_items = $req->request->get('invoice_items', []); @@ -879,6 +890,10 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface // get caller classification if any $caller_class = $req->request->get('caller_class', ''); + // get emergency type if any + $etype_id = $req->request->get('emergency_type', 0); + $etype = $em->getRepository(EmergencyType::class)->find($etype_id); + if (empty($error_array)) { // coordinates @@ -908,7 +923,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ->setInitialConcern($initial_concern) ->setInitialConcernNotes($initial_concern_notes) ->setGender($gender) - ->setCallerClassification($caller_class); + ->setCallerClassification($caller_class) + ->setEmergencyType($etype); // validate $errors = $this->validator->validate($obj); @@ -1018,6 +1034,10 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface // get caller classification if any $caller_class = $req->request->get('caller_class', ''); + // get emergency type if any + $etype_id = $req->request->get('emergency_type', 0); + $etype = $em->getRepository(EmergencyType::class)->find($etype_id); + // get current user $user = $this->security->getUser(); @@ -1049,7 +1069,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ->setInitialConcern($initial_concern) ->setInitialConcernNotes($initial_concern_notes) ->setCallerClassification($caller_class) - ->setGender($gender); + ->setGender($gender) + ->setEmergencyType($etype); if ($user != null) { @@ -1148,6 +1169,10 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface // get caller classification if any $caller_class = $req->request->get('caller_class', ''); + // get emergency type if any + $etype_id = $req->request->get('emergency_type', 0); + $etype = $em->getRepository(EmergencyType::class)->find($etype_id); + if (empty($error_array)) { // coordinates $point = new Point($req->request->get('coord_lng'), $req->request->get('coord_lat')); @@ -1173,7 +1198,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ->setInitialConcern($initial_concern) ->setInitialConcernNotes($initial_concern_notes) ->setGender($gender) - ->setCallerClassification($caller_class); + ->setCallerClassification($caller_class) + ->setEmergencyType($etype); // validate $errors = $this->validator->validate($obj); @@ -1392,6 +1418,10 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface // get caller classification if any $caller_class = $req->request->get('caller_class', ''); + // get emergency type if any + $etype_id = $req->request->get('emergency_type', 0); + $etype = $em->getRepository(EmergencyType::class)->find($etype_id); + // get previously assigned hub, if any $old_hub = $obj->getHub(); @@ -1448,6 +1478,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ->setInitialConcernNotes($initial_concern_notes) ->setGender($gender) ->setCallerClassification($caller_class) + ->setEmergencyType($etype) ->clearRider(); if ($user != null) @@ -1662,6 +1693,10 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface // get caller classification if any $caller_class = $req->request->get('caller_class', ''); + // get emergency type if any + $etype_id = $req->request->get('emergency_type', 0); + $etype = $em->getRepository(EmergencyType::class)->find($etype_id); + if (empty($error_array)) { // rider mqtt event // NOTE: need to send this before saving because rider will be cleared @@ -1712,7 +1747,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ->setInitialConcern($initial_concern) ->setInitialConcernNotes($initial_concern_notes) ->setGender($gender) - ->setCallerClassification($caller_class); + ->setCallerClassification($caller_class) + ->setEmergencyType($etype); if ($user != null) { @@ -3194,6 +3230,15 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface $params['bmfgs'] = $em->getRepository(BatteryManufacturer::class)->findAll(); $params['promos'] = $em->getRepository(Promo::class)->findAll(); + // list of emergency types + $e_types = $em->getRepository(EmergencyType::class)->findBy([], ['name' => 'ASC']); + $emergency_types = []; + foreach ($e_types as $e_type) + { + $emergency_types[$e_type->getID()] = $e_type->getName(); + } + $params['emergency_types'] = $emergency_types; + // list of hubs $hubs = $em->getRepository(Hub::class)->findBy([], ['name' => 'ASC']); $fac_hubs = []; diff --git a/templates/job-order/form.html.twig b/templates/job-order/form.html.twig index 841b9151..b98b27bf 100644 --- a/templates/job-order/form.html.twig +++ b/templates/job-order/form.html.twig @@ -375,7 +375,7 @@
-
+
-
+
-
+
+
+
+ + + +
+
- +
@@ -2053,6 +2069,19 @@ $(function() { // empty the reason text field $("#not-wait-notes").val(''); + + // remove selected option that might have already been selected + $("#emergency-type option:selected").prop("selected", false); + } + }); + + $("#no-wait-reason").change(function() { + var field_value = $(this).val(); + console.log(field_value); + if (field_value == 'emergency') { + $("#emergency-type").attr("disabled", false); + } else { + $("#emergency-type").attr("disabled", true); } }); });