akaunting/app/Widgets/ExpensesByCategory.php

38 lines
1.1 KiB
PHP
Raw Permalink Normal View History

2019-11-16 10:21:14 +03:00
<?php
namespace App\Widgets;
2019-12-29 03:01:19 +03:00
use App\Abstracts\Widget;
2019-11-16 10:21:14 +03:00
use App\Models\Setting\Category;
2019-12-29 03:01:19 +03:00
class ExpensesByCategory extends Widget
2019-11-16 10:21:14 +03:00
{
2020-01-16 00:42:20 +03:00
public $default_name = 'widgets.expenses_by_category';
2020-01-10 17:49:31 +03:00
2022-06-01 10:15:55 +03:00
public $description = 'widgets.description.expenses_by_category';
public $report_class = 'App\Reports\ExpenseSummary';
2020-01-10 17:49:31 +03:00
2019-12-29 03:01:19 +03:00
public function show()
2019-11-16 10:21:14 +03:00
{
2023-06-13 15:06:23 +03:00
Category::with('expense_transactions')->expense()->withSubCategory()->getWithoutChildren()->each(function ($category) {
2019-11-16 10:21:14 +03:00
$amount = 0;
2020-06-08 18:48:59 +03:00
$this->applyFilters($category->expense_transactions)->each(function ($transaction) use (&$amount) {
$amount += $transaction->getAmountConvertedToDefault();
});
2019-11-16 10:21:14 +03:00
2022-08-13 17:33:19 +03:00
$this->addMoneyToDonutChart($category->colorHexCode, $amount, $category->name);
2019-12-29 03:01:19 +03:00
});
2019-11-16 10:21:14 +03:00
2022-06-01 10:15:55 +03:00
$chart = $this->getDonutChart(trans_choice('general.expenses', 2), '100%', 300, 6);
2019-11-16 10:21:14 +03:00
2022-06-10 17:39:14 +03:00
$chart->options['legend']['width'] = 160;
2022-06-09 14:52:26 +03:00
$chart->options['legend']['position'] = 'right';
2022-07-21 11:46:18 +03:00
2020-01-03 19:00:38 +03:00
return $this->view('widgets.donut_chart', [
2019-12-28 22:30:10 +03:00
'chart' => $chart,
2019-11-16 10:21:14 +03:00
]);
}
}