Merge branch 'master' of gitlab.com:jankstudio/resq
This commit is contained in:
commit
14b432a11e
4 changed files with 127 additions and 43 deletions
|
|
@ -5,9 +5,14 @@ jo_in:
|
|||
|
||||
jo_proc:
|
||||
path: /job-order/processing
|
||||
controller: App\Controller\JobOrderController::processingForm
|
||||
controller: App\Controller\JobOrderController::processingList
|
||||
methods: [GET]
|
||||
|
||||
jo_proc_rows:
|
||||
path: /job-order/processing-rows
|
||||
controller: App\Controller\JobOrderController::processingRows
|
||||
methods: [POST]
|
||||
|
||||
jo_in_submit:
|
||||
path: /job-order/incoming
|
||||
controller: App\Controller\JobOrderController::incomingSubmit
|
||||
|
|
|
|||
|
|
@ -17,19 +17,12 @@ use Symfony\Component\HttpFoundation\Request;
|
|||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Validator\Validator\ValidatorInterface;
|
||||
|
||||
use App\Menu\Generator as MenuGenerator;
|
||||
use App\Access\Generator as ACLGenerator;
|
||||
use CrEOF\Spatial\PHP\Types\Geometry\Point;
|
||||
|
||||
use DateTime;
|
||||
|
||||
class JobOrderController extends BaseController
|
||||
{
|
||||
protected $acl_gen;
|
||||
|
||||
public function __construct(MenuGenerator $menu_gen, ACLGenerator $acl_gen)
|
||||
{
|
||||
$this->acl_gen = $acl_gen;
|
||||
parent::__construct($menu_gen);
|
||||
}
|
||||
|
||||
public function incomingForm()
|
||||
{
|
||||
$this->denyAccessUnlessGranted('jo_in.list', null, 'No access.');
|
||||
|
|
@ -56,22 +49,83 @@ class JobOrderController extends BaseController
|
|||
{
|
||||
$this->denyAccessUnlessGranted('jo_in.list', null, 'No access.');
|
||||
|
||||
// create new row
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$row = new JobOrder();
|
||||
|
||||
// TODO: Validation, handling of job order
|
||||
|
||||
// DEBUG: Get all variables
|
||||
error_log(print_r($req->request->all(), true));
|
||||
|
||||
// DEBUG: Fake error array
|
||||
// initialize error list
|
||||
$error_array = [];
|
||||
|
||||
// DEBUG: Error response for now
|
||||
// create new row
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$obj = new JobOrder();
|
||||
|
||||
// check if lat and lng are provided
|
||||
if (empty($req->request->get('coord_lng')) || empty($req->request->get('coord_lat'))) {
|
||||
$error_array['coordinates'] = 'No map coordinates provided. Please click on a location on the map.';
|
||||
}
|
||||
|
||||
// check if customer vehicle is set
|
||||
if (empty($req->request->get('customer_vehicle'))) {
|
||||
$error_array['customer_vehicle'] = 'No vehicle selected.';
|
||||
} else {
|
||||
// get customer vehicle
|
||||
$cust_vehicle = $em->getRepository(CustomerVehicle::class)->find($req->request->get('customer_vehicle'));
|
||||
|
||||
if (empty($cust_vehicle)) {
|
||||
$error_array['customer_vehicle'] = 'Invalid vehicle specified.';
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($error_array)) {
|
||||
// coordinates
|
||||
$point = new Point($req->request->get('coord_lng'), $req->request->get('coord_lat'));
|
||||
|
||||
// set and save values
|
||||
$obj->setDateCreate(DateTime::createFromFormat("d M Y", $req->request->get('date_transaction')))
|
||||
->setDateSchedule(DateTime::createFromFormat("d M Y h:i A", $req->request->get('date_schedule_date') . " " . $req->request->get('date_schedule_time')))
|
||||
->setCoordinates($point)
|
||||
->setAdvanceOrder($req->request->get('flag_advance') ?? false)
|
||||
->setCreatedBy($this->getUser())
|
||||
->setServiceType($req->request->get('service_type'))
|
||||
->setCustomer($cust_vehicle->getCustomer())
|
||||
->setCustomerVehicle($cust_vehicle)
|
||||
->setSource('web')
|
||||
->setStatus($req->request->get('status'))
|
||||
->setDeliveryInstructions($req->request->get('delivery_instructions'))
|
||||
->setAgentNotes($req->request->get('agent_notes'))
|
||||
->setDeliveryAddress($req->request->get('delivery_address'));
|
||||
}
|
||||
|
||||
// TODO: Validation
|
||||
|
||||
/*
|
||||
// validate
|
||||
$errors = $validator->validate($obj);
|
||||
|
||||
// add errors to list
|
||||
foreach ($errors as $error) {
|
||||
$error_array[$error->getPropertyPath()] = $error->getMessage();
|
||||
}
|
||||
*/
|
||||
|
||||
// check if any errors were found
|
||||
if (!empty($error_array)) {
|
||||
// return validation failure response
|
||||
return $this->json([
|
||||
'success' => false,
|
||||
'errors' => $error_array
|
||||
], 422);
|
||||
}
|
||||
|
||||
// validated! save the entity
|
||||
$em->persist($obj);
|
||||
$em->flush();
|
||||
|
||||
// return successful response
|
||||
return $this->json([
|
||||
'success' => false,
|
||||
'errors' => $error_array
|
||||
], 422);
|
||||
'success' => 'Changes have been saved!'
|
||||
]);
|
||||
}
|
||||
|
||||
public function processingList()
|
||||
{
|
||||
$this->denyAccessUnlessGranted('jo_proc.list', null, 'No access.');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -125,6 +125,12 @@ class JobOrder
|
|||
*/
|
||||
protected $agent_notes;
|
||||
|
||||
// delivery address
|
||||
/**
|
||||
* @ORM\Column(type="text", nullable=true)
|
||||
*/
|
||||
protected $delivery_address;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->date_create = new DateTime();
|
||||
|
|
@ -303,4 +309,15 @@ class JobOrder
|
|||
{
|
||||
return $this->agent_notes;
|
||||
}
|
||||
|
||||
public function setDeliveryAddress($delivery_address)
|
||||
{
|
||||
$this->delivery_address = $delivery_address;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getDeliveryAddress()
|
||||
{
|
||||
return $this->delivery_address;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
<div class="m-form__section m-form__section--first">
|
||||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-6">
|
||||
<label>Select a vehicle:</label>
|
||||
<label data-field="customer_vehicle">Select a vehicle:</label>
|
||||
<select class="form-control m-select2" id="customer-vehicle" name="customer_vehicle"></select>
|
||||
<div class="form-control-feedback hide" data-field="customer_vehicle"></div>
|
||||
</div>
|
||||
|
|
@ -46,19 +46,19 @@
|
|||
</div>
|
||||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-6">
|
||||
<label>First Name:</label>
|
||||
<label data-field="customer_first_name">First Name:</label>
|
||||
<input type="text" name="customer_first_name" id="customer-first-name" class="form-control m-input" value="{{ obj.getCustomer ? obj.getCustomer.getFirstName }}" placeholder="Select a vehicle first" data-vehicle-field="1" disabled>
|
||||
<div class="form-control-feedback hide" data-field="customer_first_name"></div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<label>Last Name:</label>
|
||||
<label data-field="customer_last_name">Last Name:</label>
|
||||
<input type="text" name="customer_last_name" id="customer-last-name" class="form-control m-input" value="{{ obj.getCustomer ? obj.getCustomer.getLastName }}" placeholder="Select a vehicle first" data-vehicle-field="1" disabled>
|
||||
<div class="form-control-feedback hide" data-field="customer_last_name"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-6">
|
||||
<label>Mobile Numbers:</label>
|
||||
<label data-field="customer_mobile_numbers">Mobile Numbers:</label>
|
||||
<textarea name="customer_mobile_numbers" id="customer-mobile-numbers" class="form-control m-input" placeholder="Select a vehicle first" data-vehicle-field="1" rows="4" disabled>{{ obj.getCustomer ? obj.getCustomer.getMobileNumberList|join("\r\n") }}</textarea>
|
||||
<div class="form-control-feedback hide" data-field="customer_mobile_numbers"></div>
|
||||
</div>
|
||||
|
|
@ -72,22 +72,22 @@
|
|||
</div>
|
||||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-3">
|
||||
<label>Vehicle Manufacturer:</label>
|
||||
<label data-field="vmfg">Vehicle Manufacturer:</label>
|
||||
<input type="text" name="vmfg" id="vmfg" class="form-control m-input" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getVehicle.getManufacturer.getName }}" placeholder="Select a vehicle first" data-vehicle-field="1" disabled>
|
||||
<div class="form-control-feedback hide" data-field="vmfg"></div>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<label>Vehicle Make:</label>
|
||||
<label data-field="vehicle_make">Vehicle Make:</label>
|
||||
<input type="text" name="vehicle_make" id="vehicle-make" class="form-control m-input" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getVehicle.getMake }}" placeholder="Select a vehicle first" data-vehicle-field="1" disabled>
|
||||
<div class="form-control-feedback hide" data-field="vehicle_make"></div>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<label>Vehicle Model Year:</label>
|
||||
<label data-field="vehicle_year">Vehicle Model Year:</label>
|
||||
<input type="text" name="vehicle_year" id="vehicle-year" class="form-control m-input" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getModelYear }}" placeholder="Select a vehicle first" data-vehicle-field="1" disabled>
|
||||
<div class="form-control-feedback hide" data-field="vehicle_year"></div>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<label>Vehicle Color:</label>
|
||||
<label data-field="vehicle_color">Vehicle Color:</label>
|
||||
<input type="text" name="vehicle_color" id="vehicle-color" class="form-control m-input" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getColor }}" placeholder="Select a vehicle first" data-vehicle-field="1" disabled>
|
||||
<div class="form-control-feedback hide" data-field="vehicle_color"></div>
|
||||
</div>
|
||||
|
|
@ -101,17 +101,17 @@
|
|||
</div>
|
||||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-3">
|
||||
<label>Current Battery:</label>
|
||||
<label data-field="current_battery">Current Battery:</label>
|
||||
<input type="text" name="current_battery" id="current-battery" class="form-control m-input" value="{{ obj.getCustomerVehicle and obj.getCustomerVehicle.getCurrentBattery ? obj.getCustomerVehicle.getCurrentBattery.getManufacturer.getName ~ ' ' ~ obj.getCustomerVehicle.getCurrentBattery.getModel.getName ~ ' ' ~ obj.getCustomerVehicle.getCurrentBattery.getSize.getName ~ ' (' ~ obj.getCustomerVehicle.getCurrentBattery.getProductCode ~ ')' }}" placeholder="Select a vehicle first" data-vehicle-field="1" disabled>
|
||||
<div class="form-control-feedback hide" data-field="current_battery"></div>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<label>Warranty Code:</label>
|
||||
<label data-field="warranty_code">Warranty Code:</label>
|
||||
<input type="text" name="warranty_code" id="warranty-code" class="form-control m-input" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getWarrantyCode }}" placeholder="Select a vehicle first" data-vehicle-field="1" disabled>
|
||||
<div class="form-control-feedback hide" data-field="warranty_code"></div>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<label>Warranty Expiration Date:</label>
|
||||
<label data-field="warranty_expiration">Warranty Expiration Date:</label>
|
||||
<input type="text" name="warranty_expiration" id="warranty-expiration" class="form-control m-input" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getWarrantyExpiration|date("d M Y") }}" placeholder="Select a vehicle first" data-vehicle-field="1" disabled>
|
||||
<div class="form-control-feedback hide" data-field="warranty_expiration"></div>
|
||||
</div>
|
||||
|
|
@ -133,7 +133,7 @@
|
|||
</div>
|
||||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-6">
|
||||
<label>Service Type:</label>
|
||||
<label data-field="service_type">Service Type:</label>
|
||||
<select class="form-control m-input" name="service_type">
|
||||
<!--<option value=""></option>-->
|
||||
{% for key, service in service_types %}
|
||||
|
|
@ -150,7 +150,7 @@
|
|||
<div class="form-control-feedback hide" data-field="date_transaction"></div>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<label>Scheduled Date:</label>
|
||||
<label data-field="date_schedule">Scheduled Date:</label>
|
||||
<div class="input-group date dp">
|
||||
<input type="text" name="date_schedule_date" class="form-control m-input" data-default-value="{{ obj.getDateSchedule ? obj.getDateSchedule|date('Y-m-d') : "now"|date('Y-m-d') }}" value="{{ obj.getDateSchedule ? obj.getDateSchedule|date('d M Y') : "now"|date('d M Y') }}" readonly placeholder="Select a date" disabled>
|
||||
<span class="input-group-addon">
|
||||
|
|
@ -160,7 +160,7 @@
|
|||
<div class="form-control-feedback hide" data-field="date_schedule_date"></div>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<label>Scheduled Time:</label>
|
||||
<label data-field="date_schedule">Scheduled Time:</label>
|
||||
<div class="input-group">
|
||||
<input type="text" name="date_schedule_time" class="form-control m-input tp" data-default-value="{{ obj.getDateSchedule ? obj.getDateSchedule|date('g:i A') : "now"|date('g:i A') }}" value="{{ obj.getDateSchedule ? obj.getDateSchedule|date('g:i A') : "now"|date('g:i A') }}" readonly placeholder="Select a time" disabled>
|
||||
<span class="input-group-addon">
|
||||
|
|
@ -172,19 +172,19 @@
|
|||
</div>
|
||||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-6">
|
||||
<label>Delivery Instructions:</label>
|
||||
<label data-field="delivery_instructions">Delivery Instructions:</label>
|
||||
<textarea name="delivery_instructions" class="form-control m-input" rows="4">{{ obj.getDeliveryInstructions }}</textarea>
|
||||
<div class="form-control-feedback hide" data-field="delivery_instructions"></div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<label>Agent Notes:</label>
|
||||
<label data-field="agent_notes">Agent Notes:</label>
|
||||
<textarea name="agent_notes" class="form-control m-input" rows="4">{{ obj.getAgentNotes }}</textarea>
|
||||
<div class="form-control-feedback hide" data-field="agent_notes"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-6">
|
||||
<label>Status:</label>
|
||||
<label data-field="status">Status:</label>
|
||||
<select class="form-control m-input" name="status">
|
||||
<!--<option value=""></option>-->
|
||||
{% for key, status in statuses %}
|
||||
|
|
@ -199,11 +199,19 @@
|
|||
<div class="m-form__section">
|
||||
<div class="m-form__heading">
|
||||
<h3 class="m-form__heading-title">
|
||||
Coordinates
|
||||
Location
|
||||
</h3>
|
||||
</div>
|
||||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-6">
|
||||
<label data-field="delivery_address">Delivery Address:</label>
|
||||
<textarea name="delivery_address" class="form-control m-input" rows="4">{{ obj.getDeliveryAddress }}</textarea>
|
||||
<div class="form-control-feedback hide" data-field="delivery_address"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-12">
|
||||
<label name="coordinates" data-field="coordinates">Coordinates:</label>
|
||||
<input type="hidden" id="map_lat" name="coord_lat" value="">
|
||||
<input type="hidden" id="map_lng" name="coord_lng" value="">
|
||||
<div class="input-group">
|
||||
|
|
|
|||
Loading…
Reference in a new issue