From 3d5676679662b11a2da42975715e54b20c52d6ea Mon Sep 17 00:00:00 2001 From: diashalabi Date: Fri, 1 Oct 2021 16:12:39 +0300 Subject: [PATCH] #2480 Sales Reports --- .../assets/js/admin/dashboard/report.js | 26 +++++++++-- .../Controller/Admin/ReportController.php | 44 ++++++++++++++----- 2 files changed, 55 insertions(+), 15 deletions(-) diff --git a/addons/default/visiosoft/profile-module/resources/assets/js/admin/dashboard/report.js b/addons/default/visiosoft/profile-module/resources/assets/js/admin/dashboard/report.js index bd649e8d1..cc498893d 100644 --- a/addons/default/visiosoft/profile-module/resources/assets/js/admin/dashboard/report.js +++ b/addons/default/visiosoft/profile-module/resources/assets/js/admin/dashboard/report.js @@ -1,7 +1,16 @@ $(document).ready( function () { $('#newMemberReport').DataTable({ - ajax: '/admin/api/profile/report/latest', - order: [[ 1, "desc" ]], + ajax: { + url: '/admin/api/profile/report/latest', + dataSrc( json ) { + json.recordsTotal = json.total; + json.recordsFiltered = json.total; + + return json.data; + } + }, + processing: true, + serverSide: true, columns: [ { data: 'member', defaultContent: usersReportTrans.undefined_member }, { data: 'date' }, @@ -9,8 +18,17 @@ $(document).ready( function () { }); $('#loginMemberReport').DataTable({ - ajax: '/admin/api/profile/report/login', - order: [[ 1, "desc" ]], + ajax: { + url: '/admin/api/profile/report/login', + dataSrc( json ) { + json.recordsTotal = json.total; + json.recordsFiltered = json.total; + + return json.data; + } + }, + processing: true, + serverSide: true, columns: [ { data: 'member', defaultContent: usersReportTrans.undefined_member }, { data: 'date' }, diff --git a/addons/default/visiosoft/profile-module/src/Http/Controller/Admin/ReportController.php b/addons/default/visiosoft/profile-module/src/Http/Controller/Admin/ReportController.php index cb27c4684..481369ad0 100644 --- a/addons/default/visiosoft/profile-module/src/Http/Controller/Admin/ReportController.php +++ b/addons/default/visiosoft/profile-module/src/Http/Controller/Admin/ReportController.php @@ -17,13 +17,24 @@ class ReportController extends AdminController public function latest() { $members = $this->userRepository->newQuery() - ->selectRaw("DATE_FORMAT(created_at, '%d.%m.%Y %H:%i') as date, CONCAT_WS('', first_name, ' ', last_name) AS member") - ->where('created_at', '>=', Carbon::today()->subWeek()) - ->get(); + ->selectRaw("DATE_FORMAT(created_at, '%d.%m.%Y %H:%i') as date, CONCAT_WS('', first_name, ' ', last_name) AS member, id AS user_id") + ->where('created_at', '>=', Carbon::today()->subWeek()); - return [ - 'data' => $members - ]; + if ($search = request('search.value')) { + $members = $members->whereRaw(" + (SELECT CONCAT_WS('', first_name, ' ', last_name) AS member) LIKE '%$search%' + "); + } + + if ($orderDir = request('order.0.dir')) { + $members = $members->orderBy('member', $orderDir); + } + + $start = request('start'); + $limit = request('length') ?: 10; + $page = $start ? $start / $limit + 1 : 1; + + return $members->paginate($limit, ['*'], 'page', $page); } public function login() @@ -31,11 +42,22 @@ class ReportController extends AdminController $members = $this->userRepository->newQuery() ->selectRaw("DATE_FORMAT(last_login_at, '%d.%m.%Y %H:%i') as date, CONCAT_WS('', first_name, ' ', last_name) AS member") ->whereNotNull('last_login_at') - ->where('last_login_at', '>=', Carbon::today()->subWeek()) - ->get(); + ->where('last_login_at', '>=', Carbon::today()->subWeek()); - return [ - 'data' => $members - ]; + if ($search = request('search.value')) { + $members = $members->whereRaw(" + (SELECT CONCAT_WS('', first_name, ' ', last_name) AS member) LIKE '%$search%' + "); + } + + if ($orderDir = request('order.0.dir')) { + $members = $members->orderBy('member', $orderDir); + } + + $start = request('start'); + $limit = request('length') ?: 10; + $page = $start ? $start / $limit + 1 : 1; + + return $members->paginate($limit, ['*'], 'page', $page); } }