diff --git a/src/Controller/BatteryController.php b/src/Controller/BatteryController.php index b63e52e9..e27e3b7a 100644 --- a/src/Controller/BatteryController.php +++ b/src/Controller/BatteryController.php @@ -118,6 +118,7 @@ class BatteryController extends Controller $row['total_height'] = $orow[0]->getTotalHeight(); $row['image_file'] = $orow[0]->getImageFile(); $row['flag_active'] = $orow[0]->isActive(); + $row['flag_subscription'] = $orow[0]->isSubscription(); // add row metadata $row['meta'] = [ @@ -184,7 +185,8 @@ class BatteryController extends Controller ->setTotalHeight($req->request->get('total_height')) ->setSellingPrice($req->request->get('sell_price')) ->setImageFile($req->request->get('image_file')) - ->setActive($req->request->get('flag_active', false)); + ->setActive($req->request->get('flag_active', false)) + ->setSubscription($req->request->get('flag_subscription', false)); // initialize error list $error_array = []; @@ -311,6 +313,7 @@ class BatteryController extends Controller ->setSellingPrice($req->request->get('sell_price')) ->setImageFile($req->request->get('image_file')) ->setActive($req->request->get('flag_active', false)) + ->setSubscription($req->request->get('flag_subscription', false)) ->clearVehicles(); // initialize error list diff --git a/src/Controller/CustomerAppAPI/VehicleController.php b/src/Controller/CustomerAppAPI/VehicleController.php index dfde6985..1e1710ff 100644 --- a/src/Controller/CustomerAppAPI/VehicleController.php +++ b/src/Controller/CustomerAppAPI/VehicleController.php @@ -261,7 +261,10 @@ class VehicleController extends ApiController $lng = $req->query->get('longitude', ''); $lat = $req->query->get('latitude', ''); - $batts = $vehicle->getActiveBatteries(); + // if for subscription purposes, get only the most qualified model either by tag or price + $is_subscription = $req->query->get('is_subscription', false); + + $batts = $vehicle->getActiveBatteries($is_subscription); $pt_id = 0; if ((!(empty($lng))) && (!(empty($lat)))) { diff --git a/src/Entity/Battery.php b/src/Entity/Battery.php index 89104bcf..bb92fe29 100644 --- a/src/Entity/Battery.php +++ b/src/Entity/Battery.php @@ -153,6 +153,12 @@ class Battery */ protected $flag_active; + // flag if battery is used for subscriptions + /** + * @ORM\Column(type="boolean", options={"default": false}) + */ + protected $flag_subscription; + public function __construct() { $this->vehicles = new ArrayCollection(); @@ -167,6 +173,7 @@ class Battery $this->date_create = new DateTime(); $this->flag_active = true; + $this->flag_subscription = false; } public function getID() @@ -396,9 +403,20 @@ class Battery return $this->flag_active; } - public function setActive($flag_active = true) + public function setActive($flag_subscription = true) { - $this->flag_active = $flag_active; + $this->flag_subscription = $flag_subscription; + return $this; + } + + public function isSubscription() + { + return $this->flag_subscription; + } + + public function setSubscription($flag_subscription = true) + { + $this->flag_subscription = $flag_subscription; return $this; } } diff --git a/src/Entity/Vehicle.php b/src/Entity/Vehicle.php index 97a35da4..ace580c1 100644 --- a/src/Entity/Vehicle.php +++ b/src/Entity/Vehicle.php @@ -180,11 +180,20 @@ class Vehicle return $this->cust_vehicles; } - public function getActiveBatteries() + public function getActiveBatteries($is_subscription = false) { $crit = Criteria::create(); $crit->where(Criteria::expr()->eq('flag_active', true)); + // if by subscrpiption, order first by if it is a subscription battery, then by descending price + if ($is_subscription) { + $crit->orderBy([ + 'flag_subscription' => 'desc', + 'sell_price' => 'desc', + ]) + ->setMaxResults(1); + } + return $this->batteries->matching($crit); } } diff --git a/templates/battery/form.html.twig b/templates/battery/form.html.twig index 4ac05437..6d3c3adb 100644 --- a/templates/battery/form.html.twig +++ b/templates/battery/form.html.twig @@ -101,20 +101,34 @@
-
-
- - - - -
-
-
-
+
+
+ + + + +
+
+
+
+
+
+ + + + +
+
+
+