From 1d98af01136d6565a2bededa114e323d16bbc049 Mon Sep 17 00:00:00 2001 From: Moradi Date: Thu, 13 Mar 2025 12:45:00 +0330 Subject: [PATCH] add validation for enabled labels, rename enable (to enabled) in labels table, and update the enabled attribute of corresponding labels to false when cycle saved --- app/Helpers/helpers.php | 17 +++++++++++ app/Http/Requests/StoreCycleRequest.php | 5 ++-- app/Listeners/UpdateLabelsCycleNumber.php | 3 +- app/Rules/ValidEnabledLabels.php | 29 +++++++++++++++++++ composer.json | 5 +++- ...5_03_13_112407_rename_enable_in_labels.php | 28 ++++++++++++++++++ 6 files changed, 82 insertions(+), 5 deletions(-) create mode 100644 app/Helpers/helpers.php create mode 100644 app/Rules/ValidEnabledLabels.php create mode 100644 database/migrations/2025_03_13_112407_rename_enable_in_labels.php diff --git a/app/Helpers/helpers.php b/app/Helpers/helpers.php new file mode 100644 index 00000000..bcda24e1 --- /dev/null +++ b/app/Helpers/helpers.php @@ -0,0 +1,17 @@ + 'required', 'cycle_number' => 'required|unique:cycles,cycle_number', 'note' => 'nullable', - 'labels' => 'required|array|distinct', 'labels.*.id' => 'required|numeric|exists:labels,id', + 'labels' => ['required','array','distinct',new ValidEnabledLabels()], ]; break; } @@ -40,8 +41,8 @@ class StoreCycleRequest extends FormRequest 'sterilizer_id' => 'required', 'cycle_number' => 'required|unique:cycles,cycle_number', 'note' => 'nullable', - 'labels' => 'required|array|distinct', 'labels.*.id' => 'required|numeric|exists:labels,id', + 'labels' => ['required','array','distinct',new ValidEnabledLabels()], ]; break; diff --git a/app/Listeners/UpdateLabelsCycleNumber.php b/app/Listeners/UpdateLabelsCycleNumber.php index 3fdda914..ac581c96 100644 --- a/app/Listeners/UpdateLabelsCycleNumber.php +++ b/app/Listeners/UpdateLabelsCycleNumber.php @@ -23,8 +23,7 @@ class UpdateLabelsCycleNumber { $cycle = $event->cycle; $cycleNumber = $cycle->cycle_number; -// dd($cycle->labels); - $cycle->labels()->update(['cycle_number' => $cycleNumber]); + $cycle->labels()->update(['cycle_number' => $cycleNumber, 'enabled' => false]); } } diff --git a/app/Rules/ValidEnabledLabels.php b/app/Rules/ValidEnabledLabels.php new file mode 100644 index 00000000..5691b15c --- /dev/null +++ b/app/Rules/ValidEnabledLabels.php @@ -0,0 +1,29 @@ +where('enabled', true) + ->pluck('id') + ->toArray(); + + if(count(array_diff($formattedVal, $validIds)) !== 0) + { + $fail('the :attribute must be enabled.'); + } + } +} diff --git a/composer.json b/composer.json index 53cecb30..39e77d8f 100644 --- a/composer.json +++ b/composer.json @@ -50,7 +50,10 @@ "Packages\\": "packages/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/" - } + }, + "files": [ + "app/Helpers/helpers.php" + ] }, "autoload-dev": { "psr-4": { diff --git a/database/migrations/2025_03_13_112407_rename_enable_in_labels.php b/database/migrations/2025_03_13_112407_rename_enable_in_labels.php new file mode 100644 index 00000000..9ecbb012 --- /dev/null +++ b/database/migrations/2025_03_13_112407_rename_enable_in_labels.php @@ -0,0 +1,28 @@ +renameColumn('enable', 'enabled'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('labels', function (Blueprint $table) { + $table->renameColumn('enabled', 'enable'); + }); + } +};