Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions database/factories/ExportFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
namespace LaravelEnso\DataExport\Database\Factories;

use Illuminate\Database\Eloquent\Factories\Factory;
use LaravelEnso\DataExport\Enums\Statuses;
use LaravelEnso\DataExport\Enums\Status;
use LaravelEnso\DataExport\Models\Export;

class ExportFactory extends Factory
Expand All @@ -16,7 +16,7 @@ public function definition()
'name' => null,
'entries' => 0,
'total' => 0,
'status' => Statuses::Waiting,
'status' => Status::Waiting->value,
];
}
}
4 changes: 2 additions & 2 deletions src/Commands/Purge.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
namespace LaravelEnso\DataExport\Commands;

use Illuminate\Console\Command;
use LaravelEnso\DataExport\Enums\Statuses;
use LaravelEnso\DataExport\Enums\Status;
use LaravelEnso\DataExport\Models\Export;

class Purge extends Command
Expand All @@ -15,7 +15,7 @@ class Purge extends Command
public function handle()
{
Export::expired()->notDeletable()
->update(['status' => Statuses::Cancelled]);
->update(['status' => Status::Cancelled->value]);

Export::expired()->deletable()->get()->each->delete();
}
Expand Down
2 changes: 0 additions & 2 deletions src/EnumServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@

namespace LaravelEnso\DataExport;

use LaravelEnso\DataExport\Enums\Statuses;
use LaravelEnso\Enums\EnumServiceProvider as ServiceProvider;

class EnumServiceProvider extends ServiceProvider
{
public $register = [
'exportStatuses' => Statuses::class,
];
}
58 changes: 58 additions & 0 deletions src/Enums/Status.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<?php

namespace LaravelEnso\DataExport\Enums;

use LaravelEnso\Enums\Contracts\Frontend;
use LaravelEnso\Enums\Contracts\Mappable;

enum Status: int implements Mappable, Frontend
{
case Waiting = 10;
case Processing = 20;
case Finalized = 30;
case Cancelled = 40;
case Failed = 50;

public function map(): string
{
return match ($this) {
self::Waiting => 'waiting',
self::Processing => 'processing',
self::Finalized => 'finalized',
self::Cancelled => 'cancelled',
self::Failed => 'failed',
};
}

public function isRunning(): bool
{
return match ($this) {
self::Waiting->value => true,
self::Processing->value => true,
self::Finalized->value => false,
self::Cancelled->value => false,
self::Failed->value => false,
};
}

public function isDeletable(): bool
{
return match ($this) {
self::Waiting => false,
self::Processing => false,
self::Finalized => true,
self::Cancelled => true,
self::Failed => true,
};
}

public static function registerBy(): string
{
return 'exportStatuses';
}

public static function deletable(): array
{
return [self::Finalized->value, self::Cancelled->value, self::Failed->value];
}
}
37 changes: 0 additions & 37 deletions src/Enums/Statuses.php

This file was deleted.

26 changes: 13 additions & 13 deletions src/Models/Export.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
use Illuminate\Support\Str;
use LaravelEnso\DataExport\Contracts\CustomCount;
use LaravelEnso\DataExport\Contracts\ExportsExcel as AsyncExcel;
use LaravelEnso\DataExport\Enums\Statuses;
use LaravelEnso\DataExport\Enums\Status;
use LaravelEnso\DataExport\Exceptions\Exception;
use LaravelEnso\DataExport\Notifications\ExportDone;
use LaravelEnso\DataExport\Services\ExcelExport as AsyncExporter;
Expand Down Expand Up @@ -57,39 +57,39 @@ public function cancel(): void
throw Exception::cannotBeCancelled();
}

$this->update(['status' => Statuses::Cancelled]);
$this->update(['status' => Status::Cancelled->value]);
}

public function cancelled(): bool
{
return $this->status === Statuses::Cancelled;
return $this->status === Status::Cancelled->value;
}

public function failed(): bool
{
return $this->status === Statuses::Failed;
return $this->status === Status::Failed->value;
}

public function running(): bool
{
return in_array($this->status, Statuses::running());
return Status::from($this->status)->isRunning();
}

public function finalized(): bool
{
return $this->status === Statuses::Finalized;
return $this->status === Status::Finalized->value;
}

public function operationType(): int
{
return IOTypes::Export;
return IOTypes::Export; //TODO upgrade when IO package is upgraded
}

public function status(): int
{
return $this->running()
? $this->status
: Statuses::Finalized;
: Status::Finalized->value;
}

public function progress(): ?int
Expand Down Expand Up @@ -150,7 +150,7 @@ private static function syncExcel(SyncExcel $exporter): self
{
$export = self::factory()->create([
'name' => $exporter->filename(),
'status' => Statuses::Processing,
'status' => Status::Processing->value,
'total' => 0,
]);

Expand Down Expand Up @@ -178,7 +178,7 @@ private static function syncExcel(SyncExcel $exporter): self

$file = File::attach(...$args);

$export->fill(['status' => Statuses::Finalized])
$export->fill(['status' => Status::Finalized->value])
->file()->associate($file)
->save();

Expand All @@ -201,7 +201,7 @@ public function updateProgress(int $entries)

public function delete()
{
if (! Statuses::isDeletable($this->status)) {
if (! Status::from($this->status)->isDeletable()) {
throw Exception::deleteRunningExport();
}

Expand All @@ -222,11 +222,11 @@ public function scopeExpired(Builder $query): Builder

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());
}
}
8 changes: 4 additions & 4 deletions src/Services/ExcelExport.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
use LaravelEnso\DataExport\Contracts\CustomRowAction;
use LaravelEnso\DataExport\Contracts\ExportsExcel;
use LaravelEnso\DataExport\Contracts\Notifies;
use LaravelEnso\DataExport\Enums\Statuses;
use LaravelEnso\DataExport\Enums\Status;
use LaravelEnso\DataExport\Models\Export;
use LaravelEnso\DataExport\Notifications\ExportDone;
use LaravelEnso\DataExport\Notifications\ExportError;
Expand Down Expand Up @@ -89,7 +89,7 @@ private function initWriter(): self

private function start(): self
{
$this->export->update(['status' => Statuses::Processing]);
$this->export->update(['status' => Status::Processing->value]);

return $this;
}
Expand Down Expand Up @@ -174,7 +174,7 @@ private function finalize(): self

$file = File::attach(...$args);

$this->export->fill(['status' => Statuses::Finalized])
$this->export->fill(['status' => Status::Finalized->value])
->file()->associate($file)
->save();

Expand Down Expand Up @@ -243,7 +243,7 @@ private function emailSubject(): string

private function failed(): void
{
$this->export->update(['status' => Statuses::Failed]);
$this->export->update(['status' => Status::Failed->value]);
Storage::delete($this->path());
$this->notifyError();
$this->closeWriter();
Expand Down