Add setting of customer and vehicle when warranty is created via mobile API, rider API, and admin panel. #588

This commit is contained in:
Korina Cordero 2021-06-18 07:00:56 +00:00
parent d43a2a8206
commit 406df3d083
4 changed files with 40 additions and 5 deletions

View file

@ -40,6 +40,7 @@ use App\Service\InventoryManager;
use App\Service\RiderAssignmentHandlerInterface;
use App\Service\WarrantyAPILogger;
use App\Service\PromoLogger;
use App\Entity\MobileSession;
use App\Entity\Customer;
@ -3185,6 +3186,16 @@ class APIController extends Controller implements LoggedController
return $res;
}
$customer = $this->session->getCustomer();
if ($customer != null)
{
$warr->setCustomer($customer);
// get customer vehicles
$vehicle = $this->findCustomerVehicle($customer, $req->request->get('plate_number'));
if ($vehicle != null)
$warr->setVehicle($vehicle);
}
// create or update warranty entry
$warr->setSerial($serial)
@ -3259,6 +3270,26 @@ class APIController extends Controller implements LoggedController
return $cust;
}
protected function findCustomerVehicle($customer, $plate_number)
{
$clean_plate = Warranty::cleanPlateNumber($plate_number);
if ($clean_plate)
{
// find the customer vehicle and get the vehicle
$cust_vehicles = $customer->getVehicles();
foreach ($cust_vehicles as $cv)
{
if ($cv->getPlateNumber() == $clean_plate)
{
$vehicle = $cv->getVehicle();
return $vehicle;
}
}
}
return null;
}
protected function findNearestHub($jo, EntityManagerInterface $em, MapTools $map_tools)
{
// get the nearest 10 hubs

View file

@ -1062,7 +1062,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
$user_id = $user->getUsername();
$source = WarrantySource::ADMIN_PANEL;
$this->wh->createWarranty($serial, $plate_number, $first_name, $last_name, $mobile_number, $batt_list, $date_purchase, $warranty_class, $user_id, $source);
$this->wh->createWarranty($serial, $plate_number, $first_name, $last_name, $mobile_number, $batt_list, $date_purchase, $warranty_class, $user_id, $source, $obj->getCustomer(), $obj->getCustomerVehicle()->getVehicle());
}
else
error_log('Invalid plate number for warranty. Plate number = ' . $obj->getCustomerVehicle()->getPlateNumber());

View file

@ -602,7 +602,7 @@ class ResqRiderAPIHandler implements RiderAPIHandlerInterface
// for riders, use rider session id
$user_id = $this->session->getID();
$source = WarrantySource::RAPI;
$this->wh->createWarranty($serial, $plate_number, $first_name, $last_name, $mobile_number, $batt_list, $date_purchase, $warranty_class, $user_id, $source);
$this->wh->createWarranty($serial, $plate_number, $first_name, $last_name, $mobile_number, $batt_list, $date_purchase, $warranty_class, $user_id, $source, $jo->getCustomer(), $jo->getCustomerVehicle()->getVehicle());
}
// send mqtt event (fulfilled)

View file

@ -30,7 +30,8 @@ class WarrantyHandler
}
public function createWarranty($serial, $plate_number, $first_name, $last_name, $mobile_number,
$batt_list, DateTime $date_purchase, $warranty_class, $user_id, $source)
$batt_list, DateTime $date_purchase, $warranty_class, $user_id,
$source, $customer, $cust_vehicle)
{
// new warranty
$warranty = new Warranty();
@ -94,7 +95,9 @@ class WarrantyHandler
->setMobileNumber($mobile_number)
->setDatePurchase($date_purchase)
->setWarrantyClass($warranty_class)
->setCreateSource($source);
->setCreateSource($source)
->setCustomer($customer)
->setVehicle($cust_vehicle);
$this->em->persist($warranty);
$this->em->flush();
@ -362,7 +365,8 @@ class WarrantyHandler
public function cleanPlateNumber($plate)
{
// remove spaces and make upper case
// TODO: make this more like Warranty's static cleanPlateNumber?
// remove spaces and make upper case
return strtoupper(str_replace(' ', '', $plate));
}