Add odometer and date purchase (customer) to entity and api calls #540

This commit is contained in:
Kendrick Chan 2021-03-14 20:06:07 +08:00
parent 6a6b93e087
commit 59f06d7a5a
2 changed files with 100 additions and 1 deletions

View file

@ -2798,6 +2798,8 @@ class APIController extends Controller implements LoggedController
return $res->getReturnResponse(); return $res->getReturnResponse();
} }
$today = new DateTime();
// if we have a warranty entry for the serial already // if we have a warranty entry for the serial already
if ($warr != null) if ($warr != null)
{ {
@ -2820,12 +2822,21 @@ class APIController extends Controller implements LoggedController
// if customer plate number matches the one registered on the warranty // if customer plate number matches the one registered on the warranty
if ($is_customer_warranty) if ($is_customer_warranty)
{ {
if ($warr->getDatePurchaseCustomer() != null)
$date_purchase_cust = $warr->getDatePurchaseCustomer()->format('Y-m-d');
else
$date_purchase_cust = $today->format('Y-m-d');
$customer = [ $customer = [
'first_name' => $warr->getFirstName(), 'first_name' => $warr->getFirstName(),
'last_name' => $warr->getLastName(), 'last_name' => $warr->getLastName(),
'mobile_number' => $mobile_num, 'mobile_number' => $mobile_num,
'plate_number' => $warr_plate, 'plate_number' => $warr_plate,
]; ];
$other_data = [
'odometer' => $warr->getOdometer(),
'date_purchase' => $date_purchase_cust,
];
} }
else else
{ {
@ -2836,6 +2847,10 @@ class APIController extends Controller implements LoggedController
'mobile_number' => '', 'mobile_number' => '',
'plate_number' => '', 'plate_number' => '',
]; ];
$other_data = [
'odometer' => 0,
'date_purchase' => $today->format('Y-m-d'),
];
} }
} }
else else
@ -2847,6 +2862,10 @@ class APIController extends Controller implements LoggedController
'mobile_number' => '', 'mobile_number' => '',
'plate_number' => '', 'plate_number' => '',
]; ];
$other_data = [
'odometer' => 0,
'date_purchase' => $today->format('Y-m-d'),
];
} }
$sku = $warr_serial->getSKU(); $sku = $warr_serial->getSKU();
@ -2877,6 +2896,8 @@ class APIController extends Controller implements LoggedController
'can_edit' => $can_edit, 'can_edit' => $can_edit,
'customer' => $customer, 'customer' => $customer,
'battery' => $battery, 'battery' => $battery,
'odometer' => $other_data['odometer'],
'date_purchase' => $other_data['date_purchase'],
'message' => [ 'message' => [
'register_error' => 'Warranty serial code has already been registered.', 'register_error' => 'Warranty serial code has already been registered.',
'edit_error' => 'Sorry, warranty is registered under another vehicle not in your list of vehicles.', 'edit_error' => 'Sorry, warranty is registered under another vehicle not in your list of vehicles.',
@ -2928,6 +2949,8 @@ class APIController extends Controller implements LoggedController
'last_name', 'last_name',
'email', 'email',
'plate_number', 'plate_number',
'odometer',
'date_purchase',
]; ];
// handle file uploads // handle file uploads
@ -3006,8 +3029,19 @@ class APIController extends Controller implements LoggedController
return $res; return $res;
} }
// default date purchase to today
// NOTE: might need to change this later
$date_pur = new DateTime(); $date_pur = new DateTime();
// get date purchase specified by customer
$date_pur_cust = DateTime::createFromFormat('Y-m-d', $req->request->get('date_purchase'));
if (!$date_pur_cust)
{
$res->setError(true)
->setErrorMessage('Invalid date format for date of purchase.');
return $res;
}
// create or update warranty entry // create or update warranty entry
$warr->setSerial($serial) $warr->setSerial($serial)
@ -3025,8 +3059,15 @@ class APIController extends Controller implements LoggedController
->setSAPBattery($sap_bty) ->setSAPBattery($sap_bty)
->setMobileNumber(substr($this->session->getPhoneNumber(), 2)) ->setMobileNumber(substr($this->session->getPhoneNumber(), 2))
->setActivated(true) ->setActivated(true)
// files
->setFileInvoice($inv_filename) ->setFileInvoice($inv_filename)
->setFileWarrantyCard($wcard_filename); ->setFileWarrantyCard($wcard_filename)
// new fields
->setOdometer($req->request->get('odometer', 0))
->setDatePurchaseCustomer($date_pur_cust)
->setValidated(false);
// TODO: check for date purchase and date expire // TODO: check for date purchase and date expire

View file

@ -142,6 +142,9 @@ class Warranty
protected $privacy_policy; protected $privacy_policy;
// NOTE: the following were added later on, so they should all be nullable or have defaults,
// otherwise we get issues
// invoice picture // invoice picture
/** /**
* @ORM\Column(type="string", length=80, nullable=true) * @ORM\Column(type="string", length=80, nullable=true)
@ -154,6 +157,26 @@ class Warranty
*/ */
protected $file_warr_card; protected $file_warr_card;
// odometer reading
/**
* @ORM\Column(type="integer", nullable=true)
*/
protected $odometer;
// date purchase as specified by customer
// TODO: currently this does not affect warranty, someone will have to view this and set
// actual purchase date
/**
* @ORM\Column(type="date", nullable=true)
*/
protected $date_purchase_cust;
// if the warranty has been validated by an agent
/**
* @ORM\Column(type="boolean", options={"default": false})
*/
protected $flag_validated;
public function __construct() public function __construct()
{ {
$this->date_create = new DateTime(); $this->date_create = new DateTime();
@ -162,6 +185,8 @@ class Warranty
$this->date_claim = null; $this->date_claim = null;
$this->flag_activated = false; $this->flag_activated = false;
$this->email = ''; $this->email = '';
$this->odometer = 0;
$this->flag_validated = false;
} }
public function getID() public function getID()
@ -447,4 +472,37 @@ class Warranty
return $this->file_warr_card; return $this->file_warr_card;
} }
public function setOdometer($odometer)
{
$this->odometer = $odometer;
return $this;
}
public function getOdometer()
{
return $this->odometer;
}
public function setDatePurchaseCustomer($date)
{
$this->date_purchase_cust = $date;
return $this;
}
public function getDatePurchaseCustomer()
{
return $this->date_purchase_cust;
}
public function setValidated($bool = true)
{
$this->flag_validated = $bool;
return $this;
}
public function isValidated()
{
return $this->flag_validated;
}
} }