From c208c336eb8a4fddee1032d716a0e8513cddd052 Mon Sep 17 00:00:00 2001 From: denisdulici Date: Wed, 22 Jan 2020 19:05:49 +0300 Subject: [PATCH] refactored report listeners --- app/Abstracts/Listeners/Report.php | 74 +--------------- ...aryReport.php => AddAccountsToReports.php} | 27 +++--- ...ryReport.php => AddCustomersToReports.php} | 25 ++---- app/Listeners/Common/AddDateToReports.php | 49 +++++++++++ .../Common/AddExpenseCategoriesToReports.php | 54 ++++++++++++ .../Common/AddIncomeCategoriesToReports.php | 54 ++++++++++++ app/Listeners/Common/AddSearchToReports.php | 49 +++++++++++ app/Listeners/Common/AddVendorsToReports.php | 61 ++++++++++++++ app/Listeners/Common/IncomeSummaryReport.php | 84 ------------------- app/Listeners/Common/ProfitLossReport.php | 10 --- app/Listeners/Common/TaxSummaryReport.php | 10 --- app/Providers/Event.php | 12 +-- 12 files changed, 299 insertions(+), 210 deletions(-) rename app/Listeners/Common/{ExpenseSummaryReport.php => AddAccountsToReports.php} (59%) rename app/Listeners/Common/{IncomeExpenseSummaryReport.php => AddCustomersToReports.php} (54%) create mode 100644 app/Listeners/Common/AddDateToReports.php create mode 100644 app/Listeners/Common/AddExpenseCategoriesToReports.php create mode 100644 app/Listeners/Common/AddIncomeCategoriesToReports.php create mode 100644 app/Listeners/Common/AddSearchToReports.php create mode 100644 app/Listeners/Common/AddVendorsToReports.php delete mode 100644 app/Listeners/Common/IncomeSummaryReport.php delete mode 100644 app/Listeners/Common/ProfitLossReport.php delete mode 100644 app/Listeners/Common/TaxSummaryReport.php diff --git a/app/Abstracts/Listeners/Report.php b/app/Abstracts/Listeners/Report.php index 85ba4ad0a..d97f43cb9 100644 --- a/app/Abstracts/Listeners/Report.php +++ b/app/Abstracts/Listeners/Report.php @@ -2,10 +2,6 @@ namespace App\Abstracts\Listeners; -use App\Events\Common\ReportFilterApplying; -use App\Events\Common\ReportFilterShowing; -use App\Events\Common\ReportGroupApplying; -use App\Events\Common\ReportGroupShowing; use App\Models\Banking\Account; use App\Models\Common\Contact; use App\Models\Setting\Category; @@ -16,7 +12,7 @@ abstract class Report { use Contacts; - protected $class = ''; + protected $classes = []; protected $events = [ 'App\Events\Common\ReportFilterShowing', @@ -25,9 +21,9 @@ abstract class Report 'App\Events\Common\ReportGroupApplying', ]; - public function checkClass($event) + public function skipThisClass($event) { - return (get_class($event->class) == $this->class); + return (empty($event->class) || !in_array(get_class($event->class), $this->classes)); } public function getYears() @@ -137,70 +133,6 @@ abstract class Report } } - /** - * Handle filter showing event. - * - * @param $event - * @return void - */ - public function handleReportFilterShowing(ReportFilterShowing $event) - { - if (!$this->checkClass($event)) { - return; - } - - $event->class->filters['years'] = $this->getYears(); - } - - /** - * Handle filter applying event. - * - * @param $event - * @return void - */ - public function handleReportFilterApplying(ReportFilterApplying $event) - { - if (!$this->checkClass($event)) { - return; - } - - // Apply date - $this->applyDateFilter($event); - - // Apply search - $this->applySearchStringFilter($event); - } - - /** - * Handle group showing event. - * - * @param $event - * @return void - */ - public function handleReportGroupShowing(ReportGroupShowing $event) - { - if (!$this->checkClass($event)) { - return; - } - - $event->class->groups['category'] = trans_choice('general.categories', 1); - } - - /** - * Handle group applying event. - * - * @param $event - * @return void - */ - public function handleReportGroupApplying(ReportGroupApplying $event) - { - if (!$this->checkClass($event)) { - return; - } - - $this->applyAccountGroup($event); - } - /** * Register the listeners for the subscriber. * diff --git a/app/Listeners/Common/ExpenseSummaryReport.php b/app/Listeners/Common/AddAccountsToReports.php similarity index 59% rename from app/Listeners/Common/ExpenseSummaryReport.php rename to app/Listeners/Common/AddAccountsToReports.php index e3aca2d38..519c47bb5 100644 --- a/app/Listeners/Common/ExpenseSummaryReport.php +++ b/app/Listeners/Common/AddAccountsToReports.php @@ -3,14 +3,19 @@ namespace App\Listeners\Common; use App\Abstracts\Listeners\Report as Listener; -use App\Events\Common\ReportFilterApplying; use App\Events\Common\ReportFilterShowing; use App\Events\Common\ReportGroupApplying; use App\Events\Common\ReportGroupShowing; -class ExpenseSummaryReport extends Listener +class AddAccountsToReports extends Listener { - protected $class = 'App\Reports\ExpenseSummary'; + protected $classes = [ + 'App\Reports\IncomeSummary', + 'App\Reports\ExpenseSummary', + 'App\Reports\IncomeExpenseSummary', + 'App\Reports\ProfitLoss', + 'App\Reports\TaxSummary', + ]; /** * Handle filter showing event. @@ -20,14 +25,11 @@ class ExpenseSummaryReport extends Listener */ public function handleReportFilterShowing(ReportFilterShowing $event) { - if (!$this->checkClass($event)) { + if ($this->skipThisClass($event)) { return; } - $event->class->filters['years'] = $this->getYears(); $event->class->filters['accounts'] = $this->getAccounts(); - $event->class->filters['categories'] = $this->getExpenseCategories(); - $event->class->filters['vendors'] = $this->getVendors(); } /** @@ -38,28 +40,25 @@ class ExpenseSummaryReport extends Listener */ public function handleReportGroupShowing(ReportGroupShowing $event) { - if (!$this->checkClass($event)) { + if ($this->skipThisClass($event)) { return; } - $event->class->groups['category'] = trans_choice('general.categories', 1); $event->class->groups['account'] = trans_choice('general.accounts', 1); - $event->class->groups['vendor'] = trans_choice('general.vendors', 1); } /** - * Handle group applyinh event. + * Handle group applying event. * * @param $event * @return void */ public function handleReportGroupApplying(ReportGroupApplying $event) { - if (!$this->checkClass($event)) { + if ($this->skipThisClass($event)) { return; } - $this->applyVendorGroup($event); $this->applyAccountGroup($event); } -} \ No newline at end of file +} diff --git a/app/Listeners/Common/IncomeExpenseSummaryReport.php b/app/Listeners/Common/AddCustomersToReports.php similarity index 54% rename from app/Listeners/Common/IncomeExpenseSummaryReport.php rename to app/Listeners/Common/AddCustomersToReports.php index 9f6c709e2..0bb818c11 100644 --- a/app/Listeners/Common/IncomeExpenseSummaryReport.php +++ b/app/Listeners/Common/AddCustomersToReports.php @@ -3,14 +3,16 @@ namespace App\Listeners\Common; use App\Abstracts\Listeners\Report as Listener; -use App\Events\Common\ReportFilterApplying; use App\Events\Common\ReportFilterShowing; use App\Events\Common\ReportGroupApplying; use App\Events\Common\ReportGroupShowing; -class IncomeExpenseSummaryReport extends Listener +class AddCustomersToReports extends Listener { - protected $class = 'App\Reports\IncomeExpenseSummary'; + protected $classes = [ + 'App\Reports\IncomeSummary', + 'App\Reports\IncomeExpenseSummary', + ]; /** * Handle filter showing event. @@ -20,15 +22,11 @@ class IncomeExpenseSummaryReport extends Listener */ public function handleReportFilterShowing(ReportFilterShowing $event) { - if (!$this->checkClass($event)) { + if ($this->skipThisClass($event)) { return; } - $event->class->filters['years'] = $this->getYears(); - $event->class->filters['accounts'] = $this->getAccounts(); - $event->class->filters['categories'] = $this->getIncomeExpenseCategories(); $event->class->filters['customers'] = $this->getCustomers(); - $event->class->filters['vendors'] = $this->getVendors(); } /** @@ -39,14 +37,11 @@ class IncomeExpenseSummaryReport extends Listener */ public function handleReportGroupShowing(ReportGroupShowing $event) { - if (!$this->checkClass($event)) { + if ($this->skipThisClass($event)) { return; } - $event->class->groups['category'] = trans_choice('general.categories', 1); - $event->class->groups['account'] = trans_choice('general.accounts', 1); $event->class->groups['customer'] = trans_choice('general.customers', 1); - $event->class->groups['vendor'] = trans_choice('general.vendors', 1); } /** @@ -57,12 +52,10 @@ class IncomeExpenseSummaryReport extends Listener */ public function handleReportGroupApplying(ReportGroupApplying $event) { - if (!$this->checkClass($event)) { + if ($this->skipThisClass($event)) { return; } $this->applyCustomerGroup($event); - $this->applyVendorGroup($event); - $this->applyAccountGroup($event); } -} \ No newline at end of file +} diff --git a/app/Listeners/Common/AddDateToReports.php b/app/Listeners/Common/AddDateToReports.php new file mode 100644 index 000000000..8a34afbf9 --- /dev/null +++ b/app/Listeners/Common/AddDateToReports.php @@ -0,0 +1,49 @@ +skipThisClass($event)) { + return; + } + + $event->class->filters['years'] = $this->getYears(); + } + + /** + * Handle filter applying event. + * + * @param $event + * @return void + */ + public function handleReportFilterApplying(ReportFilterApplying $event) + { + if ($this->skipThisClass($event)) { + return; + } + + // Apply date + $this->applyDateFilter($event); + } +} diff --git a/app/Listeners/Common/AddExpenseCategoriesToReports.php b/app/Listeners/Common/AddExpenseCategoriesToReports.php new file mode 100644 index 000000000..54a811245 --- /dev/null +++ b/app/Listeners/Common/AddExpenseCategoriesToReports.php @@ -0,0 +1,54 @@ +class) || !in_array(get_class($event->class), $classes)) { + return; + } + + $categories = !empty($event->class->filters['categories']) ? $event->class->filters['categories'] : []; + + $event->class->filters['categories'] = array_merge($categories, $this->getExpenseCategories()); + } + + /** + * Handle group showing event. + * + * @param $event + * @return void + */ + public function handleReportGroupShowing(ReportGroupShowing $event) + { + $classes = [ + 'App\Reports\ExpenseSummary', + 'App\Reports\IncomeExpenseSummary', + 'App\Reports\ProfitLoss', + 'App\Reports\TaxSummary', + ]; + + if (empty($event->class) || !in_array(get_class($event->class), $classes)) { + return; + } + + $event->class->groups['category'] = trans_choice('general.categories', 1); + } +} diff --git a/app/Listeners/Common/AddIncomeCategoriesToReports.php b/app/Listeners/Common/AddIncomeCategoriesToReports.php new file mode 100644 index 000000000..64b953a60 --- /dev/null +++ b/app/Listeners/Common/AddIncomeCategoriesToReports.php @@ -0,0 +1,54 @@ +class) || !in_array(get_class($event->class), $classes)) { + return; + } + + $categories = !empty($event->class->filters['categories']) ? $event->class->filters['categories'] : []; + + $event->class->filters['categories'] = array_merge($categories, $this->getIncomeCategories()); + } + + /** + * Handle group showing event. + * + * @param $event + * @return void + */ + public function handleReportGroupShowing(ReportGroupShowing $event) + { + $classes = [ + 'App\Reports\IncomeSummary', + 'App\Reports\IncomeExpenseSummary', + 'App\Reports\ProfitLoss', + 'App\Reports\TaxSummary', + ]; + + if (empty($event->class) || !in_array(get_class($event->class), $classes)) { + return; + } + + $event->class->groups['category'] = trans_choice('general.categories', 1); + } +} diff --git a/app/Listeners/Common/AddSearchToReports.php b/app/Listeners/Common/AddSearchToReports.php new file mode 100644 index 000000000..ea12abe2e --- /dev/null +++ b/app/Listeners/Common/AddSearchToReports.php @@ -0,0 +1,49 @@ +skipThisClass($event)) { + return; + } + + //$event->class->filters['search'] = $this->getSearch(); + } + + /** + * Handle filter applying event. + * + * @param $event + * @return void + */ + public function handleReportFilterApplying(ReportFilterApplying $event) + { + if ($this->skipThisClass($event)) { + return; + } + + // Apply date + $this->applySearchStringFilter($event); + } +} diff --git a/app/Listeners/Common/AddVendorsToReports.php b/app/Listeners/Common/AddVendorsToReports.php new file mode 100644 index 000000000..b25027368 --- /dev/null +++ b/app/Listeners/Common/AddVendorsToReports.php @@ -0,0 +1,61 @@ +skipThisClass($event)) { + return; + } + + $event->class->filters['vendors'] = $this->getVendors(); + } + + /** + * Handle group showing event. + * + * @param $event + * @return void + */ + public function handleReportGroupShowing(ReportGroupShowing $event) + { + if ($this->skipThisClass($event)) { + return; + } + + $event->class->groups['vendor'] = trans_choice('general.vendors', 1); + } + + /** + * Handle group applying event. + * + * @param $event + * @return void + */ + public function handleReportGroupApplying(ReportGroupApplying $event) + { + if ($this->skipThisClass($event)) { + return; + } + + $this->applyVendorGroup($event); + } +} diff --git a/app/Listeners/Common/IncomeSummaryReport.php b/app/Listeners/Common/IncomeSummaryReport.php deleted file mode 100644 index c5f11c4a7..000000000 --- a/app/Listeners/Common/IncomeSummaryReport.php +++ /dev/null @@ -1,84 +0,0 @@ -checkClass($event)) { - return; - } - - $event->class->filters['years'] = $this->getYears(); - $event->class->filters['accounts'] = $this->getAccounts(); - $event->class->filters['categories'] = $this->getIncomeCategories(); - $event->class->filters['customers'] = $this->getCustomers(); - } - - /** - * Handle filter applying event. - * - * @param $event - * @return void - */ - public function handleReportFilterApplying(ReportFilterApplying $event) - { - if (!$this->checkClass($event)) { - return; - } - - // Apply date - $this->applyDateFilter($event); - - // Apply search - $this->applySearchStringFilter($event); - } - - /** - * Handle group showing event. - * - * @param $event - * @return void - */ - public function handleReportGroupShowing(ReportGroupShowing $event) - { - if (!$this->checkClass($event)) { - return; - } - - $event->class->groups['category'] = trans_choice('general.categories', 1); - $event->class->groups['account'] = trans_choice('general.accounts', 1); - $event->class->groups['customer'] = trans_choice('general.customers', 1); - } - - /** - * Handle group applying event. - * - * @param $event - * @return void - */ - public function handleReportGroupApplying(ReportGroupApplying $event) - { - if (!$this->checkClass($event)) { - return; - } - - $this->applyCustomerGroup($event); - $this->applyAccountGroup($event); - } -} \ No newline at end of file diff --git a/app/Listeners/Common/ProfitLossReport.php b/app/Listeners/Common/ProfitLossReport.php deleted file mode 100644 index 4675e9efc..000000000 --- a/app/Listeners/Common/ProfitLossReport.php +++ /dev/null @@ -1,10 +0,0 @@ -