From 0ffc9b8a153d5c7d2151c9f8d9a2a94e07aedc15 Mon Sep 17 00:00:00 2001 From: thatguy2137 Date: Thu, 12 Mar 2026 19:18:56 -0400 Subject: [PATCH 1/2] Adding routes to access membership status changes --- .../Api/UserStatusesController.php | 64 +++++++++++++++++++ app/Http/Controllers/UsersController.php | 8 ++- resources/views/users/edit.blade.php | 4 ++ routes/api.php | 5 ++ 4 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 app/Http/Controllers/Api/UserStatusesController.php diff --git a/app/Http/Controllers/Api/UserStatusesController.php b/app/Http/Controllers/Api/UserStatusesController.php new file mode 100644 index 0000000..1812194 --- /dev/null +++ b/app/Http/Controllers/Api/UserStatusesController.php @@ -0,0 +1,64 @@ +orderByDesc('id')->first(['id', 'created_at']); + + if ($status === null) { + return response()->json(['id' => 0]); + } + + return response()->json([ + 'id' => $status->id, + 'created_at' => $status->created_at, + ]); + } + + public function index(Request $request) + { + $status_id = (int) $request->query('status_id', 0); + + $status = UserStatus::query() + ->select([ + 'id', + 'user_id', + 'status', + 'note', + 'updated_by', + 'created_at', + ]) + ->where('id', '>=', $status_id) + ->orderBy('id') + ->first(); + + if ($status === null) { + return response()->json(['message' => 'No pending user statuses.'], 204); + } + + return response()->json($status); + } + + public function upcoming(Request $request) + { + $days = max(1, min((int) $request->query('days', 7), 90)); + $now = Carbon::now(); + + $statuses = UserStatus::query() + ->select(['id', 'user_id', 'status', 'note', 'updated_by', 'created_at']) + ->where('created_at', '>', $now) + ->where('created_at', '<=', $now->copy()->addDays($days)) + ->orderBy('created_at') + ->get(); + + return response()->json($statuses); + } +} diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php index 5a5dd9f..a0da74a 100644 --- a/app/Http/Controllers/UsersController.php +++ b/app/Http/Controllers/UsersController.php @@ -156,7 +156,7 @@ public function update_status(Request $request, $id) 'created_at' => $request->input('effective_date'), 'updated_at' => date('Y-m-d'), ]); - if ($request->has('note')) { + if ($request->filled('note') && $request->input('status_type') !== 'hiatus') { $status->note = $request->input('note'); } @@ -190,11 +190,15 @@ public function update_status(Request $request, $id) // create both the hiatus record and the active record for when hiatus is over $status->status = 'hiatus'; $status->save(); + $endingNote = 'Ending Hiatus'; + if ($request->filled('note')) { + $endingNote .= ' - ' . $request->input('note'); + } $status_end = new \App\Models\UserStatus([ 'user_id' => $user->id, 'updated_by' => \Auth::user()->id, 'status' => 'active', - 'note' => 'Ending Hiatus', + 'note' => $endingNote, 'created_at' => $request->input('effective_date_ending'), 'updated_at' => date('Y-m-d'), ]); diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php index c3cbb27..be43aea 100644 --- a/resources/views/users/edit.blade.php +++ b/resources/views/users/edit.blade.php @@ -367,6 +367,10 @@ +
+ + +