From f4ff03b4ec6cf90be8f63e91882e9cddce56ef9f Mon Sep 17 00:00:00 2001 From: Ganes556 Date: Tue, 4 Feb 2025 10:09:45 +0800 Subject: [PATCH] #1414 add dashboard enum --- app/Actions/Traits/WithDashboard.php | 29 ++++++++++++++++++- .../UI/Dashboards/ShowGroupDashboard.php | 5 ++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/app/Actions/Traits/WithDashboard.php b/app/Actions/Traits/WithDashboard.php index 45775a0968..9e6b333606 100644 --- a/app/Actions/Traits/WithDashboard.php +++ b/app/Actions/Traits/WithDashboard.php @@ -11,8 +11,34 @@ namespace App\Actions\Traits; use App\Enums\DateIntervals\DateIntervalEnum; +use App\Enums\EnumHelperTrait; +use App\Enums\HasTabs; use Illuminate\Support\Arr; +enum DashboardIntervalTabsEnum: string +{ + use EnumHelperTrait; + use HasTabs; + + case SALES = 'sales'; + case ORDERS = 'orders'; + + public function blueprint(): array + { + return match ($this) { + DashboardIntervalTabsEnum::SALES => [ + 'title' => __('sales'), + 'icon' => 'fas fa-chart-line', + ], + DashboardIntervalTabsEnum::ORDERS => [ + 'title' => __('orders'), + 'icon' => 'fal fa-shopping-cart' + ], + }; + } +} + + trait WithDashboard { protected ?string $tabDashboardInterval = null; @@ -64,8 +90,9 @@ public function getWidget($type = 'basic', $colSpan = 1, $rowSpan = 1, array $ro ]; } - public function withTabDashboardInterval(array $tabs): static + public function withTabDashboardInterval(): static { + $tabs = DashboardIntervalTabsEnum::values(); $tab = $this->get('tab_dashboard_interval', Arr::first($tabs)); if (!in_array($tab, $tabs)) { diff --git a/app/Actions/UI/Dashboards/ShowGroupDashboard.php b/app/Actions/UI/Dashboards/ShowGroupDashboard.php index 533052aaec..856eda5a16 100644 --- a/app/Actions/UI/Dashboards/ShowGroupDashboard.php +++ b/app/Actions/UI/Dashboards/ShowGroupDashboard.php @@ -9,6 +9,7 @@ namespace App\Actions\UI\Dashboards; use App\Actions\OrgAction; +use App\Actions\Traits\DashboardIntervalTabsEnum; use App\Actions\Traits\WithDashboard; use App\Enums\SysAdmin\Organisation\OrganisationTypeEnum; use App\Models\SysAdmin\Group; @@ -62,7 +63,7 @@ public function getDashboardInterval(Group $group, array $userSettings): array ], 'tabs' => [ 'current' => $this->tabDashboardInterval, - 'navigation' => ['sales', 'profile'] + 'navigation' => DashboardIntervalTabsEnum::navigation() ], 'table' => [ @@ -258,7 +259,7 @@ public function getDashboardInterval(Group $group, array $userSettings): array public function asController(ActionRequest $request): Response { $group = group(); - $this->initialisationFromGroup($group, $request)->withTabDashboardInterval(['sales', 'profile']); + $this->initialisationFromGroup($group, $request)->withTabDashboardInterval(); return $this->handle($group); }