From f5842d0fa5cf74de18847838b04e8814df39e6df Mon Sep 17 00:00:00 2001 From: Ramon Rietdijk Date: Mon, 5 Aug 2024 15:36:23 +0200 Subject: [PATCH] Added actions for the Nova resource (#1) * Added actions for the Nova resource * Made use of Nova::serving --- src/Nova/Actions/CleanBulkRequests.php | 26 +++++++++++++++++++++++ src/Nova/Actions/UpdateBulkStatus.php | 28 +++++++++++++++++++++++++ src/Nova/Actions/UpdateBulkStatuses.php | 26 +++++++++++++++++++++++ src/Nova/BulkRequestResource.php | 10 ++++++++- src/ServiceProvider.php | 10 +++++---- 5 files changed, 95 insertions(+), 5 deletions(-) create mode 100644 src/Nova/Actions/CleanBulkRequests.php create mode 100644 src/Nova/Actions/UpdateBulkStatus.php create mode 100644 src/Nova/Actions/UpdateBulkStatuses.php diff --git a/src/Nova/Actions/CleanBulkRequests.php b/src/Nova/Actions/CleanBulkRequests.php new file mode 100644 index 0000000..0e27ceb --- /dev/null +++ b/src/Nova/Actions/CleanBulkRequests.php @@ -0,0 +1,26 @@ +withName(__('Clean bulk requests')) + ->standalone(); + } + + public function handle(ActionFields $fields, Collection $models): ActionResponse + { + CleanBulkRequestsJob::dispatch(); + + return ActionResponse::message(__('Cleaning...')); + } +} diff --git a/src/Nova/Actions/UpdateBulkStatus.php b/src/Nova/Actions/UpdateBulkStatus.php new file mode 100644 index 0000000..9b77e88 --- /dev/null +++ b/src/Nova/Actions/UpdateBulkStatus.php @@ -0,0 +1,28 @@ +withName(__('Update bulk status')); + } + + /** @param Collection $models */ + public function handle(ActionFields $fields, Collection $models): ActionResponse + { + $models->each(function (BulkRequest $bulkRequest): void { + UpdateBulkStatusJob::dispatch($bulkRequest); + }); + + return ActionResponse::message(__('Updating...')); + } +} diff --git a/src/Nova/Actions/UpdateBulkStatuses.php b/src/Nova/Actions/UpdateBulkStatuses.php new file mode 100644 index 0000000..400752a --- /dev/null +++ b/src/Nova/Actions/UpdateBulkStatuses.php @@ -0,0 +1,26 @@ +withName(__('Update bulk statuses')) + ->standalone(); + } + + public function handle(ActionFields $fields, Collection $models): ActionResponse + { + UpdateBulkStatusesJob::dispatch(); + + return ActionResponse::message(__('Updating...')); + } +} diff --git a/src/Nova/BulkRequestResource.php b/src/Nova/BulkRequestResource.php index 0e1846a..dbbf749 100644 --- a/src/Nova/BulkRequestResource.php +++ b/src/Nova/BulkRequestResource.php @@ -2,7 +2,6 @@ namespace JustBetter\MagentoAsyncNova\Nova; -use Illuminate\Database\Eloquent\Builder; use Illuminate\Http\Request; use JustBetter\MagentoAsync\Enums\OperationStatus; use JustBetter\MagentoAsync\Models\BulkRequest; @@ -135,6 +134,15 @@ public function fields(NovaRequest $request): array ]; } + public function actions(NovaRequest $request): array + { + return [ + Actions\CleanBulkRequests::make(), + Actions\UpdateBulkStatus::make(), + Actions\UpdateBulkStatuses::make(), + ]; + } + public function filters(NovaRequest $request): array { return [ diff --git a/src/ServiceProvider.php b/src/ServiceProvider.php index ae9433d..a5cb5f5 100644 --- a/src/ServiceProvider.php +++ b/src/ServiceProvider.php @@ -38,10 +38,12 @@ protected function bootConfig(): static protected function bootResources(): static { - Nova::resources([ - config('magento-async-nova.resources.bulk_request'), - config('magento-async-nova.resources.bulk_operation'), - ]); + Nova::serving(function (): void { + Nova::resources([ + config('magento-async-nova.resources.bulk_request'), + config('magento-async-nova.resources.bulk_operation'), + ]); + }); return $this; }