diff --git a/database/factories/DataImportFactory.php b/database/factories/DataImportFactory.php index 14cd8689..3ce06156 100644 --- a/database/factories/DataImportFactory.php +++ b/database/factories/DataImportFactory.php @@ -3,7 +3,7 @@ namespace LaravelEnso\DataImport\Database\Factories; use Illuminate\Database\Eloquent\Factories\Factory; -use LaravelEnso\DataImport\Enums\Statuses; +use LaravelEnso\DataImport\Enums\Status; use LaravelEnso\DataImport\Models\DataImport; class DataImportFactory extends Factory @@ -18,7 +18,7 @@ public function definition() 'params' => [], 'successful' => 0, 'failed' => 0, - 'status' => Statuses::Waiting, + 'status' => Status::Waiting->value, ]; } } diff --git a/database/factories/ImportFactory.php b/database/factories/ImportFactory.php index a25318c9..06f56f6c 100644 --- a/database/factories/ImportFactory.php +++ b/database/factories/ImportFactory.php @@ -3,7 +3,7 @@ namespace LaravelEnso\DataImport\Database\Factories; use Illuminate\Database\Eloquent\Factories\Factory; -use LaravelEnso\DataImport\Enums\Statuses; +use LaravelEnso\DataImport\Enums\Status; use LaravelEnso\DataImport\Models\Import; class ImportFactory extends Factory @@ -18,7 +18,7 @@ public function definition() 'params' => [], 'successful' => 0, 'failed' => 0, - 'status' => Statuses::Waiting, + 'status' => Status::Waiting->value, ]; } } diff --git a/src/Commands/CancelStuck.php b/src/Commands/CancelStuck.php index 548ffc1c..be40b8b9 100644 --- a/src/Commands/CancelStuck.php +++ b/src/Commands/CancelStuck.php @@ -3,7 +3,7 @@ namespace LaravelEnso\DataImport\Commands; use Illuminate\Console\Command; -use LaravelEnso\DataImport\Enums\Statuses; +use LaravelEnso\DataImport\Enums\Status; use LaravelEnso\DataImport\Models\Import; class CancelStuck extends Command @@ -15,7 +15,7 @@ class CancelStuck extends Command public function handle() { Import::stuck()->update([ - 'status' => Statuses::Cancelled, + 'status' => Status::Cancelled->value, 'batch' => null, ]); } diff --git a/src/Commands/Purge.php b/src/Commands/Purge.php index e585764f..9affc1ac 100644 --- a/src/Commands/Purge.php +++ b/src/Commands/Purge.php @@ -3,7 +3,7 @@ namespace LaravelEnso\DataImport\Commands; use Illuminate\Console\Command; -use LaravelEnso\DataImport\Enums\Statuses; +use LaravelEnso\DataImport\Enums\Status; use LaravelEnso\DataImport\Models\Import; class Purge extends Command @@ -16,7 +16,7 @@ public function handle() { Import::expired()->notDeletable() ->update([ - 'status' => Statuses::Cancelled, + 'status' => Status::Cancelled->value, 'batch' => null, ]); diff --git a/src/EnumServiceProvider.php b/src/EnumServiceProvider.php index 551c6a5d..0d8363dc 100644 --- a/src/EnumServiceProvider.php +++ b/src/EnumServiceProvider.php @@ -2,14 +2,10 @@ namespace LaravelEnso\DataImport; -use LaravelEnso\DataImport\Enums\CssClasses; -use LaravelEnso\DataImport\Enums\Statuses; use LaravelEnso\Enums\EnumServiceProvider as ServiceProvider; class EnumServiceProvider extends ServiceProvider { public $register = [ - 'importCssClasses' => CssClasses::class, - 'importStatuses' => Statuses::class, ]; } diff --git a/src/Enums/CssClass.php b/src/Enums/CssClass.php new file mode 100644 index 00000000..d1d690cd --- /dev/null +++ b/src/Enums/CssClass.php @@ -0,0 +1,20 @@ + 'is-info', - self::Processing => 'is-warning', - self::Processed => 'is-primary', - self::ExportingRejected => 'is-danger', - self::Finalized => 'is-success', - self::Cancelled => 'is-danger', - ]; -} diff --git a/src/Enums/Status.php b/src/Enums/Status.php new file mode 100644 index 00000000..9db4eae1 --- /dev/null +++ b/src/Enums/Status.php @@ -0,0 +1,66 @@ + 'waiting', + self::Processing => 'processing', + self::Processed => 'processed', + self::ExportingRejected => 'exporting rejected', + self::Finalized => 'finalized', + self::Cancelled => 'cancelled', + }; + } + + public static function registerBy(): string + { + return 'importStatuses'; + } + + public static function isRunning(int $status): bool + { + return match ($status) { + self::Waiting->value => true, + self::Processing->value => true, + self::Processed->value => false, + self::ExportingRejected->value => false, + self::Finalized->value => false, + self::Cancelled->value => false, + }; + } + + public static function isDeletable(int $status): bool + { + return match ($status) { + self::Waiting->value => false, + self::Processing->value => false, + self::Processed->value => false, + self::ExportingRejected->value => false, + self::Finalized->value => true, + self::Cancelled->value => true, + }; + } + + public static function deletable(): array + { + return [self::Finalized->value, self::Cancelled->value]; + } +} diff --git a/src/Enums/Statuses.php b/src/Enums/Statuses.php deleted file mode 100644 index 3ec93ef7..00000000 --- a/src/Enums/Statuses.php +++ /dev/null @@ -1,39 +0,0 @@ - 'waiting', - self::Processing => 'processing', - self::Processed => 'processed', - self::ExportingRejected => 'exporting rejected', - self::Finalized => 'finalized', - self::Cancelled => 'cancelled', - ]; - - public static function running(): array - { - return [self::Waiting, self::Processing]; - } - - public static function deletable(): array - { - return [self::Finalized, self::Cancelled]; - } - - public static function isDeletable(int $status): bool - { - return in_array($status, self::deletable()); - } -} diff --git a/src/Jobs/Finalize.php b/src/Jobs/Finalize.php index 713b8263..0030dfd0 100644 --- a/src/Jobs/Finalize.php +++ b/src/Jobs/Finalize.php @@ -8,7 +8,7 @@ use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Config; -use LaravelEnso\DataImport\Enums\Statuses; +use LaravelEnso\DataImport\Enums\Status; use LaravelEnso\DataImport\Models\Import; use LaravelEnso\DataImport\Notifications\ImportDone; use LaravelEnso\DataImport\Services\Notifiables; @@ -24,7 +24,7 @@ public function __construct(private Import $import) public function handle() { - $this->import->update(['status' => Statuses::Finalized]); + $this->import->update(['status' => Status::Finalized->value]); $this->notify(); } diff --git a/src/Models/Import.php b/src/Models/Import.php index 8930e7b3..5c0ac6fb 100644 --- a/src/Models/Import.php +++ b/src/Models/Import.php @@ -14,7 +14,7 @@ use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; use Illuminate\Support\Traits\Conditionable; -use LaravelEnso\DataImport\Enums\Statuses; +use LaravelEnso\DataImport\Enums\Status; use LaravelEnso\DataImport\Exceptions\Import as Exception; use LaravelEnso\DataImport\Jobs\Import as Job; use LaravelEnso\DataImport\Services\Options; @@ -85,17 +85,17 @@ public function scopeStuck(Builder $query): Builder ->subHours(Config::get('enso.imports.cancelStuckAfter')); return $query->where('created_at', '<', $cancelStuckAfter) - ->whereNotIn('status', [Statuses::Finalized, Statuses::Cancelled]); + ->whereNotIn('status', [Status::Finalized->value, Status::Cancelled->value]); } public function scopeDeletable(Builder $query): Builder { - return $query->whereIn('status', Statuses::deletable()); + return $query->whereIn('status', Status::deletable()); } public function scopeNotDeletable(Builder $query): Builder { - return $query->whereNotIn('status', Statuses::deletable()); + return $query->whereNotIn('status', Status::deletable()); } public function extensions(): array @@ -155,32 +155,32 @@ public function status(): int { return $this->running() ? $this->status - : Statuses::Finalized; + : Status::Finalized->value; } public function waiting(): bool { - return $this->status === Statuses::Waiting; + return $this->status === Status::Waiting->value; } public function cancelled(): bool { - return $this->status === Statuses::Cancelled; + return $this->status === Status::Cancelled->value; } public function processing(): bool { - return $this->status === Statuses::Processing; + return $this->status === Status::Processing->value; } public function finalized(): bool { - return $this->status === Statuses::Finalized; + return $this->status === Status::Finalized->value; } public function running(): bool { - return in_array($this->status, Statuses::running()); + return Status::isRunning($this->status); } public function template(): Template @@ -235,8 +235,8 @@ public function upload(UploadedFile $file): array public function forceDelete() { - if (! Statuses::isDeletable($this->status)) { - $this->update(['status' => Statuses::Cancelled]); + if (! Status::isDeletable($this->status)) { + $this->update(['status' => Status::Cancelled->value]); } $this->delete(); @@ -252,7 +252,7 @@ public function purge(): void public function delete() { - if (! Statuses::isDeletable($this->status)) { + if (! Status::isDeletable($this->status)) { throw Exception::deleteRunningImport(); } @@ -274,7 +274,7 @@ public function cancel() $this->batch()?->cancel(); $this->update([ - 'status' => Statuses::Cancelled, + 'status' => Status::Cancelled->value, 'batch' => null, ]); } @@ -302,7 +302,7 @@ public function restart(): void $this->update([ 'successful' => 0, 'failed' => 0, - 'status' => Statuses::Waiting, + 'status' => Status::Waiting->value, ]); $this->import(); diff --git a/src/Services/Exporters/Rejected.php b/src/Services/Exporters/Rejected.php index a1f257a1..569dbe31 100644 --- a/src/Services/Exporters/Rejected.php +++ b/src/Services/Exporters/Rejected.php @@ -6,7 +6,7 @@ use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; -use LaravelEnso\DataImport\Enums\Statuses; +use LaravelEnso\DataImport\Enums\Status; use LaravelEnso\DataImport\Models\Import; use LaravelEnso\DataImport\Models\RejectedChunk; use LaravelEnso\DataImport\Models\RejectedImport; @@ -31,7 +31,7 @@ public function __construct(private Import $import) public function handle(): void { - $this->import->update(['status' => Statuses::ExportingRejected]); + $this->import->update(['status' => Status::ExportingRejected->value]); $this->initWriter(); diff --git a/src/Services/Importers/Import.php b/src/Services/Importers/Import.php index dd10624f..6e0fd3db 100644 --- a/src/Services/Importers/Import.php +++ b/src/Services/Importers/Import.php @@ -8,7 +8,7 @@ use LaravelEnso\DataImport\Contracts\AfterHook; use LaravelEnso\DataImport\Contracts\Authenticates; use LaravelEnso\DataImport\Contracts\BeforeHook; -use LaravelEnso\DataImport\Enums\Statuses; +use LaravelEnso\DataImport\Enums\Status; use LaravelEnso\DataImport\Jobs\Finalize; use LaravelEnso\DataImport\Jobs\RejectedExport; use LaravelEnso\DataImport\Jobs\Sheet; @@ -36,7 +36,7 @@ public function handle(): void private function prepare(): self { if ($this->import->waiting()) { - $this->import->update(['status' => Statuses::Processing]); + $this->import->update(['status' => Status::Processing->value]); } return $this; diff --git a/src/Tables/Builders/Import.php b/src/Tables/Builders/Import.php index 3870f3ca..23cb6357 100644 --- a/src/Tables/Builders/Import.php +++ b/src/Tables/Builders/Import.php @@ -4,7 +4,7 @@ use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Facades\DB; -use LaravelEnso\DataImport\Enums\Statuses; +use LaravelEnso\DataImport\Enums\Status; use LaravelEnso\DataImport\Models\Import as Model; use LaravelEnso\Tables\Contracts\ConditionalActions; use LaravelEnso\Tables\Contracts\Table; @@ -31,8 +31,8 @@ public function render(array $row, string $action): bool return match ($action) { 'download-rejected' => $row['rejected'] !== null, 'download' => $hasFile, - 'cancel' => in_array($row['status'], Statuses::running()), - 'restart' => $hasFile && $row['status'] === Statuses::Cancelled, + 'cancel' => Status::isRunning($row['status']), + 'restart' => $hasFile && $row['status'] === Status::Cancelled->value, default => true, }; } diff --git a/src/Tables/Templates/imports.json b/src/Tables/Templates/imports.json index a23d84c6..43dc52bd 100644 --- a/src/Tables/Templates/imports.json +++ b/src/Tables/Templates/imports.json @@ -72,7 +72,7 @@ "label": "Status", "name": "status", "data": "data_imports.status", - "enum": "LaravelEnso\\DataImport\\Enums\\Statuses", + "enum": "LaravelEnso\\DataImport\\Enums\\Status", "meta": [ "sortable", "slot" diff --git a/tests/features/DataImportTest.php b/tests/features/DataImportTest.php index 8a34db27..ed4e9751 100644 --- a/tests/features/DataImportTest.php +++ b/tests/features/DataImportTest.php @@ -6,7 +6,7 @@ use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; -use LaravelEnso\DataImport\Enums\Statuses; +use LaravelEnso\DataImport\Enums\Status; use LaravelEnso\DataImport\Models\Import; use LaravelEnso\Tables\Traits\Tests\Datatable; use LaravelEnso\UserGroups\Models\UserGroup; @@ -109,12 +109,12 @@ public function download() public function cant_destroy_while_running() { $this->attach(self::ImportFile); - $this->model->update(['status' => Statuses::Processing]); + $this->model->update(['status' => Status::Processing->value]); $response = $this->delete(route('import.destroy', [$this->model->id], false)); $response->assertStatus(488); - $this->model->update(['status' => Statuses::Finalized]); + $this->model->update(['status' => Status::Finalized->value]); } /** @test */ pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy