diff --git a/src/Entity/JobOrder.php b/src/Entity/JobOrder.php index fb8bb5f1..947dd074 100644 --- a/src/Entity/JobOrder.php +++ b/src/Entity/JobOrder.php @@ -396,6 +396,18 @@ class JobOrder */ protected $initial_concern_notes; + // gender of caller + /** + * @ORM\Column(type="string", length=80, nullable=true) + */ + protected $gender; + + // caller classification of caller + /** + * @ORM\Column(type="string", length=80, nullable=true) + */ + protected $caller_classification; + public function __construct() { $this->date_create = new DateTime(); @@ -1129,4 +1141,27 @@ class JobOrder { return $this->initial_concern_notes; } + + public function setGender($gender) + { + $this->gender = $gender; + return $this; + } + + public function getGender() + { + return $this->gender; + } + + public function setCallerClassification($caller_classification) + { + $this->caller_classification = $caller_classification; + return $this; + } + + public function getCallerClassification() + { + return $this->caller_classification; + } + } diff --git a/src/Ramcar/CallerClassification.php b/src/Ramcar/CallerClassification.php new file mode 100644 index 00000000..be13467a --- /dev/null +++ b/src/Ramcar/CallerClassification.php @@ -0,0 +1,18 @@ + 'Owner', + 'driver' => 'Driver', + 'family' => 'Family', + 'friends' => 'Friends', + ]; +} diff --git a/src/Ramcar/Gender.php b/src/Ramcar/Gender.php new file mode 100644 index 00000000..71d53a0c --- /dev/null +++ b/src/Ramcar/Gender.php @@ -0,0 +1,16 @@ + 'Male', + 'female' => 'Female', + 'unknown' => 'Unknown', + ]; +} diff --git a/src/Service/JobOrderHandler/ResqJobOrderHandler.php b/src/Service/JobOrderHandler/ResqJobOrderHandler.php index 4e3148be..1adc6c0d 100644 --- a/src/Service/JobOrderHandler/ResqJobOrderHandler.php +++ b/src/Service/JobOrderHandler/ResqJobOrderHandler.php @@ -47,6 +47,8 @@ use App\Ramcar\DeliveryStatus; use App\Ramcar\SourceOfAwareness; use App\Ramcar\InitialConcern; use App\Ramcar\CustomerClassification; +use App\Ramcar\Gender; +use App\Ramcar\CallerClassification; use App\Service\InvoiceGeneratorInterface; use App\Service\JobOrderHandlerInterface; @@ -414,17 +416,23 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface } // get source of awareness if any - $soa_type = $req->request->get('source_of_awareness'); + $soa_type = $req->request->get('source_of_awareness', ''); // get remarks $remarks = $req->request->get('remarks', ''); // get initial concern if any - $initial_concern = $req->request->get('initial_concern'); + $initial_concern = $req->request->get('initial_concern', ''); // get initial concern notes if any $initial_concern_notes = $req->request->get('initial_concern_notes', ''); + // get gender if any + $gender = $req->request->get('gender', ''); + + // get caller classification if any + $caller_class = $req->request->get('caller_class',''); + // TODO: check status before saving since JO might already // have a status that needs to be retained @@ -460,7 +468,9 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ->setSourceOfAwareness($soa_type) ->setRemarks($remarks) ->setInitialConcern($initial_concern) - ->setInitialConcernNotes($initial_concern_notes); + ->setInitialConcernNotes($initial_concern_notes) + ->setCallerClassification($caller_class) + ->setGender($gender); // check if user is null, meaning call to create came from API if ($user != null) @@ -656,17 +666,23 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface } // get source of awareness if any - $soa_type = $req->request->get('source_of_awareness'); + $soa_type = $req->request->get('source_of_awareness', ''); // get remarks $remarks = $req->request->get('remarks', ''); // get initial concern if any - $initial_concern = $req->request->get('initial_concern'); + $initial_concern = $req->request->get('initial_concern', ''); // get initial concern notes if any $initial_concern_notes = $req->request->get('initial_concern_notes', ''); + // get gender if any + $gender = $req->request->get('gender', ''); + + // get caller classification if any + $caller_class = $req->request->get('caller_class', ''); + if (empty($error_array)) { // get current user @@ -697,7 +713,9 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ->setSourceOfAwareness($soa_type) ->setRemarks($remarks) ->setInitialConcern($initial_concern) - ->setInitialConcernNotes($initial_concern_notes); + ->setInitialConcernNotes($initial_concern_notes) + ->setCallerClassification($caller_class) + ->setGender($gender); // did they change invoice? $invoice_items = $req->request->get('invoice_items', []); @@ -844,17 +862,23 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface } // get source of awareness if any - $soa_type = $req->request->get('source_of_awareness'); + $soa_type = $req->request->get('source_of_awareness', ''); // get remarks $remarks = $req->request->get('remarks', ''); // get initial concern if any - $initial_concern = $req->request->get('initial_concern'); + $initial_concern = $req->request->get('initial_concern', ''); // get initial concern notes if any $initial_concern_notes = $req->request->get('initial_concern_notes', ''); + // get gender if any + $gender = $req->request->get('gender', ''); + + // get caller classification if any + $caller_class = $req->request->get('caller_class', ''); + if (empty($error_array)) { // coordinates @@ -882,7 +906,9 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ->setSourceOfAwareness($soa_type) ->setRemarks($remarks) ->setInitialConcern($initial_concern) - ->setInitialConcernNotes($initial_concern_notes); + ->setInitialConcernNotes($initial_concern_notes) + ->setGender($gender) + ->setCallerClassification($caller_class); // validate $errors = $this->validator->validate($obj); @@ -975,17 +1001,23 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface } // get source of awareness if any - $soa_type = $req->request->get('source_of_awareness'); + $soa_type = $req->request->get('source_of_awareness', ''); // get remarks $remarks = $req->request->get('remarks', ''); // get initial concern if any - $initial_concern = $req->request->get('initial_concern'); + $initial_concern = $req->request->get('initial_concern', ''); // get initial concern notes if any $initial_concern_notes = $req->request->get('initial_concern_notes', ''); + // get gender if any + $gender = $req->request->get('gender', ''); + + // get caller classification if any + $caller_class = $req->request->get('caller_class', ''); + // get current user $user = $this->security->getUser(); @@ -1015,7 +1047,9 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ->setSourceOfAwareness($soa_type) ->setRemarks($remarks) ->setInitialConcern($initial_concern) - ->setInitialConcernNotes($initial_concern_notes); + ->setInitialConcernNotes($initial_concern_notes) + ->setCallerClassification($caller_class) + ->setGender($gender); if ($user != null) { @@ -1097,17 +1131,23 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface } // get source of awareness if any - $soa_type = $req->request->get('source_of_awareness'); + $soa_type = $req->request->get('source_of_awareness', ''); // get remarks $remarks = $req->request->get('remarks', ''); // get initial concern if any - $initial_concern = $req->request->get('initial_concern'); + $initial_concern = $req->request->get('initial_concern', ''); // get initial concern notes if any $initial_concern_notes = $req->request->get('initial_concern_notes', ''); + // get gender if any + $gender = $req->request->get('gender', ''); + + // get caller classification if any + $caller_class = $req->request->get('caller_class', ''); + if (empty($error_array)) { // coordinates $point = new Point($req->request->get('coord_lng'), $req->request->get('coord_lat')); @@ -1131,7 +1171,9 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ->setSourceOfAwareness($soa_type) ->setRemarks($remarks) ->setInitialConcern($initial_concern) - ->setInitialConcernNotes($initial_concern_notes); + ->setInitialConcernNotes($initial_concern_notes) + ->setGender($gender) + ->setCallerClassification($caller_class); // validate $errors = $this->validator->validate($obj); @@ -1333,20 +1375,29 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface } // get source of awareness if any - $soa_type = $req->request->get('source_of_awareness'); + $soa_type = $req->request->get('source_of_awareness', ''); // get remarks $remarks = $req->request->get('remarks', ''); // get initial concern if any - $initial_concern = $req->request->get('initial_concern'); + $initial_concern = $req->request->get('initial_concern', ''); // get initial concern notes if any $initial_concern_notes = $req->request->get('initial_concern_notes', ''); + // get gender if any + $gender = $req->request->get('gender', ''); + + // get caller classification if any + $caller_class = $req->request->get('caller_class', ''); + // get previously assigned hub, if any $old_hub = $obj->getHub(); + // get previously assigned rider, if any + $old_rider = $obj->getRider(); + if (empty($error_array)) { // rider mqtt event @@ -1358,6 +1409,19 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ]; $mclient->sendRiderEvent($obj, $rider_payload); + // need to unset first rider's current job order + $old_rider = $obj->getRider(); + if ($old_rider != null) + { + if (($old_rider->getCurrentJobOrder() != null) && + ($old_rider->getCurrentJobOrder()->getID() == $obj->getID())) + { + $old_rider->setCurrentJobOrder(); + // set available flag for first rider + $old_rider->setAvailable(true); + } + } + // coordinates $point = new Point($req->request->get('coord_lng'), $req->request->get('coord_lat')); @@ -1382,6 +1446,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ->setRemarks($remarks) ->setInitialConcern($initial_concern) ->setInitialConcernNotes($initial_concern_notes) + ->setGender($gender) + ->setCallerClassification($caller_class) ->clearRider(); if ($user != null) @@ -1579,17 +1645,23 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface } // get source of awareness if any - $soa_type = $req->request->get('source_of_awareness'); + $soa_type = $req->request->get('source_of_awareness', ''); // get remarks $remarks = $req->request->get('remarks', ''); // get initial concern if any - $initial_concern = $req->request->get('initial_concern'); + $initial_concern = $req->request->get('initial_concern', ''); // get initial concern notes if any $initial_concern_notes = $req->request->get('initial_concern_notes', ''); + // get gender if any + $gender = $req->request->get('gender', ''); + + // get caller classification if any + $caller_class = $req->request->get('caller_class', ''); + if (empty($error_array)) { // rider mqtt event // NOTE: need to send this before saving because rider will be cleared @@ -1604,9 +1676,13 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface $old_rider = $obj->getRider(); if ($old_rider != null) { - $old_rider->setCurrentJobOrder(); - // set available flag for first rider - $old_rider->setAvailable(true); + if (($old_rider->getCurrentJobOrder() != null) && + ($old_rider->getCurrentJobOrder()->getID() == $obj->getID())) + { + $old_rider->setCurrentJobOrder(); + // set available flag for first rider + $old_rider->setAvailable(true); + } } // coordinates @@ -1634,7 +1710,9 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ->setRemarks($remarks) ->setDeliveryStatus(DeliveryStatus::RIDER_ASSIGN) ->setInitialConcern($initial_concern) - ->setInitialConcernNotes($initial_concern_notes); + ->setInitialConcernNotes($initial_concern_notes) + ->setGender($gender) + ->setCallerClassification($caller_class); if ($user != null) { @@ -3142,6 +3220,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface $params['no_trade_in_reasons'] = NoTradeInReason::getCollection(); $params['soa_types'] = SourceOfAwareness::getCollection(); $params['initial_concern'] = InitialConcern::getCollection(); + $params['genders'] = Gender::getCollection(); + $params['caller_classifications'] = CallerClassification::getCollection(); } protected function initFormTags(&$params) diff --git a/templates/job-order/form.html.twig b/templates/job-order/form.html.twig index 7a72aff3..841b9151 100644 --- a/templates/job-order/form.html.twig +++ b/templates/job-order/form.html.twig @@ -404,7 +404,7 @@
+ + {% for key, gender in genders %} + + {% endfor %} + +
+
+
+ + +
+
+