Add path to tapi calls. Add more required parameters for new job order. #686
This commit is contained in:
parent
08050416bb
commit
fb91d462ff
3 changed files with 96 additions and 52 deletions
|
|
@ -81,17 +81,17 @@ access_keys:
|
||||||
- id: tapi_vehicle.list
|
- id: tapi_vehicle.list
|
||||||
label: List Third Party Vehicles
|
label: List Third Party Vehicles
|
||||||
- id: tapi_promo
|
- id: tapi_promo
|
||||||
labels: Third Party Promo Access
|
label: Third Party Promo Access
|
||||||
acls:
|
acls:
|
||||||
- id: tapi_promo.list
|
- id: tapi_promo.list
|
||||||
label: List Third Party Promos
|
label: List Third Party Promos
|
||||||
- id: tapi_battery
|
- id: tapi_battery
|
||||||
labels: Third Party Battery Access
|
label: Third Party Battery Access
|
||||||
acls:
|
acls:
|
||||||
- id: tapi_battery_compatible.list
|
- id: tapi_battery_compatible.list
|
||||||
label: List Third Party Compatible Batteries
|
label: List Third Party Compatible Batteries
|
||||||
- id: tapi_jo
|
- id: tapi_jo
|
||||||
labels: Third Party Job Order Access
|
label: Third Party Job Order Access
|
||||||
acls:
|
acls:
|
||||||
- id: tapi_jo.request
|
- id: tapi_jo.request
|
||||||
label: Third Party Request Job Order
|
label: Third Party Request Job Order
|
||||||
|
|
@ -114,7 +114,7 @@ access_keys:
|
||||||
- id: tapi_jo.get.info
|
- id: tapi_jo.get.info
|
||||||
label: Third Party Get Job Order Info
|
label: Third Party Get Job Order Info
|
||||||
- id: tapi_service
|
- id: tapi_service
|
||||||
labels: Third Party Service Access
|
label: Third Party Service Access
|
||||||
acls:
|
acls:
|
||||||
- id: tapi_service.list
|
- id: tapi_service.list
|
||||||
label: List Third Party Services
|
label: List Third Party Services
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,14 @@ security:
|
||||||
provider: api_key_user_provider
|
provider: api_key_user_provider
|
||||||
user_checker: Catalyst\AuthBundle\Service\UserChecker
|
user_checker: Catalyst\AuthBundle\Service\UserChecker
|
||||||
|
|
||||||
|
third_party_api:
|
||||||
|
pattern: ^\/tapi\/
|
||||||
|
stateless: true
|
||||||
|
simple_preauth:
|
||||||
|
authenticator: Catalyst\APIBundle\Security\APIKeyAuthenticator
|
||||||
|
provider: api_key_user_provider
|
||||||
|
user_checker: Catalyst\AuthBundle\Service\UserChecker
|
||||||
|
|
||||||
main:
|
main:
|
||||||
provider: user_provider
|
provider: user_provider
|
||||||
form_login:
|
form_login:
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ namespace App\Controller\TAPI;
|
||||||
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Symfony\Component\Dotenv\Dotenv;
|
||||||
|
|
||||||
use Doctrine\ORM\Query;
|
use Doctrine\ORM\Query;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
|
|
@ -25,6 +26,8 @@ use App\Ramcar\JOEventType;
|
||||||
use App\Ramcar\HubCriteria;
|
use App\Ramcar\HubCriteria;
|
||||||
use App\Ramcar\ModeOfPayment;
|
use App\Ramcar\ModeOfPayment;
|
||||||
use App\Ramcar\APIRiderStatus;
|
use App\Ramcar\APIRiderStatus;
|
||||||
|
use App\Ramcar\VehicleStatusCondition;
|
||||||
|
use App\Ramcar\FuelType;
|
||||||
|
|
||||||
use App\Service\InvoiceGeneratorInterface;
|
use App\Service\InvoiceGeneratorInterface;
|
||||||
use App\Service\RisingTideGateway;
|
use App\Service\RisingTideGateway;
|
||||||
|
|
@ -49,6 +52,7 @@ use App\Entity\Customer;
|
||||||
use App\Entity\Hub;
|
use App\Entity\Hub;
|
||||||
use App\Entity\Invoice;
|
use App\Entity\Invoice;
|
||||||
use App\Entity\Vehicle;
|
use App\Entity\Vehicle;
|
||||||
|
use App\Entity\VehicleManufacturer;
|
||||||
|
|
||||||
use DateTime;
|
use DateTime;
|
||||||
use DateInterval;
|
use DateInterval;
|
||||||
|
|
@ -71,9 +75,6 @@ class JobOrderController extends APIController
|
||||||
HubSelector $hub_select, HubDistributor $hub_dist, HubFilterLogger $hub_filter_logger,
|
HubSelector $hub_select, HubDistributor $hub_dist, HubFilterLogger $hub_filter_logger,
|
||||||
HubFilteringGeoChecker $hub_geofence, EntityManagerInterface $em)
|
HubFilteringGeoChecker $hub_geofence, EntityManagerInterface $em)
|
||||||
{
|
{
|
||||||
// TODO: fix all the responses
|
|
||||||
$this->denyAccessUnlessGranted('tapi_jo.request', null, 'No access.');
|
|
||||||
|
|
||||||
// check required parameters and api key
|
// check required parameters and api key
|
||||||
$required_params = [
|
$required_params = [
|
||||||
'service_type',
|
'service_type',
|
||||||
|
|
@ -86,6 +87,10 @@ class JobOrderController extends APIController
|
||||||
'mobile_number',
|
'mobile_number',
|
||||||
'vehicle_manufacturer_id',
|
'vehicle_manufacturer_id',
|
||||||
'vehicle_model_id',
|
'vehicle_model_id',
|
||||||
|
'vehicle_model_year',
|
||||||
|
'vehicle_color',
|
||||||
|
'vehicle_condition',
|
||||||
|
'vehicle_fuel_type',
|
||||||
'plate_number'
|
'plate_number'
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -94,7 +99,8 @@ class JobOrderController extends APIController
|
||||||
return new APIResponse(false, $msg);
|
return new APIResponse(false, $msg);
|
||||||
|
|
||||||
// get data from request
|
// get data from request
|
||||||
$status = $this->getJobOrderRequestInfo($req, $data);
|
$data = [];
|
||||||
|
$status = $this->getJobOrderRequestInfo($req, $em, $data);
|
||||||
if ($status != null)
|
if ($status != null)
|
||||||
return new APIResponse(false, $status);
|
return new APIResponse(false, $status);
|
||||||
|
|
||||||
|
|
@ -112,6 +118,8 @@ class JobOrderController extends APIController
|
||||||
$jo = new JobOrder();
|
$jo = new JobOrder();
|
||||||
$jo->setSource($data['source'])
|
$jo->setSource($data['source'])
|
||||||
->setStatus(JOStatus::PENDING)
|
->setStatus(JOStatus::PENDING)
|
||||||
|
->setServiceType($data['service_type'])
|
||||||
|
->setWarrantyClass($data['warranty_class'])
|
||||||
->setDeliveryInstructions($data['instructions'])
|
->setDeliveryInstructions($data['instructions'])
|
||||||
->setTier1Notes('')
|
->setTier1Notes('')
|
||||||
->setTier2Notes('')
|
->setTier2Notes('')
|
||||||
|
|
@ -124,6 +132,7 @@ class JobOrderController extends APIController
|
||||||
->setLandmark($data['landmark']);
|
->setLandmark($data['landmark']);
|
||||||
|
|
||||||
$jo->setCustomer($data['customer']);
|
$jo->setCustomer($data['customer']);
|
||||||
|
$jo->setCustomerVehicle($data['customer_vehicle']);
|
||||||
|
|
||||||
// set coordinates
|
// set coordinates
|
||||||
$point = new Point($data['long'], $data['lat']);
|
$point = new Point($data['long'], $data['lat']);
|
||||||
|
|
@ -136,10 +145,10 @@ class JobOrderController extends APIController
|
||||||
// TODO add promo to criteria if any
|
// TODO add promo to criteria if any
|
||||||
// check promo
|
// check promo
|
||||||
// put in criteria
|
// put in criteria
|
||||||
|
if ($data['promo'] != null)
|
||||||
$icrit->addPromo($data['promo']);
|
$icrit->addPromo($data['promo']);
|
||||||
|
|
||||||
$icrit->setCustomerVehicle($data['customer_vehicle']);
|
$icrit->setCustomerVehicle($data['customer_vehicle']);
|
||||||
$jo->setCustomerVehicle($data['customer_vehicle']);
|
|
||||||
|
|
||||||
$icrit->addEntry($data['batt'], $data['trade_in_type'], 1);
|
$icrit->addEntry($data['batt'], $data['trade_in_type'], 1);
|
||||||
|
|
||||||
|
|
@ -149,6 +158,7 @@ class JobOrderController extends APIController
|
||||||
|
|
||||||
// assign hub and rider
|
// assign hub and rider
|
||||||
// check if hub is null
|
// check if hub is null
|
||||||
|
$hub = $data['hub'];
|
||||||
if ($hub == null)
|
if ($hub == null)
|
||||||
{
|
{
|
||||||
// TODO: need to factor out the setting of HubCriteria fields
|
// TODO: need to factor out the setting of HubCriteria fields
|
||||||
|
|
@ -158,7 +168,7 @@ class JobOrderController extends APIController
|
||||||
// get distance limit for mobile from env
|
// get distance limit for mobile from env
|
||||||
// get value of hub_filter_enable from env
|
// get value of hub_filter_enable from env
|
||||||
$dotenv = new Dotenv();
|
$dotenv = new Dotenv();
|
||||||
$dotenv->loadEnv(__DIR__.'/../../.env');
|
$dotenv->loadEnv(__DIR__.'/../../../.env');
|
||||||
$limit_distance = $_ENV['CUST_DISTANCE_LIMIT'];
|
$limit_distance = $_ENV['CUST_DISTANCE_LIMIT'];
|
||||||
$hub_filter_enabled = $_ENV['HUB_FILTER_ENABLE'];
|
$hub_filter_enabled = $_ENV['HUB_FILTER_ENABLE'];
|
||||||
|
|
||||||
|
|
@ -298,7 +308,7 @@ class JobOrderController extends APIController
|
||||||
$jo->setStatus(JOStatus::RIDER_ASSIGN);
|
$jo->setStatus(JOStatus::RIDER_ASSIGN);
|
||||||
$jo->setStatusAutoAssign(AutoAssignStatus::HUB_ASSIGNED);
|
$jo->setStatusAutoAssign(AutoAssignStatus::HUB_ASSIGNED);
|
||||||
|
|
||||||
if ($date_schedule != null)
|
if ($data['date_schedule'] != null)
|
||||||
$jo->setDateSchedule($data['date_schedule']);
|
$jo->setDateSchedule($data['date_schedule']);
|
||||||
|
|
||||||
// update redis hub_jo_count for hub
|
// update redis hub_jo_count for hub
|
||||||
|
|
@ -1470,7 +1480,7 @@ class JobOrderController extends APIController
|
||||||
|
|
||||||
protected function getJobOrderRequestInfo(Request $req, EntityManagerInterface $em, &$data)
|
protected function getJobOrderRequestInfo(Request $req, EntityManagerInterface $em, &$data)
|
||||||
{
|
{
|
||||||
$error = $this->validateRequest($req);
|
$error = $this->validateRequest($req, $em);
|
||||||
if ($error != null)
|
if ($error != null)
|
||||||
{
|
{
|
||||||
// there is a validation error
|
// there is a validation error
|
||||||
|
|
@ -1481,7 +1491,7 @@ class JobOrderController extends APIController
|
||||||
|
|
||||||
// at this point, the request data has been validated
|
// at this point, the request data has been validated
|
||||||
// trade-in type
|
// trade-in type
|
||||||
$trade_in_type = $this->cleanText($r->get('trade_in_type'));
|
$trade_in_type = $this->cleanText($r->get('trade_in_type', ''));
|
||||||
switch ($trade_in_type)
|
switch ($trade_in_type)
|
||||||
{
|
{
|
||||||
case TradeInType::MOTOLITE:
|
case TradeInType::MOTOLITE:
|
||||||
|
|
@ -1507,12 +1517,12 @@ class JobOrderController extends APIController
|
||||||
$lat = $r->get('latitude');
|
$lat = $r->get('latitude');
|
||||||
|
|
||||||
// get service type
|
// get service type
|
||||||
$stype = $this->cleanText($r->get('service_type'));
|
$stype = $this->cleanText($r->get('service_type', ''));
|
||||||
|
|
||||||
// get mode of payment
|
// get mode of payment
|
||||||
$payment_mode = $this->clean($r->get('mode_of_payment'));
|
$payment_mode = $this->cleanText($r->get('mode_of_payment', ''));
|
||||||
|
|
||||||
$advance_order = $r->get('flag_advance_order');
|
$advance_order = $r->get('flag_advance_order', 0);
|
||||||
// check for 'false' text
|
// check for 'false' text
|
||||||
if ($advance_order === false || $advance_order === 0 || $advance_order === '0' || $advance_order == 'false')
|
if ($advance_order === false || $advance_order === 0 || $advance_order === '0' || $advance_order == 'false')
|
||||||
$flag_advance_order = false;
|
$flag_advance_order = false;
|
||||||
|
|
@ -1525,28 +1535,22 @@ class JobOrderController extends APIController
|
||||||
$hub = $em->getRepository(Hub::class)->find($hub_id);
|
$hub = $em->getRepository(Hub::class)->find($hub_id);
|
||||||
|
|
||||||
$schedule_date = $r->get('date_schedule');
|
$schedule_date = $r->get('date_schedule');
|
||||||
$slot_id = $r->get('slot_id');
|
|
||||||
|
|
||||||
// process the jo date schedule
|
// process the jo date schedule
|
||||||
$date_schedule = null;
|
$date_schedule = null;
|
||||||
if ((strlen($schedule_date) > 0) && (strlen($slot_id) > 0))
|
if (strlen($schedule_date) > 0)
|
||||||
{
|
$date_schedule = DateTime::createFromFormat('Y-m-d H:i', $schedule_date);
|
||||||
$time_schedule = $this->getTimeFromSlot($slot_id);
|
|
||||||
if (!empty($time_schedule))
|
|
||||||
{
|
|
||||||
$s_date = $schedule_date . ' ' . $time_schedule;
|
|
||||||
$date_schedule = DateTime::createFromFormat('Y-m-d H:i', $s_date);
|
|
||||||
// error_log($date_schedule->format('Y-m-d H:i'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// get promo
|
// get promo
|
||||||
$promo_id = $r->get('promo_id');
|
$promo_id = $r->get('promo_id', 0);
|
||||||
$promo = $em->getRepository(Promo::class)->find($promo_id);
|
$promo = $em->getRepository(Promo::class)->find($promo_id);
|
||||||
|
|
||||||
// check battery
|
// check battery
|
||||||
$batt_id = $req->request->get('batt_id');
|
$batt_id = $req->request->get('battery_id', 0);
|
||||||
$batt = $em->getRepository(Battery::class)->find($batt_id);
|
$batt = $em->getRepository(Battery::class)->find($batt_id);
|
||||||
|
$warranty_class = '';
|
||||||
|
if (($batt != null) && ($stype == ServiceType::BATTERY_REPLACEMENT_NEW))
|
||||||
|
$warranty_class = WarrantyClass::WTY_PRIVATE;
|
||||||
|
|
||||||
// get customer and vehicle info
|
// get customer and vehicle info
|
||||||
$fname = trim($r->get('first_name', ''));
|
$fname = trim($r->get('first_name', ''));
|
||||||
|
|
@ -1556,19 +1560,24 @@ class JobOrderController extends APIController
|
||||||
// validate mobile number
|
// validate mobile number
|
||||||
$clean_mobile = $this->cleanPhoneNumber($mobile);
|
$clean_mobile = $this->cleanPhoneNumber($mobile);
|
||||||
|
|
||||||
$vmanu_id = $r->get('vehicle_manufacturer');
|
$vmanu_id = $r->get('vehicle_manufacturer_id', 0);
|
||||||
// find vehicle manufacturer
|
// find vehicle manufacturer
|
||||||
$vmanu = $em->getRepository(VehicleManufacturer::class)->find($vmanu_id);
|
$vmanu = $em->getRepository(VehicleManufacturer::class)->find($vmanu_id);
|
||||||
|
|
||||||
$vmodel_id = $r->get('vehicle_model');
|
$vmodel_id = $r->get('vehicle_model_id', 0);
|
||||||
// find vehicle
|
// find vehicle
|
||||||
$vehicle = $em->getRepository(Vehicle::class)->find($vmodel_id);
|
$vehicle = $em->getRepository(Vehicle::class)->find($vmodel_id);
|
||||||
|
|
||||||
$plate_number = $r->get('plate_number');
|
$plate_number = $r->get('plate_number', '');
|
||||||
|
|
||||||
// clean plate number
|
// clean plate number
|
||||||
$clean_plate = $this->cleanPlateNumber($plate_number);
|
$clean_plate = $this->cleanPlateNumber($plate_number);
|
||||||
|
|
||||||
|
$v_condition = $this->cleanText($r->get('vehicle_condition', ''));
|
||||||
|
$fuel_type = $this->cleanText($r->get('vehicle_fuel_type', ''));
|
||||||
|
$color = trim($r->get('vehicle_color', ''));
|
||||||
|
$model_year = trim($r->get('vehicle_model_year', 0));
|
||||||
|
|
||||||
$c_data = [
|
$c_data = [
|
||||||
'first_name' => $fname,
|
'first_name' => $fname,
|
||||||
'last_name' => $lname,
|
'last_name' => $lname,
|
||||||
|
|
@ -1576,6 +1585,10 @@ class JobOrderController extends APIController
|
||||||
'vmanu' => $vmanu,
|
'vmanu' => $vmanu,
|
||||||
'vehicle' => $vehicle,
|
'vehicle' => $vehicle,
|
||||||
'plate_number' => $clean_plate,
|
'plate_number' => $clean_plate,
|
||||||
|
'model_year' => $model_year,
|
||||||
|
'condition' => $v_condition,
|
||||||
|
'color' => $color,
|
||||||
|
'fuel_type' => $fuel_type,
|
||||||
];
|
];
|
||||||
|
|
||||||
// process customer and vehicle information
|
// process customer and vehicle information
|
||||||
|
|
@ -1598,6 +1611,7 @@ class JobOrderController extends APIController
|
||||||
'customer' => $cust_data['customer'],
|
'customer' => $cust_data['customer'],
|
||||||
'customer_vehicle' => $cust_data['customer_vehicle'],
|
'customer_vehicle' => $cust_data['customer_vehicle'],
|
||||||
'source' => TransactionOrigin::THIRD_PARTY,
|
'source' => TransactionOrigin::THIRD_PARTY,
|
||||||
|
'warranty_class' => $warranty_class,
|
||||||
];
|
];
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
@ -1608,15 +1622,16 @@ class JobOrderController extends APIController
|
||||||
$r = $req->request;
|
$r = $req->request;
|
||||||
|
|
||||||
// validate trade-in type
|
// validate trade-in type
|
||||||
$trade_in_type = $this->cleanText($r->get('trade_in_type'));
|
$trade_in_type = $this->cleanText($r->get('trade_in_type', ''));
|
||||||
if (!TradeInType::validate($trade_in_type))
|
if ((!empty($trade_in_type)) &&
|
||||||
|
(!TradeInType::validate($trade_in_type)))
|
||||||
{
|
{
|
||||||
$message = 'Invalid trade in type';
|
$message = 'Invalid trade in type';
|
||||||
return $message;
|
return $message;
|
||||||
}
|
}
|
||||||
|
|
||||||
// validate service type
|
// validate service type
|
||||||
$stype = $this->cleanText($r->get('service_type'));
|
$stype = $this->cleanText($r->get('service_type', ''));
|
||||||
if (!ServiceType::validate($stype))
|
if (!ServiceType::validate($stype))
|
||||||
{
|
{
|
||||||
$message = 'Invalid service type';
|
$message = 'Invalid service type';
|
||||||
|
|
@ -1624,7 +1639,7 @@ class JobOrderController extends APIController
|
||||||
}
|
}
|
||||||
|
|
||||||
// validate mode of payment
|
// validate mode of payment
|
||||||
$payment_mode = $this->clean($r->get('mode_of_payment'));
|
$payment_mode = $this->cleanText($r->get('mode_of_payment', ''));
|
||||||
if (!ModeOfPayment::validate($payment_mode))
|
if (!ModeOfPayment::validate($payment_mode))
|
||||||
{
|
{
|
||||||
$message = 'Invalid mode of payment';
|
$message = 'Invalid mode of payment';
|
||||||
|
|
@ -1633,7 +1648,7 @@ class JobOrderController extends APIController
|
||||||
|
|
||||||
// check promo
|
// check promo
|
||||||
$promo = null;
|
$promo = null;
|
||||||
$promo_id = $r->get('promo_id');
|
$promo_id = $r->get('promo_id', 0);
|
||||||
if (!empty($promo_id))
|
if (!empty($promo_id))
|
||||||
{
|
{
|
||||||
$promo = $em->getRepository(Promo::class)->find($promo_id);
|
$promo = $em->getRepository(Promo::class)->find($promo_id);
|
||||||
|
|
@ -1646,8 +1661,8 @@ class JobOrderController extends APIController
|
||||||
|
|
||||||
// check battery
|
// check battery
|
||||||
$batt = null;
|
$batt = null;
|
||||||
$batt_id = $req->request->get('batt_id');
|
$batt_id = $req->request->get('battery_id', 0);
|
||||||
if ($empty($batt_id))
|
if (!empty($batt_id))
|
||||||
{
|
{
|
||||||
$batt = $em->getRepository(Battery::class)->find($batt_id);
|
$batt = $em->getRepository(Battery::class)->find($batt_id);
|
||||||
if ($batt == null)
|
if ($batt == null)
|
||||||
|
|
@ -1667,7 +1682,7 @@ class JobOrderController extends APIController
|
||||||
}
|
}
|
||||||
|
|
||||||
$vmanu = null;
|
$vmanu = null;
|
||||||
$vmanu_id = $r->get('vehicle_manufacturer');
|
$vmanu_id = $r->get('vehicle_manufacturer_id', 0);
|
||||||
// validate the vehicle manufacturer id
|
// validate the vehicle manufacturer id
|
||||||
// find vehicle manufacturer
|
// find vehicle manufacturer
|
||||||
$vmanu = $em->getRepository(VehicleManufacturer::class)->find($vmanu_id);
|
$vmanu = $em->getRepository(VehicleManufacturer::class)->find($vmanu_id);
|
||||||
|
|
@ -1678,23 +1693,39 @@ class JobOrderController extends APIController
|
||||||
}
|
}
|
||||||
|
|
||||||
$vmodel = null;
|
$vmodel = null;
|
||||||
$vmodel_id = $r->get('vehicle_model');
|
$vmodel_id = $r->get('vehicle_model_id', 0);
|
||||||
// validate the vehicle model id
|
// validate the vehicle model id
|
||||||
// find vehicle
|
// find vehicle
|
||||||
$vmodel = $em->getRepository(Vehicle::class)->find($vmodel_id);
|
$vmodel = $em->getRepository(Vehicle::class)->find($vmodel_id);
|
||||||
if ($vmodel = null)
|
if ($vmodel == null)
|
||||||
{
|
{
|
||||||
$message = 'Invalid vehicle model id.';
|
$message = 'Invalid vehicle model id.';
|
||||||
return $message;
|
return $message;
|
||||||
}
|
}
|
||||||
|
|
||||||
// confirm that vehicle model's manufacturer is the same as the one in vehicle
|
// confirm that vehicle model's manufacturer is the same as the one in vehicle
|
||||||
if ($vmodel->getManufacturer()->getID != $vmanu_id)
|
if ($vmodel->getManufacturer()->getID() != $vmanu_id)
|
||||||
{
|
{
|
||||||
$message = 'Invalid vehicle manufacturer id for vehicle model.';
|
$message = 'Invalid vehicle manufacturer id for vehicle model.';
|
||||||
return $message;
|
return $message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// validate vehicle condition
|
||||||
|
$v_condition = $this->cleanText($r->get('vehicle_condition', ''));
|
||||||
|
if (!VehicleStatusCondition::validate($v_condition))
|
||||||
|
{
|
||||||
|
$message = 'Invalid vehicle condition.';
|
||||||
|
return $message;
|
||||||
|
}
|
||||||
|
|
||||||
|
// validate fuel type
|
||||||
|
$fuel_type = $this->cleanText($r->get('vehicle_fuel_type', ''));
|
||||||
|
if (!FuelType::validate($fuel_type))
|
||||||
|
{
|
||||||
|
$message = 'Invalid vehicle fuel type.';
|
||||||
|
return $message;
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1714,8 +1745,8 @@ class JobOrderController extends APIController
|
||||||
$cust_vehicle = null;
|
$cust_vehicle = null;
|
||||||
|
|
||||||
// find customer + customer vehicle combo
|
// find customer + customer vehicle combo
|
||||||
$cv = $this->findCustomerAndCustomerVehicle($data, $em);
|
$cust_vehicle = $this->findCustomerAndCustomerVehicle($data, $em);
|
||||||
if ($cv == null)
|
if ($cust_vehicle == null)
|
||||||
{
|
{
|
||||||
// find customer given phone number
|
// find customer given phone number
|
||||||
$cust = $em->getRepository(Customer::class)->findOneBy(['phone_mobile' => $mobile]);
|
$cust = $em->getRepository(Customer::class)->findOneBy(['phone_mobile' => $mobile]);
|
||||||
|
|
@ -1749,34 +1780,39 @@ class JobOrderController extends APIController
|
||||||
$em->persist($cust);
|
$em->persist($cust);
|
||||||
|
|
||||||
// add customer vehicle
|
// add customer vehicle
|
||||||
$cust_vehicle = $this->createCustomerVehicle($em, $cust, $vehicle);
|
$cust_vehicle = $this->createCustomerVehicle($em, $cust, $data);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// create customer vehicle
|
// create customer vehicle
|
||||||
$cust_vehicle = $this->createCustomerVehicle($em, $cust, $vehicle);
|
$cust_vehicle = $this->createCustomerVehicle($em, $cust, $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
$em->flush();
|
$em->flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
$c_data = [
|
$c_data = [
|
||||||
'customer' => $cust,
|
'customer' => $cust_vehicle->getCustomer(),
|
||||||
'customer_vehicle' => $cust_vehicle,
|
'customer_vehicle' => $cust_vehicle,
|
||||||
];
|
];
|
||||||
|
|
||||||
return $c_data;
|
return $c_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function createCustomerVehicle(EntityManagerInterface $em, Customer $cust, Vehicle $vehicle)
|
protected function createCustomerVehicle(EntityManagerInterface $em, Customer $cust, $data)
|
||||||
{
|
{
|
||||||
// add customer vehicle
|
// add customer vehicle
|
||||||
$cust_vehicle = new CustomerVehicle();
|
$cust_vehicle = new CustomerVehicle();
|
||||||
|
|
||||||
$cust_vehicle->setCustomer($cust)
|
$cust_vehicle->setCustomer($cust)
|
||||||
->setPlateNumber($plate_number)
|
->setPlateNumber($data['plate_number'])
|
||||||
->setVehicle($vehicle);
|
->setVehicle($data['vehicle'])
|
||||||
|
->setModelYear($data['model_year'])
|
||||||
|
->setStatusCondition($data['condition'])
|
||||||
|
->setColor($data['color'])
|
||||||
|
->setHasMotoliteBattery(true)
|
||||||
|
->setFuelType($data['fuel_type']);
|
||||||
|
|
||||||
$em->persist($cust_vehicle);
|
$em->persist($cust_vehicle);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue