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['total_height'] = $orow[0]->getTotalHeight();
|
||||||
$row['image_file'] = $orow[0]->getImageFile();
|
$row['image_file'] = $orow[0]->getImageFile();
|
||||||
$row['flag_active'] = $orow[0]->isActive();
|
$row['flag_active'] = $orow[0]->isActive();
|
||||||
|
$row['flag_subscription'] = $orow[0]->isSubscription();
|
||||||
|
|
||||||
// add row metadata
|
// add row metadata
|
||||||
$row['meta'] = [
|
$row['meta'] = [
|
||||||
|
|
@ -184,7 +185,8 @@ class BatteryController extends Controller
|
||||||
->setTotalHeight($req->request->get('total_height'))
|
->setTotalHeight($req->request->get('total_height'))
|
||||||
->setSellingPrice($req->request->get('sell_price'))
|
->setSellingPrice($req->request->get('sell_price'))
|
||||||
->setImageFile($req->request->get('image_file'))
|
->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
|
// initialize error list
|
||||||
$error_array = [];
|
$error_array = [];
|
||||||
|
|
@ -311,6 +313,7 @@ class BatteryController extends Controller
|
||||||
->setSellingPrice($req->request->get('sell_price'))
|
->setSellingPrice($req->request->get('sell_price'))
|
||||||
->setImageFile($req->request->get('image_file'))
|
->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))
|
||||||
->clearVehicles();
|
->clearVehicles();
|
||||||
|
|
||||||
// initialize error list
|
// initialize error list
|
||||||
|
|
|
||||||
|
|
@ -261,7 +261,10 @@ class VehicleController extends ApiController
|
||||||
$lng = $req->query->get('longitude', '');
|
$lng = $req->query->get('longitude', '');
|
||||||
$lat = $req->query->get('latitude', '');
|
$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;
|
$pt_id = 0;
|
||||||
if ((!(empty($lng))) && (!(empty($lat))))
|
if ((!(empty($lng))) && (!(empty($lat))))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -153,6 +153,12 @@ class Battery
|
||||||
*/
|
*/
|
||||||
protected $flag_active;
|
protected $flag_active;
|
||||||
|
|
||||||
|
// flag if battery is used for subscriptions
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="boolean", options={"default": false})
|
||||||
|
*/
|
||||||
|
protected $flag_subscription;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->vehicles = new ArrayCollection();
|
$this->vehicles = new ArrayCollection();
|
||||||
|
|
@ -167,6 +173,7 @@ class Battery
|
||||||
$this->date_create = new DateTime();
|
$this->date_create = new DateTime();
|
||||||
|
|
||||||
$this->flag_active = true;
|
$this->flag_active = true;
|
||||||
|
$this->flag_subscription = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getID()
|
public function getID()
|
||||||
|
|
@ -396,9 +403,20 @@ class Battery
|
||||||
return $this->flag_active;
|
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;
|
return $this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -180,11 +180,20 @@ class Vehicle
|
||||||
return $this->cust_vehicles;
|
return $this->cust_vehicles;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getActiveBatteries()
|
public function getActiveBatteries($is_subscription = false)
|
||||||
{
|
{
|
||||||
$crit = Criteria::create();
|
$crit = Criteria::create();
|
||||||
$crit->where(Criteria::expr()->eq('flag_active', true));
|
$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);
|
return $this->batteries->matching($crit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -101,20 +101,34 @@
|
||||||
<div class="form-control-feedback hide" data-field="size"></div>
|
<div class="form-control-feedback hide" data-field="size"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group m-form__group row">
|
<div class="form-group m-form__group row">
|
||||||
<div class="col-lg-4">
|
<div class="col-lg-4">
|
||||||
<span class="m-switch m-switch--icon block-switch">
|
<span class="m-switch m-switch--icon block-switch">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" name="flag_active" id="flag_active" value="1"{{ obj.isActive() ? ' checked' }}>
|
<input type="checkbox" name="flag_active" id="flag_active" value="1"{{ obj.isActive() ? ' checked' }}>
|
||||||
<label class="switch-label">Active</label>
|
<label class="switch-label">Active</label>
|
||||||
<span></span>
|
<span></span>
|
||||||
</label>
|
</label>
|
||||||
</span>
|
</span>
|
||||||
<div class="form-control-feedback hide" data-field="flag_active"></div>
|
<div class="form-control-feedback hide" data-field="flag_active"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-8">
|
<div class="col-lg-8">
|
||||||
</div>
|
</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_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="form-group m-form__group row">
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<label data-field="image_file">
|
<label data-field="image_file">
|
||||||
|
|
|
||||||
|
|
@ -111,21 +111,36 @@
|
||||||
title: 'Brand',
|
title: 'Brand',
|
||||||
width: 120
|
width: 120
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'flag_active',
|
field: 'flag_active',
|
||||||
title: 'Active',
|
title: 'Active',
|
||||||
template: function (row, index, datatable) {
|
template: function (row, index, datatable) {
|
||||||
var tag = '';
|
var tag = '';
|
||||||
|
|
||||||
if (row.flag_active === true) {
|
if (row.flag_active === true) {
|
||||||
tag = '<span class="m-badge m-badge--success m-badge--wide">Yes</span>';
|
tag = '<span class="m-badge m-badge--success m-badge--wide">Yes</span>';
|
||||||
} else {
|
} else {
|
||||||
tag = '<span class="m-badge m-badge--danger m-badge--wide">No</span>';
|
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',
|
field: 'prod_code',
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue