From bf0cb80bd0bab442a3acdca3e5c722d42b753a31 Mon Sep 17 00:00:00 2001 From: AmirmahdiNourkazemi Date: Thu, 18 Dec 2025 18:16:23 +0330 Subject: [PATCH] feat: add type remiders --- app/Http/Controllers/ReminderController.php | 6 ++++ app/Models/Reminder.php | 1 + app/ReminderType.php | 9 ++++++ ..._18_180348_add_type_to_reminders_table.php | 31 +++++++++++++++++++ 4 files changed, 47 insertions(+) create mode 100644 app/ReminderType.php create mode 100644 database/migrations/2025_12_18_180348_add_type_to_reminders_table.php diff --git a/app/Http/Controllers/ReminderController.php b/app/Http/Controllers/ReminderController.php index 53fdd25..e281f42 100644 --- a/app/Http/Controllers/ReminderController.php +++ b/app/Http/Controllers/ReminderController.php @@ -6,6 +6,8 @@ use App\Models\Reminder; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use App\Enums\ReminderType; +use Illuminate\Validation\Rules\Enum; class ReminderController extends Controller { @@ -27,6 +29,7 @@ public function store(Request $request) 'repeatable' => 'boolean', 'repeat_days' => 'nullable|integer|min:1', 'data' => 'nullable|array', + 'type' => ['required', new Enum(ReminderType::class)], ]); $packageNameData = $request->validate([ 'package_name' => 'required|exists:package_names,name', @@ -61,6 +64,7 @@ public function update(Request $request, Reminder $reminder) 'repeatable' => 'boolean', 'repeat_days' => 'nullable|integer|min:1', 'data' => 'nullable|array', + 'type' => ['sometimes', new Enum(ReminderType::class)], ]); $packageNameData = $request->validate([ 'package_name' => 'required|exists:package_names,name', @@ -116,6 +120,7 @@ public function packageStore(Request $request, PackageName $packageName) 'repeatable' => 'boolean', 'repeat_days' => 'nullable|integer|min:1', 'data' => 'nullable|array', + 'type' => ['required', new Enum(ReminderType::class)], ]); $reminder = Reminder::create([ @@ -149,6 +154,7 @@ public function packageUpdate(Request $request, PackageName $packageName, Remind 'repeatable' => 'boolean', 'repeat_days' => 'nullable|integer|min:1', 'data' => 'nullable|array', + 'type' => ['sometimes', new Enum(ReminderType::class)], ]); // If time is being updated, reset last_repeat to null diff --git a/app/Models/Reminder.php b/app/Models/Reminder.php index 94b6c92..0da34a4 100644 --- a/app/Models/Reminder.php +++ b/app/Models/Reminder.php @@ -13,6 +13,7 @@ class Reminder extends Model protected $casts = [ 'data' => 'array', 'last_repeat' => 'datetime', + 'type' => ReminderType::class, ]; public function packageName() diff --git a/app/ReminderType.php b/app/ReminderType.php new file mode 100644 index 0000000..cf4df98 --- /dev/null +++ b/app/ReminderType.php @@ -0,0 +1,9 @@ +string('type') + ->default(ReminderType::REMINDER->value) + ->after('description'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('reminders', function (Blueprint $table) { + $table->dropColumn('type'); + }); + } +};