adminUserService = $adminUserService; } public function createUser(CreateUserRequest $request): JsonResponse { $validatedData = $request->validated(); [$success, $message, $data] = $this->adminUserService->createUser($validatedData); if(!$success){ return ResponseJson::failedResponse($message, $validatedData); } if ($validatedData['role'] === 'operator' && isset($validatedData['disease_ids'])) { [$assignSuccess, $assignMessage, $data] = $this->adminUserService->assignOperatorToDiseases($data['id'], $validatedData['disease_ids']); if ($assignSuccess) { $message .= ' ' . $assignMessage; } else { return ResponseJson::failedResponse($assignMessage); } } return ResponseJson::successResponse($message, $data); } public function approveUser(UserIdRequest $request, $userId): JsonResponse { [$success, $message, $data] = $this->adminUserService->approveUser($userId); if(!$success){ return ResponseJson::failedResponse($message, $data); } return ResponseJson::successResponse('User approved successfully.', $data); } public function rejectUser(UserIdRequest $request, $userId): JsonResponse { [$success, $message, $data] = $this->adminUserService->rejectUser($userId); if(!$success){ return ResponseJson::failedResponse($message, $data); } return ResponseJson::successResponse('User rejected successfully.', $data); } public function editUser(EditUserRequest $request, $id): JsonResponse { [$success, $message, $data] = $this->adminUserService->editUser($id, $request->validated()); if(!$success){ return ResponseJson::failedResponse($message, $data); } return ResponseJson::successResponse('User updated successfully.', $data); } public function deleteUser(UserIdRequest $request, $userId): JsonResponse { [$success, $message, $data] = $this->adminUserService->deleteUser($userId); if(!$success){ return ResponseJson::failedResponse($message, $data); } return ResponseJson::successResponse('User deleted successfully.', $data); } public function getUsers(Request $request): JsonResponse { [$success, $message, $data]= $this->adminUserService->getUsers($request->all()); if(!$success){ return ResponseJson::failedResponse($message, $data); } return ResponseJson::successResponse('Users retrieved successfully.', $data); } public function getUserDetails(UserIdRequest $request, $userId): JsonResponse { [$success, $message, $data] = $this->adminUserService->getUserDetails($userId); if(!$success){ return ResponseJson::failedResponse($message, $data); } return ResponseJson::successResponse('User details retrieved successfully.', $data); } public function getUserProfile(Request $request) { $user = $request->user(); // Get the authenticated user return response()->json([ 'success' => true, 'message' => 'Profile retrieved successfully.', 'data' => [ 'id' => $user->id, 'name' => $user->name, 'email' => $user->email, 'role' => $user->role, 'institution' => $user->institution, 'gender' => $user->gender, 'phone' => $user->phone_number, 'approval_status' => $user->approval_status, 'created_at' => $user->created_at, 'updated_at' => $user->updated_at, ] ]); } }