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')
+
+