fetch customer info, one at a time
DRY filter for orders lists
This commit is contained in:
parent
c5ee8af6ef
commit
f8fc0e0ebe
2 changed files with 46 additions and 76 deletions
|
|
@ -33,55 +33,7 @@ class OrdersController extends Controller
|
|||
{
|
||||
//$orders = Order::orderBy('date', 'DESC')->get();
|
||||
|
||||
$orders = Order::query();
|
||||
|
||||
|
||||
if ($request->rst) {
|
||||
Session::remove('orders.sort_col');
|
||||
Session::remove('orders.sort_way');
|
||||
}
|
||||
if ($request->sort_col) {
|
||||
Session::put('orders.sort_col', $request->sort_col);
|
||||
Session::save();
|
||||
}
|
||||
if ($request->sort_way) {
|
||||
Session::put('orders.sort_way', $request->sort_way);
|
||||
Session::save();
|
||||
}
|
||||
|
||||
if (Session::has('orders.sort_col') and Session::has('orders.sort_way')) {
|
||||
switch (Session::get('orders.sort_col')) {
|
||||
case 'date':
|
||||
$orders = $orders->orderBy('date', Session::get('orders.sort_way'));
|
||||
break;
|
||||
case 'status_id':
|
||||
$orders = $orders->orderBy('status_id', Session::get('orders.sort_way'));
|
||||
break;
|
||||
case 'magasin_id':
|
||||
$orders = $orders->select('orders.*');
|
||||
$orders = $orders->leftJoin('timeslots', 'timeslots.order_id', '=', 'orders.id');
|
||||
$orders = $orders->leftJoin('magasins', 'timeslots.magasin_id', '=', 'magasins.id');
|
||||
$orders = $orders->orderBy('magasins.id', Session::get('orders.sort_way'));
|
||||
break;
|
||||
case 'date_retrait':
|
||||
$orders = $orders->select('orders.*');
|
||||
$orders = $orders->leftJoin('timeslots', 'timeslots.order_id', '=', 'orders.id');
|
||||
$orders = $orders->orderBy('timeslots.day', Session::get('orders.sort_way'));
|
||||
$orders = $orders->orderBy('timeslots.time', Session::get('orders.sort_way'));
|
||||
break;
|
||||
case 'customer_id':
|
||||
$orders = $orders->orderBy('customer_id', Session::get('orders.sort_way'));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($request->today) {
|
||||
//filter
|
||||
$today = CarbonImmutable::now()->startOfDay();
|
||||
$orders = $orders->whereHas('timeslot', function($q) use($today) {
|
||||
$q->where('day', '=', $today->format('d/m/Y'));
|
||||
});
|
||||
}
|
||||
$orders = $this->filterOrders($request);
|
||||
|
||||
$orders = $orders->paginate(10);
|
||||
|
||||
|
|
@ -92,6 +44,21 @@ class OrdersController extends Controller
|
|||
{
|
||||
//$orders = Order::orderBy('date', 'DESC')->get();
|
||||
|
||||
$orders = $this->filterOrders($request);
|
||||
|
||||
//filter today
|
||||
$today = CarbonImmutable::now()->startOfDay();
|
||||
$orders = $orders->whereHas('timeslot', function($q) use($today) {
|
||||
$q->where('day', '=', $today->format('d/m/Y'));
|
||||
});
|
||||
|
||||
|
||||
$orders = $orders->get(); //paginate(20);
|
||||
|
||||
return view('bo.orders.index', compact('orders','today'));
|
||||
}
|
||||
|
||||
protected function filterOrders(Request $request) {
|
||||
$orders = Order::query();
|
||||
|
||||
|
||||
|
|
@ -134,17 +101,7 @@ class OrdersController extends Controller
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
//filter
|
||||
$today = CarbonImmutable::now()->startOfDay();
|
||||
$orders = $orders->whereHas('timeslot', function($q) use($today) {
|
||||
$q->where('day', '=', $today->format('d/m/Y'));
|
||||
});
|
||||
|
||||
|
||||
$orders = $orders->get(); //paginate(20);
|
||||
|
||||
return view('bo.orders.index', compact('orders','today'));
|
||||
return $orders;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -82,24 +82,37 @@
|
|||
var tippyShopContents = [];
|
||||
var customerInfo = [];
|
||||
|
||||
//to make sure we fetch only one at a time
|
||||
var _fetchingCustInfo = false;
|
||||
|
||||
function loadCustInfo(element) {
|
||||
if(!_fetchingCustInfo) {
|
||||
if(typeof customerInfo[element.dataset.custid] === 'undefined') {
|
||||
//fetch only if we don't already have the data
|
||||
_fetchingCustInfo = true;
|
||||
return fetch('/bo/customer-info/'+element.dataset.custid+'/json')
|
||||
.then(response => {
|
||||
return response.json();
|
||||
})
|
||||
.then(data => {
|
||||
customerInfo[element.dataset.custid] = data;
|
||||
element.innerHTML = data.firstname + ' ' + data.lastname;
|
||||
_fetchingCustInfo = false;
|
||||
})
|
||||
} else {
|
||||
//put text
|
||||
element.innerHTML = customerInfo[element.dataset.custid].firstname + ' ' + customerInfo[element.dataset.custid].lastname;
|
||||
//leave
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
setTimeout(function () {loadCustInfo(element)}, 250);
|
||||
}
|
||||
}
|
||||
|
||||
clientLinks = $('.ajax-tippy-cust');
|
||||
clientLinks.each(function(index,element){
|
||||
if(typeof customerInfo[element.dataset.custid] === 'undefined') {
|
||||
//carry on
|
||||
} else {
|
||||
//put text
|
||||
element.innerHTML = customerInfo[element.dataset.custid].firstname + ' ' + customerInfo[element.dataset.custid].lastname;
|
||||
//leave
|
||||
return;
|
||||
}
|
||||
fetch('/bo/customer-info/'+element.dataset.custid+'/json')
|
||||
.then(response => {
|
||||
return response.json();
|
||||
})
|
||||
.then(data => {
|
||||
customerInfo[element.dataset.custid] = data;
|
||||
element.innerHTML = data.firstname + ' ' + data.lastname;
|
||||
})
|
||||
return loadCustInfo(element);
|
||||
});
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue