Add emergency type to job order. #677

This commit is contained in:
Korina Cordero 2022-06-06 08:40:26 +00:00
parent a847cba9b9
commit 70d917a585
3 changed files with 102 additions and 10 deletions

View file

@ -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;
}
}

View file

@ -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 = [];

View file

@ -375,7 +375,7 @@
</div>
</div>
<div class="form-group m-form__group row">
<div class="col-lg-4">
<div class="col-lg-6">
<label data-field="flag_will_wait">Willing to Wait</label>
<select class="form-control m-input" id="flag-willing-to-wait" name="flag_willing_to_wait">
{% for key, class in willing_to_wait_content %}
@ -384,7 +384,7 @@
</select>
<div class="form-control-feedback hide" data-field="flag_willing_to_wait"></div>
</div>
<div class="col-lg-4">
<div class="col-lg-6">
<label data-field="no_wait_reason">Reason Why Not Willing to Wait</label>
<select class="form-control m-input" id="no-wait-reason" name="no_wait_reason" disabled>
<option value="">None</option>
@ -394,10 +394,26 @@
</select>
<div class="form-control-feedback hide" data-field="no_wait_reason"></div>
</div>
<div class="col-lg-4">
</div>
<div class="form-group m-form__group row">
<div class="col-lg-6">
<label data-field="emergency_type">Emergency Scenario</label>
<select class="form-control m-input" id="emergency-type" name="emergency_type" disabled>
<option value=""></option>
{% for id, label in emergency_types %}
{% if obj.getEmergencyType %}
<option value="{{ id }}"{{ obj.getEmergencyType.getID == id ? ' selected' }}>{{ label }}</option>
{% else %}
<option value="{{ id }}">{{ label }}</option>
{% endif %}
{% endfor %}
</select>
<div class="form-control-feedback hide" data-field="emergency_type"></div>
</div>
<div class="col-lg-6">
<label data-field="not_wait_notes">Notes on Not Willing to Wait</label>
<textarea name="not_wait_notes" id="not-wait-notes" class="form-control m-input" rows="2" disabled>{{ obj.getNotWaitingNotes }}</textarea>
<div class="form-control-feedback hide" data-field="not_wait_notes"></div>
<div class="form-control-feedback hide" data-field="not_wait_notes"></div>
</div>
</div>
<div class="form-group m-form__group row">
@ -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);
}
});
});