Merge branch 'master' of gitlab.com:jankstudio/resq

This commit is contained in:
Kendrick Chan 2018-01-17 22:51:45 +08:00
commit 14b432a11e
4 changed files with 127 additions and 43 deletions

View file

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

View file

@ -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.');
}
}

View file

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

View file

@ -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">