Merge branch '672-add-gender-of-caller-to-jo' into 'master'

Resolve "Add gender of caller to JO"

Closes #672

See merge request jankstudio/resq!786
This commit is contained in:
Kendrick Chan 2022-06-01 03:43:31 +00:00
commit ee65a75ec2
4 changed files with 83 additions and 7 deletions

View file

@ -396,6 +396,12 @@ class JobOrder
*/ */
protected $initial_concern_notes; protected $initial_concern_notes;
// gender of caller
/**
* @ORM\Column(type="string", length=80, nullable=true)
*/
protected $gender;
public function __construct() public function __construct()
{ {
$this->date_create = new DateTime(); $this->date_create = new DateTime();
@ -1129,4 +1135,16 @@ class JobOrder
{ {
return $this->initial_concern_notes; return $this->initial_concern_notes;
} }
public function setGender($gender)
{
$this->gender = $gender;
return $this;
}
public function getGender()
{
return $this->gender;
}
} }

16
src/Ramcar/Gender.php Normal file
View file

@ -0,0 +1,16 @@
<?php
namespace App\Ramcar;
class Gender extends NameValue
{
const MALE = 'male';
const FEMALE = 'female';
const UNKNOWN = 'unknown';
const COLLECTION = [
'male' => 'Male',
'female' => 'Female',
'unknown' => 'Unknown',
];
}

View file

