From 59f06d7a5a1df96bd608ce06647d4afa44641d93 Mon Sep 17 00:00:00 2001 From: Kendrick Chan Date: Sun, 14 Mar 2021 20:06:07 +0800 Subject: [PATCH] Add odometer and date purchase (customer) to entity and api calls #540 --- src/Controller/APIController.php | 43 ++++++++++++++++++++++- src/Entity/Warranty.php | 58 ++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+), 1 deletion(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index e6d8b7a4..d51ad931 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -2798,6 +2798,8 @@ class APIController extends Controller implements LoggedController return $res->getReturnResponse(); } + $today = new DateTime(); + // if we have a warranty entry for the serial already 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 ($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 = [ 'first_name' => $warr->getFirstName(), 'last_name' => $warr->getLastName(), 'mobile_number' => $mobile_num, 'plate_number' => $warr_plate, ]; + $other_data = [ + 'odometer' => $warr->getOdometer(), + 'date_purchase' => $date_purchase_cust, + ]; } else { @@ -2836,6 +2847,10 @@ class APIController extends Controller implements LoggedController 'mobile_number' => '', 'plate_number' => '', ]; + $other_data = [ + 'odometer' => 0, + 'date_purchase' => $today->format('Y-m-d'), + ]; } } else @@ -2847,6 +2862,10 @@ class APIController extends Controller implements LoggedController 'mobile_number' => '', 'plate_number' => '', ]; + $other_data = [ + 'odometer' => 0, + 'date_purchase' => $today->format('Y-m-d'), + ]; } $sku = $warr_serial->getSKU(); @@ -2877,6 +2896,8 @@ class APIController extends Controller implements LoggedController 'can_edit' => $can_edit, 'customer' => $customer, 'battery' => $battery, + 'odometer' => $other_data['odometer'], + 'date_purchase' => $other_data['date_purchase'], 'message' => [ 'register_error' => 'Warranty serial code has already been registered.', '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', 'email', 'plate_number', + 'odometer', + 'date_purchase', ]; // handle file uploads @@ -3006,8 +3029,19 @@ class APIController extends Controller implements LoggedController return $res; } + // default date purchase to today + // NOTE: might need to change this later $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 $warr->setSerial($serial) @@ -3025,8 +3059,15 @@ class APIController extends Controller implements LoggedController ->setSAPBattery($sap_bty) ->setMobileNumber(substr($this->session->getPhoneNumber(), 2)) ->setActivated(true) + + // files ->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 diff --git a/src/Entity/Warranty.php b/src/Entity/Warranty.php index 25eafc6a..a8da644b 100644 --- a/src/Entity/Warranty.php +++ b/src/Entity/Warranty.php @@ -142,6 +142,9 @@ class Warranty 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 /** * @ORM\Column(type="string", length=80, nullable=true) @@ -154,6 +157,26 @@ class Warranty */ 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() { $this->date_create = new DateTime(); @@ -162,6 +185,8 @@ class Warranty $this->date_claim = null; $this->flag_activated = false; $this->email = ''; + $this->odometer = 0; + $this->flag_validated = false; } public function getID() @@ -447,4 +472,37 @@ class Warranty 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; + } + }