Add support for retrieving subscription specific compatible battery #799
This commit is contained in:
parent
874c35bfff
commit
74c45b6d18
6 changed files with 94 additions and 32 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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))))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,20 +101,34 @@
|
|||
<div class="form-control-feedback hide" data-field="size"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-4">
|
||||
<span class="m-switch m-switch--icon block-switch">
|
||||
<label>
|
||||
<input type="checkbox" name="flag_active" id="flag_active" value="1"{{ obj.isActive() ? ' checked' }}>
|
||||
<label class="switch-label">Active</label>
|
||||
<span></span>
|
||||
</label>
|
||||
</span>
|
||||
<div class="form-control-feedback hide" data-field="flag_active"></div>
|
||||
</div>
|
||||
<div class="col-lg-8">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-4">
|
||||
<span class="m-switch m-switch--icon block-switch">
|
||||
<label>
|
||||
<input type="checkbox" name="flag_active" id="flag_active" value="1"{{ obj.isActive() ? ' checked' }}>
|
||||
<label class="switch-label">Active</label>
|
||||
<span></span>
|
||||
</label>
|
||||
</span>
|
||||
<div class="form-control-feedback hide" data-field="flag_active"></div>
|
||||
</div>
|
||||
<div class="col-lg-8">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-4">
|
||||
<span class="m-switch m-switch--icon block-switch">
|
||||
<label>
|
||||
<input type="checkbox" name="flag_subscription" id="flag_subscription" value="1"{{ obj.isSubscription() ? ' checked' }}>
|
||||
<label class="switch-label">Used for subscriptions</label>
|
||||
<span></span>
|
||||
</label>
|
||||
</span>
|
||||
<div class="form-control-feedback hide" data-field="flag_subscription"></div>
|
||||
</div>
|
||||
<div class="col-lg-8">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-6">
|
||||
<label data-field="image_file">
|
||||
|
|
|
|||
|
|
@ -111,21 +111,36 @@
|
|||
title: 'Brand',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
field: 'flag_active',
|
||||
title: 'Active',
|
||||
template: function (row, index, datatable) {
|
||||
var tag = '';
|
||||
{
|
||||
field: 'flag_active',
|
||||
title: 'Active',
|
||||
template: function (row, index, datatable) {
|
||||
var tag = '';
|
||||
|
||||
if (row.flag_active === true) {
|
||||
tag = '<span class="m-badge m-badge--success m-badge--wide">Yes</span>';
|
||||
} else {
|
||||
tag = '<span class="m-badge m-badge--danger m-badge--wide">No</span>';
|
||||
}
|
||||
if (row.flag_active === true) {
|
||||
tag = '<span class="m-badge m-badge--success m-badge--wide">Yes</span>';
|
||||
} else {
|
||||
tag = '<span class="m-badge m-badge--danger m-badge--wide">No</span>';
|
||||
}
|
||||
|
||||
return tag;
|
||||
}
|
||||
},
|
||||
return tag;
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'flag_subscription',
|
||||
title: 'Subscription',
|
||||
template: function (row, index, datatable) {
|
||||
var tag = '';
|
||||
|
||||
if (row.flag_subscription === true) {
|
||||
tag = '<span class="m-badge m-badge--success m-badge--wide">Yes</span>';
|
||||
} else {
|
||||
tag = '<span class="m-badge m-badge--danger m-badge--wide">No</span>';
|
||||
}
|
||||
|
||||
return tag;
|
||||
}
|
||||
},
|
||||
/*
|
||||
{
|
||||
field: 'prod_code',
|
||||
|
|
|
|||
Loading…
Reference in a new issue