@ -46,6 +46,7 @@ use App\Ramcar\HubCriteria;
use App\Ramcar\DeliveryStatus; use App\Ramcar\DeliveryStatus;
use App\Ramcar\SourceOfAwareness; use App\Ramcar\SourceOfAwareness;
use App\Ramcar\InitialConcern; use App\Ramcar\InitialConcern;
use App\Ramcar\Gender;
use App\Service\InvoiceGeneratorInterface; use App\Service\InvoiceGeneratorInterface;
use App\Service\JobOrderHandlerInterface; use App\Service\JobOrderHandlerInterface;
@ -410,6 +411,9 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
// get initial concern notes if any // get initial concern notes if any
$initial_concern_notes = $req->request->get('initial_concern_notes', ''); $initial_concern_notes = $req->request->get('initial_concern_notes', '');
// get gender if any
$gender = $req->request->get('gender');
// TODO: check status before saving since JO might already // TODO: check status before saving since JO might already
// have a status that needs to be retained // have a status that needs to be retained
@ -445,7 +449,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
->setSourceOfAwareness($soa_type) ->setSourceOfAwareness($soa_type)
->setRemarks($remarks) ->setRemarks($remarks)
->setInitialConcern($initial_concern) ->setInitialConcern($initial_concern)
->setInitialConcernNotes($initial_concern_notes); ->setInitialConcernNotes($initial_concern_notes)
->setGender($gender);
// check if user is null, meaning call to create came from API // check if user is null, meaning call to create came from API
if ($user != null) if ($user != null)
@ -652,6 +657,9 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
// get initial concern notes if any // get initial concern notes if any
$initial_concern_notes = $req->request->get('initial_concern_notes', ''); $initial_concern_notes = $req->request->get('initial_concern_notes', '');
// get gender if any
$gender = $req->request->get('gender');
if (empty($error_array)) if (empty($error_array))
{ {
// get current user // get current user
@ -682,7 +690,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
->setSourceOfAwareness($soa_type) ->setSourceOfAwareness($soa_type)
->setRemarks($remarks) ->setRemarks($remarks)
->setInitialConcern($initial_concern) ->setInitialConcern($initial_concern)
->setInitialConcernNotes($initial_concern_notes); ->setInitialConcernNotes($initial_concern_notes)
->setGender($gender);
// did they change invoice? // did they change invoice?
$invoice_items = $req->request->get('invoice_items', []); $invoice_items = $req->request->get('invoice_items', []);
@ -840,6 +849,9 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
// get initial concern notes if any // get initial concern notes if any
$initial_concern_notes = $req->request->get('initial_concern_notes', ''); $initial_concern_notes = $req->request->get('initial_concern_notes', '');
// get gender if any
$gender = $req->request->get('gender');
if (empty($error_array)) if (empty($error_array))
{ {
// coordinates // coordinates
@ -867,7 +879,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
->setSourceOfAwareness($soa_type) ->setSourceOfAwareness($soa_type)
->setRemarks($remarks) ->setRemarks($remarks)
->setInitialConcern($initial_concern) ->setInitialConcern($initial_concern)
->setInitialConcernNotes($initial_concern_notes); ->setInitialConcernNotes($initial_concern_notes)
->setGender($gender);
// validate // validate
$errors = $this->validator->validate($obj); $errors = $this->validator->validate($obj);
@ -971,6 +984,9 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
// get initial concern notes if any // get initial concern notes if any
$initial_concern_notes = $req->request->get('initial_concern_notes', ''); $initial_concern_notes = $req->request->get('initial_concern_notes', '');
// get gender if any
$gender = $req->request->get('gender');
// get current user // get current user
$user = $this->security->getUser(); $user = $this->security->getUser();
@ -1000,7 +1016,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
->setSourceOfAwareness($soa_type) ->setSourceOfAwareness($soa_type)
->setRemarks($remarks) ->setRemarks($remarks)
->setInitialConcern($initial_concern) ->setInitialConcern($initial_concern)
->setInitialConcernNotes($initial_concern_notes); ->setInitialConcernNotes($initial_concern_notes)
->setGender($gender);
if ($user != null) if ($user != null)
{ {
@ -1093,6 +1110,9 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
// get initial concern notes if any // get initial concern notes if any
$initial_concern_notes = $req->request->get('initial_concern_notes', ''); $initial_concern_notes = $req->request->get('initial_concern_notes', '');
// get gender if any
$gender = $req->request->get('gender');
if (empty($error_array)) { if (empty($error_array)) {
// coordinates // coordinates
$point = new Point($req->request->get('coord_lng'), $req->request->get('coord_lat')); $point = new Point($req->request->get('coord_lng'), $req->request->get('coord_lat'));
@ -1116,7 +1136,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
->setSourceOfAwareness($soa_type) ->setSourceOfAwareness($soa_type)
->setRemarks($remarks) ->setRemarks($remarks)
->setInitialConcern($initial_concern) ->setInitialConcern($initial_concern)
->setInitialConcernNotes($initial_concern_notes); ->setInitialConcernNotes($initial_concern_notes)
->setGender($gender);
// validate // validate
$errors = $this->validator->validate($obj); $errors = $this->validator->validate($obj);
@ -1329,6 +1350,9 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
// get initial concern notes if any // get initial concern notes if any
$initial_concern_notes = $req->request->get('initial_concern_notes', ''); $initial_concern_notes = $req->request->get('initial_concern_notes', '');
// get gender if any
$gender = $req->request->get('gender');
// get previously assigned hub, if any // get previously assigned hub, if any
$old_hub = $obj->getHub(); $old_hub = $obj->getHub();
@ -1367,6 +1391,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
->setRemarks($remarks) ->setRemarks($remarks)
->setInitialConcern($initial_concern) ->setInitialConcern($initial_concern)
->setInitialConcernNotes($initial_concern_notes) ->setInitialConcernNotes($initial_concern_notes)
->setGender($gender)
->clearRider(); ->clearRider();
if ($user != null) if ($user != null)
@ -1575,6 +1600,9 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
// get initial concern notes if any // get initial concern notes if any
$initial_concern_notes = $req->request->get('initial_concern_notes', ''); $initial_concern_notes = $req->request->get('initial_concern_notes', '');
// get gender if any
$gender = $req->request->get('gender');
if (empty($error_array)) { if (empty($error_array)) {
// rider mqtt event // rider mqtt event
// NOTE: need to send this before saving because rider will be cleared // NOTE: need to send this before saving because rider will be cleared
@ -1619,7 +1647,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
->setRemarks($remarks) ->setRemarks($remarks)
->setDeliveryStatus(DeliveryStatus::RIDER_ASSIGN) ->setDeliveryStatus(DeliveryStatus::RIDER_ASSIGN)
->setInitialConcern($initial_concern) ->setInitialConcern($initial_concern)
->setInitialConcernNotes($initial_concern_notes); ->setInitialConcernNotes($initial_concern_notes)
->setGender($gender);
if ($user != null) if ($user != null)
{ {
@ -3127,6 +3156,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
$params['no_trade_in_reasons'] = NoTradeInReason::getCollection(); $params['no_trade_in_reasons'] = NoTradeInReason::getCollection();
$params['soa_types'] = SourceOfAwareness::getCollection(); $params['soa_types'] = SourceOfAwareness::getCollection();
$params['initial_concern'] = InitialConcern::getCollection(); $params['initial_concern'] = InitialConcern::getCollection();
$params['genders'] = Gender::getCollection();
} }
protected function initFormTags(&$params) protected function initFormTags(&$params)

View file

@ -404,7 +404,7 @@
<div class="col-lg-6"> <div class="col-lg-6">
<label data-field="initial_concern">Initial Concern of Customer</label> <label data-field="initial_concern">Initial Concern of Customer</label>
<select class="form-control m-input" id="initial-concern" name="initial_concern"> <select class="form-control m-input" id="initial-concern" name="initial_concern">
<option value="">Select an initial concern</option> <option value=""></option>
{% for key, class in initial_concern %} {% for key, class in initial_concern %}
<option value="{{ key }}"{{ obj.getInitialConcern == key ? ' selected' }}>{{ class }}</option> <option value="{{ key }}"{{ obj.getInitialConcern == key ? ' selected' }}>{{ class }}</option>
{% endfor %} {% endfor %}
@ -468,6 +468,18 @@
</div> </div>
</div> </div>
</div> </div>
<div class="form-group m-form__group row">
<div class="col-lg-6">
<label data-field="status">Gender of Caller</label>
<select class="form-control m-input" id="gender" name="gender">
<option value=""></option>
{% for key, gender in genders %}
<option value="{{ key }}"{{ key == obj.getGender ? ' selected' }}>{{ gender }}</option>
{% endfor %}
</select>
<div class="form-control-feedback hide" data-field="gender"></div>
</div>
</div>
<div class="form-group m-form__group row"> <div class="form-group m-form__group row">
<div class="col-lg-6"> <div class="col-lg-6">
<label data-field="status">Source of Awareness</label> <label data-field="status">Source of Awareness</label>