From 9432009f0e864e484c53de7c67fadf7c71225e36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20=C5=9Eent=C3=BCrk?= Date: Fri, 4 Jun 2021 16:21:05 +0300 Subject: [PATCH] Portal dashboard added date filter --- app/Http/Controllers/Portal/Dashboard.php | 29 ++++++-- resources/assets/js/views/portal/dashboard.js | 37 +++++++++- .../views/portal/dashboard/index.blade.php | 74 +++++++++++++++++++ 3 files changed, 132 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/Portal/Dashboard.php b/app/Http/Controllers/Portal/Dashboard.php index afe3354df..a52668ba2 100644 --- a/app/Http/Controllers/Portal/Dashboard.php +++ b/app/Http/Controllers/Portal/Dashboard.php @@ -4,12 +4,13 @@ namespace App\Http\Controllers\Portal; use App\Models\Document\Document; use App\Traits\Charts; +use App\Traits\DateTime; use App\Utilities\Chartjs; use Date; class Dashboard { - use Charts; + use Charts, DateTime; /** * Display a listing of the resource. @@ -20,14 +21,25 @@ class Dashboard { $contact = user()->contact; - $invoices = Document::invoice()->accrued()->where('contact_id', $contact->id)->get(); + $financial_start = $this->getFinancialStart()->format('Y-m-d'); - $start = Date::parse(request('start', Date::today()->startOfYear()->format('Y-m-d'))); - $end = Date::parse(request('end', Date::today()->endOfYear()->format('Y-m-d'))); + // check and assign year start + if (($year_start = Date::today()->startOfYear()->format('Y-m-d')) !== $financial_start) { + $year_start = $financial_start; + } + + $start = Date::parse(request('start_date', $year_start)); + $end = Date::parse(request('end_date', Date::parse($year_start)->addYear(1)->subDays(1)->format('Y-m-d'))); + + //$invoices = Document::invoice()->accrued()->where('contact_id', $contact->id)->get(); + $invoices = Document::invoice()->accrued()->whereBetween('due_at', [$start, $end])->where('contact_id', $contact->id)->get(); $start_month = $start->month; $end_month = $end->month; + // look cashFlow widget + $end_month = $end->diffInMonths($start); + $start_month = 0; // Monthly $labels = []; @@ -89,7 +101,14 @@ class Dashboard ]) ->fill(false); - return view('portal.dashboard.index', compact('contact', 'invoices', 'totals', 'progress', 'chart')); + $date_picker_shortcuts = $this->getDatePickerShortcuts(); + + if (!request()->has('start_date')) { + request()->merge(['start_date' => $date_picker_shortcuts[trans('reports.this_year')]['start']]); + request()->merge(['end_date' => $date_picker_shortcuts[trans('reports.this_year')]['end']]); + } + + return view('portal.dashboard.index', compact('contact', 'invoices', 'totals', 'progress', 'chart', 'date_picker_shortcuts')); } private function calculateAmounts($invoices, $start, $end) diff --git a/resources/assets/js/views/portal/dashboard.js b/resources/assets/js/views/portal/dashboard.js index 727b2d987..4938391e6 100644 --- a/resources/assets/js/views/portal/dashboard.js +++ b/resources/assets/js/views/portal/dashboard.js @@ -12,20 +12,51 @@ import Vue from 'vue'; import DashboardPlugin from './../../plugins/dashboard-plugin'; import Global from './../../mixins/global'; +import {getQueryVariable} from './../../plugins/functions'; +import {DatePicker, Tooltip} from 'element-ui'; -import {Tooltip} from 'element-ui'; +Vue.use(DatePicker, Tooltip); // plugin setup -Vue.use(DashboardPlugin, Tooltip); +Vue.use(DashboardPlugin, DatePicker, Tooltip); const app = new Vue({ - el: '#app', + el: '#main-body', components: { + [DatePicker.name]: DatePicker, [Tooltip.name]: Tooltip, }, mixins: [ Global ], + + data: function () { + return { + filter_date: [], + }; + }, + + mounted() { + let start_date = getQueryVariable('start_date'); + + if (start_date) { + let end_date = getQueryVariable('end_date'); + + this.filter_date.push(start_date); + this.filter_date.push(end_date); + } + }, + + methods: { + // Global filter change date column + onChangeFilterDate() { + if (this.filter_date) { + window.location.href = url + '/portal?start_date=' + this.filter_date[0] + '&end_date=' + this.filter_date[1]; + } else { + window.location.href = url + '/portal'; + } + }, + } }); diff --git a/resources/views/portal/dashboard/index.blade.php b/resources/views/portal/dashboard/index.blade.php index 522cc68e0..464e487da 100644 --- a/resources/views/portal/dashboard/index.blade.php +++ b/resources/views/portal/dashboard/index.blade.php @@ -2,6 +2,71 @@ @section('title', trans_choice('general.dashboards', 1)) +@section('new_button') + + + +@endsection + @section('content')
@@ -12,6 +77,7 @@
{{ trans('general.paid') }}
{{ $totals['paid'] }}
+
@@ -19,6 +85,7 @@
+ +
@@ -34,6 +102,7 @@
{{ trans('general.unpaid') }}
{{ $totals['unpaid'] }}
+
@@ -41,6 +110,7 @@
+
+
@@ -56,6 +127,7 @@
{{ trans('general.overdue') }}
{{ $totals['overdue'] }}
+
@@ -63,6 +135,7 @@
+
+