close #1053 Added: Dashboard date filter

This commit is contained in:
Cüneyt Şentürk
2019-12-30 12:30:30 +03:00
parent 237b161fe0
commit bd0598b4d4
14 changed files with 152 additions and 56 deletions

View File

@ -29,6 +29,18 @@ abstract class Widget extends AbstractWidget
return $this->show();
}
public function applyFilters($model, $args = ['date_field' => 'paid_at'])
{
if (empty(request()->get('start_date', null))) {
return $model;
}
$start_date = request()->get('start_date') . ' 00:00:00';
$end_date = request()->get('end_date') . ' 23:59:59';
return $model->whereBetween($args['date_field'], [$start_date, $end_date]);
}
public function calculateDocumentTotals($model)
{
$open = $overdue = 0;

View File

@ -7,9 +7,12 @@ use App\Abstracts\Http\Controller;
use App\Models\Common\Dashboard as Model;
use App\Models\Common\DashboardWidget;
use App\Http\Requests\Common\Dashboard as Request;
use App\Traits\DateTime;
class Dashboard extends Controller
{
use DateTime;
/**
* Display a listing of the resource.
*
@ -42,7 +45,9 @@ class Dashboard extends Controller
->where('user_id', $user_id)
->orderBy('sort', 'asc')->get();
return view('common.dashboard.index', compact('dashboards','dashboard', 'widgets'));
$financial_start = $this->getFinancialStart()->format('Y-m-d');
return view('common.dashboard.index', compact('dashboards','dashboard', 'widgets', 'financial_start'));
}
/**

View File

@ -137,7 +137,7 @@ class CashFlow extends Widget
}
}
$items = Transaction::type($type)->whereBetween('paid_at', [$start, $end])->isNotTransfer()->get();
$items = $this->applyFilters(Transaction::type($type)->whereBetween('paid_at', [$start, $end])->isNotTransfer())->get();
$this->setTotals($totals, $items, $date_format, $period);

View File

@ -16,7 +16,9 @@ class ExpensesByCategory extends Widget
Category::with('expense_transactions')->type('expense')->enabled()->each(function ($category) {
$amount = 0;
foreach ($category->expense_transactions as $transacion) {
$transactions = $this->applyFilters($category->expense_transactions())->get();
foreach ($transactions as $transacion) {
$amount += $transacion->getAmountConvertedToDefault();
}

View File

@ -16,7 +16,9 @@ class IncomeByCategory extends Widget
Category::with('income_transacions')->type('income')->enabled()->each(function ($category) {
$amount = 0;
foreach ($category->income_transacions as $transacion) {
$transactions = $this->applyFilters($category->income_transacions())->get();
foreach ($transactions as $transacion) {
$amount += $transacion->getAmountConvertedToDefault();
}

View File

@ -9,11 +9,11 @@ class LatestExpenses extends Widget
{
public function show()
{
$transactions = Transaction::with('category')->type('expense')->orderBy('paid_at', 'desc')->isNotTransfer()->take(5)->get();
$transactions = $this->applyFilters(Transaction::with('category')->type('expense')->orderBy('paid_at', 'desc')->isNotTransfer()->take(5))->get();
return view('widgets.latest_expenses', [
'config' => (object) $this->config,
'transactions' => $transactions,
]);
}
}
}

View File

@ -9,11 +9,11 @@ class LatestIncome extends Widget
{
public function show()
{
$transactions = Transaction::with('category')->type('income')->orderBy('paid_at', 'desc')->isNotTransfer()->take(5)->get();
$transactions = $this->applyFilters(Transaction::with('category')->type('income')->orderBy('paid_at', 'desc')->isNotTransfer()->take(5))->get();
return view('widgets.latest_income', [
'config' => (object) $this->config,
'transactions' => $transactions,
]);
}
}
}

View File

@ -12,11 +12,11 @@ class TotalExpenses extends Widget
{
$current = $open = $overdue = 0;
Transaction::type('expense')->isNotTransfer()->each(function ($transaction) use (&$current) {
$this->applyFilters(Transaction::type('expense')->isNotTransfer())->each(function ($transaction) use (&$current) {
$current += $transaction->getAmountConvertedToDefault();
});
Bill::accrued()->notPaid()->each(function ($bill) use (&$open, &$overdue) {
$this->applyFilters(Bill::accrued()->notPaid(), ['date_field' => 'created_at'])->each(function ($bill) use (&$open, &$overdue) {
list($open_tmp, $overdue_tmp) = $this->calculateDocumentTotals($bill);
$open += $open_tmp;

View File

@ -12,11 +12,11 @@ class TotalIncome extends Widget
{
$current = $open = $overdue = 0;
Transaction::type('income')->isNotTransfer()->each(function ($transaction) use (&$current) {
$this->applyFilters(Transaction::type('income')->isNotTransfer())->each(function ($transaction) use (&$current) {
$current += $transaction->getAmountConvertedToDefault();
});
Invoice::accrued()->notPaid()->each(function ($invoice) use (&$open, &$overdue) {
$this->applyFilters(Invoice::accrued()->notPaid(), ['date_field' => 'created_at'])->each(function ($invoice) use (&$open, &$overdue) {
list($open_tmp, $overdue_tmp) = $this->calculateDocumentTotals($invoice);
$open += $open_tmp;

View File

@ -14,7 +14,7 @@ class TotalProfit extends Widget
$current_income = $open_invoice = $overdue_invoice = 0;
$current_expenses = $open_bill = $overdue_bill = 0;
Transaction::isNotTransfer()->each(function ($transaction) use (&$current_income, &$current_expenses) {
$this->applyFilters(Transaction::isNotTransfer())->each(function ($transaction) use (&$current_income, &$current_expenses) {
$amount = $transaction->getAmountConvertedToDefault();
if ($transaction->type == 'income') {
@ -24,14 +24,14 @@ class TotalProfit extends Widget
}
});
Invoice::accrued()->notPaid()->each(function ($invoice) use (&$open_invoice, &$overdue_invoice) {
$this->applyFilters(Invoice::accrued()->notPaid(), ['date_field' => 'created_at'])->each(function ($invoice) use (&$open_invoice, &$overdue_invoice) {
list($open_tmp, $overdue_tmp) = $this->calculateDocumentTotals($invoice);
$open_invoice += $open_tmp;
$overdue_invoice += $overdue_tmp;
});
Bill::accrued()->notPaid()->each(function ($bill) use (&$open_bill, &$overdue_bill) {
$this->applyFilters(Bill::accrued()->notPaid(), ['date_field' => 'created_at'])->each(function ($bill) use (&$open_bill, &$overdue_bill) {
list($open_tmp, $overdue_tmp) = $this->calculateDocumentTotals($bill);
$open_bill += $open_tmp;