From c0bc558369ee34a70705c60347ca33eae13ba4f9 Mon Sep 17 00:00:00 2001 From: ALIN <=> Date: Tue, 15 Apr 2025 13:09:31 +0300 Subject: [PATCH 1/4] upgraded to native enums --- database/factories/TaskFactory.php | 10 +++++++--- src/Calendars/TaskCalendar.php | 4 ++-- src/Calendars/TaskEvent.php | 4 ++-- src/EnumServiceProvider.php | 4 ++-- src/Enums/Flag.php | 12 ++++++++++++ src/Enums/Flags.php | 13 ------------- src/Http/Requests/ValidateTask.php | 6 ++++-- src/Tables/Templates/tasks.json | 2 +- 8 files changed, 30 insertions(+), 25 deletions(-) create mode 100644 src/Enums/Flag.php delete mode 100644 src/Enums/Flags.php diff --git a/database/factories/TaskFactory.php b/database/factories/TaskFactory.php index 83ec7cc..5600358 100644 --- a/database/factories/TaskFactory.php +++ b/database/factories/TaskFactory.php @@ -4,7 +4,7 @@ use Carbon\Carbon; use Illuminate\Database\Eloquent\Factories\Factory; -use LaravelEnso\Tasks\Enums\Flags; +use LaravelEnso\Tasks\Enums\Flag; use LaravelEnso\Tasks\Models\Task; use LaravelEnso\Users\Models\User; @@ -20,13 +20,17 @@ public function definition() return [ 'name' => $this->faker->name, 'description' => $this->faker->text, - 'flag' => $this->faker->boolean ? Flags::keys()->random() : null, + 'flag' => $this->faker->boolean + ? Flag::cases()[array_rand(Flag::cases())]->value + : null, 'completed' => $this->faker->boolean, 'reminder' => $reminder, 'allocated_to' => $user->id, 'created_by' => $user->id, 'updated_by' => $user->id, - 'reminded_at' => $reminder && $this->faker->boolean ? $this->faker->dateTimeBetween($reminder, Carbon::createFromTimestamp($reminder->getTimestamp())->addMinute()) : null, + 'reminded_at' => $reminder && $this->faker->boolean + ? $this->faker->dateTimeBetween($reminder, Carbon::createFromTimestamp($reminder->getTimestamp())->addMinute()) + : null, ]; } } diff --git a/src/Calendars/TaskCalendar.php b/src/Calendars/TaskCalendar.php index bbd14e1..c7b2bbb 100644 --- a/src/Calendars/TaskCalendar.php +++ b/src/Calendars/TaskCalendar.php @@ -5,7 +5,7 @@ use Carbon\Carbon; use Illuminate\Support\Collection; use LaravelEnso\Calendar\Contracts\CustomCalendar; -use LaravelEnso\Calendar\Enums\Colors; +use LaravelEnso\Calendar\Enums\Color; use LaravelEnso\Tasks\Models\Task; class TaskCalendar implements CustomCalendar @@ -22,7 +22,7 @@ public function name(): string public function color(): string { - return Colors::Red; + return Color::Red->value; } public function private(): bool diff --git a/src/Calendars/TaskEvent.php b/src/Calendars/TaskEvent.php index 1659e22..21a0e6b 100644 --- a/src/Calendars/TaskEvent.php +++ b/src/Calendars/TaskEvent.php @@ -7,7 +7,7 @@ use LaravelEnso\Calendar\Contracts\ProvidesEvent; use LaravelEnso\Calendar\Contracts\Routable; use LaravelEnso\Calendar\DTOs\Route; -use LaravelEnso\Calendar\Enums\Frequencies; +use LaravelEnso\Calendar\Enums\Frequency; use LaravelEnso\Tasks\Models\Task; class TaskEvent implements ProvidesEvent, Routable @@ -53,7 +53,7 @@ public function getCalendar(): Calendar public function frequency(): int { - return Frequencies::Once; + return Frequency::Once->value; } public function recurrenceEnds(): ?Carbon diff --git a/src/EnumServiceProvider.php b/src/EnumServiceProvider.php index b644633..a37aa11 100644 --- a/src/EnumServiceProvider.php +++ b/src/EnumServiceProvider.php @@ -3,11 +3,11 @@ namespace LaravelEnso\Tasks; use LaravelEnso\Enums\EnumServiceProvider as ServiceProvider; -use LaravelEnso\Tasks\Enums\Flags; +use LaravelEnso\Tasks\Enums\Flag; class EnumServiceProvider extends ServiceProvider { public $register = [ - 'flags' => Flags::class, + 'flag' => Flag::class, ]; } diff --git a/src/Enums/Flag.php b/src/Enums/Flag.php new file mode 100644 index 0000000..9575946 --- /dev/null +++ b/src/Enums/Flag.php @@ -0,0 +1,12 @@ + "{$this->requiredOrFilled()}|string|max:256", 'description' => 'filled|max:4096', - 'flag' => 'nullable|in:'.Flags::keys()->implode(','), + 'flag' => ['nullable', Rule::in(array_column(Flag::cases(), 'value'))], 'reminder' => 'nullable|date', 'allocated_to' => "{$this->requiredOrFilled()}|exists:users,id", 'completed' => "{$this->requiredOrFilled()}|boolean", diff --git a/src/Tables/Templates/tasks.json b/src/Tables/Templates/tasks.json index a0ee75f..4ca865c 100644 --- a/src/Tables/Templates/tasks.json +++ b/src/Tables/Templates/tasks.json @@ -25,7 +25,7 @@ "sortable", "slot" ], - "enum": "LaravelEnso\\Tasks\\Enums\\Flags" + "enum": "LaravelEnso\\Tasks\\Enums\\Flag" }, { "label": "Reminder", "name": "reminder", From e546e8373e9c61ee013cbdfe7c5f3585b56901b1 Mon Sep 17 00:00:00 2001 From: ALIN <=> Date: Tue, 15 Apr 2025 16:14:21 +0300 Subject: [PATCH 2/4] adjusted CI --- src/Enums/Flag.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Enums/Flag.php b/src/Enums/Flag.php index 9575946..bc2bbb7 100644 --- a/src/Enums/Flag.php +++ b/src/Enums/Flag.php @@ -2,7 +2,6 @@ namespace LaravelEnso\Tasks\Enums; - enum Flag: int { case Danger = 1; From e2b25047812ee5c97e9e3a0ac7b534023ba882ca Mon Sep 17 00:00:00 2001 From: ALIN <=> Date: Tue, 15 Apr 2025 16:57:46 +0300 Subject: [PATCH 3/4] simplified condition for Task enum --- database/factories/TaskFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/factories/TaskFactory.php b/database/factories/TaskFactory.php index 5600358..0c79cf1 100644 --- a/database/factories/TaskFactory.php +++ b/database/factories/TaskFactory.php @@ -21,7 +21,7 @@ public function definition() 'name' => $this->faker->name, 'description' => $this->faker->text, 'flag' => $this->faker->boolean - ? Flag::cases()[array_rand(Flag::cases())]->value + ? Flag::random()->value : null, 'completed' => $this->faker->boolean, 'reminder' => $reminder, From 24becd10f7fe539e399f3f3e432975ad3f05286e Mon Sep 17 00:00:00 2001 From: ALIN <=> Date: Wed, 16 Apr 2025 18:32:46 +0300 Subject: [PATCH 4/4] Adjusted enum frontend --- src/EnumServiceProvider.php | 5 +---- src/Enums/Flag.php | 9 ++++++++- src/Http/Requests/ValidateTask.php | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/EnumServiceProvider.php b/src/EnumServiceProvider.php index a37aa11..a79ada8 100644 --- a/src/EnumServiceProvider.php +++ b/src/EnumServiceProvider.php @@ -3,11 +3,8 @@ namespace LaravelEnso\Tasks; use LaravelEnso\Enums\EnumServiceProvider as ServiceProvider; -use LaravelEnso\Tasks\Enums\Flag; class EnumServiceProvider extends ServiceProvider { - public $register = [ - 'flag' => Flag::class, - ]; + public $register = []; } diff --git a/src/Enums/Flag.php b/src/Enums/Flag.php index bc2bbb7..0723846 100644 --- a/src/Enums/Flag.php +++ b/src/Enums/Flag.php @@ -2,10 +2,17 @@ namespace LaravelEnso\Tasks\Enums; -enum Flag: int +use LaravelEnso\Enums\Contracts\Frontend; + +enum Flag: int implements Frontend { case Danger = 1; case Warning = 2; case Info = 3; case Success = 4; + + public static function registerBy(): string + { + return 'flags'; + } } diff --git a/src/Http/Requests/ValidateTask.php b/src/Http/Requests/ValidateTask.php index 3706eda..bf38bb9 100644 --- a/src/Http/Requests/ValidateTask.php +++ b/src/Http/Requests/ValidateTask.php @@ -21,7 +21,7 @@ public function rules() return [ 'name' => "{$this->requiredOrFilled()}|string|max:256", 'description' => 'filled|max:4096', - 'flag' => ['nullable', Rule::in(array_column(Flag::cases(), 'value'))], + 'flag' => ['nullable', Rule::in(array_column(Flag::cases(), 'value'))], 'reminder' => 'nullable|date', 'allocated_to' => "{$this->requiredOrFilled()}|exists:users,id", 'completed' => "{$this->requiredOrFilled()}|boolean",