Add route for getEstimate. Modify getEstimate for third party api. #686
This commit is contained in:
parent
7985ec8f34
commit
f486a1b5a0
2 changed files with 150 additions and 68 deletions
|
|
@ -6,6 +6,11 @@ tapi_jo_request:
|
||||||
controller: App\Controller\TAPI\JobOrderController::requestJobOrder
|
controller: App\Controller\TAPI\JobOrderController::requestJobOrder
|
||||||
methods: [POST]
|
methods: [POST]
|
||||||
|
|
||||||
|
tapi_estimate:
|
||||||
|
path: /tapi/estimate
|
||||||
|
controller: App\Controller\TAPI\JobOrderController::getEstimate
|
||||||
|
methods: [POST]
|
||||||
|
|
||||||
# vehicle manufacturer and vehicle
|
# vehicle manufacturer and vehicle
|
||||||
tapi_vehicle_mfg_list:
|
tapi_vehicle_mfg_list:
|
||||||
path: /tapi/vehicle/mfgs
|
path: /tapi/vehicle/mfgs
|
||||||
|
|
|
||||||
|
|
@ -412,78 +412,26 @@ class JobOrderController extends APIController
|
||||||
// check required parameters and api key
|
// check required parameters and api key
|
||||||
$required_params = [
|
$required_params = [
|
||||||
'service_type',
|
'service_type',
|
||||||
'vehicle_id',
|
'vehicle_model_id',
|
||||||
];
|
];
|
||||||
$msg = $this->checkRequiredParameters($req, $required_params);
|
$msg = $this->checkRequiredParameters($req, $required_params);
|
||||||
if ($msg)
|
if ($msg)
|
||||||
return new APIResponse(false, $msg);
|
return new APIResponse(false, $msg);
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$msg = $this->validateAndGetEstimateRequest($req, $em, $data);
|
||||||
|
if ($msg != null)
|
||||||
|
return new APIResponse(false, $msg);
|
||||||
|
|
||||||
// make invoice criteria
|
// make invoice criteria
|
||||||
$icrit = new InvoiceCriteria();
|
$icrit = new InvoiceCriteria();
|
||||||
$icrit->setServiceType($req->request->get('service_type'));
|
$icrit->setServiceType($data['service_type']);
|
||||||
|
$icrit->setCustomerVehicle($data['customer_vehicle']);
|
||||||
|
|
||||||
// check promo
|
if ($data['promo'] != null)
|
||||||
$promo_id = $req->request->get('promo_id');
|
$icrit->addPromo($data['promo']);
|
||||||
if (!empty($promo_id))
|
|
||||||
{
|
|
||||||
$promo = $em->getRepository(Promo::class)->find($promo_id);
|
|
||||||
if ($promo == null)
|
|
||||||
{
|
|
||||||
$res->setError(true)
|
|
||||||
->setErrorMessage('Invalid promo id');
|
|
||||||
return $res->getReturnResponse();
|
|
||||||
}
|
|
||||||
|
|
||||||
// put in criteria
|
$icrit->addEntry($data['battery'], $data['trade_in_type'], 1);
|
||||||
$icrit->addPromo($promo);
|
|
||||||
}
|
|
||||||
|
|
||||||
// check customer vehicle
|
|
||||||
$cv = $em->getRepository(CustomerVehicle::class)->find($req->request->get('cv_id'));
|
|
||||||
if ($cv == null)
|
|
||||||
{
|
|
||||||
$res->setError(true)
|
|
||||||
->setErrorMessage('Invalid customer vehicle id');
|
|
||||||
return $res->getReturnResponse();
|
|
||||||
}
|
|
||||||
$icrit->setCustomerVehicle($cv);
|
|
||||||
|
|
||||||
// check if customer owns vehicle
|
|
||||||
if ($cust->getID() != $cv->getCustomer()->getID())
|
|
||||||
{
|
|
||||||
$res->setError(true)
|
|
||||||
->setErrorMessage('Customer does not own vehicle');
|
|
||||||
return $res->getReturnResponse();
|
|
||||||
}
|
|
||||||
|
|
||||||
// check battery
|
|
||||||
$batt_id = $req->request->get('batt_id');
|
|
||||||
if ($batt_id != null)
|
|
||||||
{
|
|
||||||
$batt = $em->getRepository(Battery::class)->find($batt_id);
|
|
||||||
if ($batt == null)
|
|
||||||
{
|
|
||||||
$res->setError(true)
|
|
||||||
->setErrorMessage('Invalid battery id');
|
|
||||||
return $res->getReturnResponse();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$batt = null;
|
|
||||||
|
|
||||||
$trade_in = $req->request->get('trade_in');
|
|
||||||
switch ($trade_in)
|
|
||||||
{
|
|
||||||
case TradeInType::MOTOLITE:
|
|
||||||
case TradeInType::OTHER:
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
$trade_in = '';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
$icrit->addEntry($batt, $trade_in, 1);
|
|
||||||
|
|
||||||
// send to invoice generator
|
// send to invoice generator
|
||||||
$invoice = $ic->generateInvoice($icrit);
|
$invoice = $ic->generateInvoice($icrit);
|
||||||
|
|
@ -517,10 +465,8 @@ class JobOrderController extends APIController
|
||||||
|
|
||||||
$data['items'] = $items_data;
|
$data['items'] = $items_data;
|
||||||
|
|
||||||
// set data
|
$message = 'Estimate computed.';
|
||||||
$res->setData($data);
|
return new APIResponse(true, $message, $data);
|
||||||
|
|
||||||
return $res->getReturnResponse();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getJOInvoice(Request $req, EntityManagerInterface $em)
|
public function getJOInvoice(Request $req, EntityManagerInterface $em)
|
||||||
|
|
@ -1663,6 +1609,18 @@ class JobOrderController extends APIController
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if service type is BATTERY_REPLACEMENT_WARRANTY or
|
||||||
|
// BATTERY_REPLACEMENT_NEW and if battery_id is empty
|
||||||
|
if (($stype == ServiceType::BATTERY_REPLACEMENT_NEW) ||
|
||||||
|
($stype == ServiceType::BATTERY_REPLACEMENT_WARRANTY))
|
||||||
|
{
|
||||||
|
if ($batt == null)
|
||||||
|
{
|
||||||
|
$message = 'battery_id cannot be empty for selected service type.';
|
||||||
|
return $message;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// validate mobile number
|
// validate mobile number
|
||||||
$mobile = $r->get('mobile_number', '');
|
$mobile = $r->get('mobile_number', '');
|
||||||
$clean_mobile = $this->cleanPhoneNumber($mobile);
|
$clean_mobile = $this->cleanPhoneNumber($mobile);
|
||||||
|
|
@ -1802,7 +1760,7 @@ class JobOrderController extends APIController
|
||||||
->setModelYear($data['model_year'])
|
->setModelYear($data['model_year'])
|
||||||
->setStatusCondition($data['condition'])
|
->setStatusCondition($data['condition'])
|
||||||
->setColor($data['color'])
|
->setColor($data['color'])
|
||||||
->setHasMotoliteBattery(true)
|
->setHasMotoliteBattery(false)
|
||||||
->setFuelType($data['fuel_type']);
|
->setFuelType($data['fuel_type']);
|
||||||
|
|
||||||
$em->persist($cust_vehicle);
|
$em->persist($cust_vehicle);
|
||||||
|
|
@ -1833,6 +1791,125 @@ class JobOrderController extends APIController
|
||||||
return $cust_vehicle;
|
return $cust_vehicle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function validateAndGetEstimateRequest(Request $req, EntityManagerInterface $em, &$data)
|
||||||
|
{
|
||||||
|
$r = $req->request;
|
||||||
|
|
||||||
|
// validate service type
|
||||||
|
$stype = $this->cleanText($r->get('service_type', ''));
|
||||||
|
if (!ServiceType::validate($stype))
|
||||||
|
{
|
||||||
|
$message = 'Invalid service type';
|
||||||
|
return $message;
|
||||||
|
}
|
||||||
|
|
||||||
|
$trade_in_type = $this->cleanText($r->get('trade_in_type', ''));
|
||||||
|
if ((!empty($trade_in_type)) &&
|
||||||
|
(!TradeInType::validate($trade_in_type)))
|
||||||
|
{
|
||||||
|
$message = 'Invalid trade in type';
|
||||||
|
return $message;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ($trade_in_type)
|
||||||
|
{
|
||||||
|
case TradeInType::MOTOLITE:
|
||||||
|
case TradeInType::OTHER:
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
$trade_in_type = '';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check battery
|
||||||
|
$batt = null;
|
||||||
|
$batt_id = $req->request->get('battery_id', 0);
|
||||||
|
if (!empty($batt_id))
|
||||||
|
{
|
||||||
|
$batt = $em->getRepository(Battery::class)->find($batt_id);
|
||||||
|
if ($batt == null)
|
||||||
|
{
|
||||||
|
$message = 'Invalid battery id';
|
||||||
|
return $message;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if service type is BATTERY_REPLACEMENT_WARRANTY or
|
||||||
|
// BATTERY_REPLACEMENT_NEW and if battery_id is empty
|
||||||
|
if (($stype == ServiceType::BATTERY_REPLACEMENT_NEW) ||
|
||||||
|
($stype == ServiceType::BATTERY_REPLACEMENT_WARRANTY))
|
||||||
|
{
|
||||||
|
if ($batt == null)
|
||||||
|
{
|
||||||
|
$message = 'battery_id cannot be empty for selected service type.';
|
||||||
|
return $message;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$vmodel = null;
|
||||||
|
$vmodel_id = $r->get('vehicle_model_id', 0);
|
||||||
|
// validate the vehicle model id
|
||||||
|
// find vehicle
|
||||||
|
$vmodel = $em->getRepository(Vehicle::class)->find($vmodel_id);
|
||||||
|
if ($vmodel == null)
|
||||||
|
{
|
||||||
|
$message = 'Invalid vehicle model id.';
|
||||||
|
return $message;
|
||||||
|
}
|
||||||
|
|
||||||
|
// validate fuel type
|
||||||
|
$fuel_type = $this->cleanText($r->get('vehicle_fuel_type', ''));
|
||||||
|
if ((!empty($fuel_type)) &&
|
||||||
|
(!FuelType::validate($fuel_type)))
|
||||||
|
{
|
||||||
|
$message = 'Invalid vehicle fuel type.';
|
||||||
|
return $message;
|
||||||
|
}
|
||||||
|
|
||||||
|
// validate promo
|
||||||
|
$promo = null;
|
||||||
|
$promo_id = $r->get('promo_id', 0);
|
||||||
|
if (!empty($promo_id))
|
||||||
|
{
|
||||||
|
$promo = $em->getRepository(Promo::class)->find($promo_id);
|
||||||
|
if ($promo == null)
|
||||||
|
{
|
||||||
|
$message = 'Invalid promo id';
|
||||||
|
return $message;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// invoice criteria needs a customer vehicle object
|
||||||
|
// with customer set. We create dummy customer vehicle object
|
||||||
|
// with dummy customer set
|
||||||
|
$dummy_cv = $this->createDummyCustomerVehicle($vmodel, $fuel_type);
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
'service_type' => $stype,
|
||||||
|
'trade_in_type' => $trade_in_type,
|
||||||
|
'vehicle' => $vmodel,
|
||||||
|
'battery' => $batt,
|
||||||
|
'fuel_type' => $fuel_type,
|
||||||
|
'promo' => $promo,
|
||||||
|
'customer_vehicle' => $dummy_cv,
|
||||||
|
];
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function createDummyCustomerVehicle($vmodel, $fuel_type)
|
||||||
|
{
|
||||||
|
$dummy_cv = new CustomerVehicle();
|
||||||
|
$dummy_cust = new Customer();
|
||||||
|
|
||||||
|
$dummy_cv->setCustomer($dummy_cust)
|
||||||
|
->setFuelType($fuel_type)
|
||||||
|
->setHasMotoliteBattery(false);
|
||||||
|
|
||||||
|
return $dummy_cv;
|
||||||
|
}
|
||||||
|
|
||||||
protected function cleanPhoneNumber($mobile)
|
protected function cleanPhoneNumber($mobile)
|
||||||
{
|
{
|
||||||
// remove any non digit character from string
|
// remove any non digit character from string
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue