diff --git a/app/Http/Controllers/Juil/PlanningController.php b/app/Http/Controllers/Juil/PlanningController.php index cba356ba..980ef2df 100644 --- a/app/Http/Controllers/Juil/PlanningController.php +++ b/app/Http/Controllers/Juil/PlanningController.php @@ -53,4 +53,52 @@ public function pmisWeather(WeatherService $weatherService): JsonResponse return response()->json(['forecasts' => array_slice($forecasts, 0, 2)]); } + + public function pmisProfile(): JsonResponse + { + $user = auth()->user(); + $tenantId = session('current_tenant_id', 1); + + $departments = $user->getDepartmentsForTenant($tenantId); + $roles = $user->getRolesForTenant($tenantId); + + return response()->json([ + 'user' => [ + 'name' => $user->name, + 'user_id' => $user->user_id, + 'email' => $user->email, + 'phone' => $user->phone, + 'role' => $user->role, + 'profile_photo_path' => $user->profile_photo_path, + 'department' => $departments->first()?->name ?? '-', + 'position' => $user->getOption('position') ?? '-', + 'gender' => data_get($user->options, 'gender', ''), + 'role_names' => $roles->pluck('name')->join(', ') ?: '-', + 'created_at' => $user->created_at?->format('Y-m-d'), + 'last_login_at' => $user->last_login_at?->format('Y-m-d H:i'), + ], + ]); + } + + public function pmisProfileUpdate(Request $request): JsonResponse + { + $request->validate([ + 'phone' => ['nullable', 'string', 'max:20'], + 'email' => ['nullable', 'email', 'max:255'], + 'gender' => ['nullable', 'string', 'in:남,여'], + ]); + + $user = auth()->user(); + $user->phone = $request->input('phone'); + $user->email = $request->input('email'); + + $options = $user->options ?? []; + $options['gender'] = $request->input('gender'); + $user->options = $options; + + $user->updated_by = $user->id; + $user->save(); + + return response()->json(['success' => true, 'message' => '개인정보가 저장되었습니다.']); + } } diff --git a/resources/views/juil/construction-pmis.blade.php b/resources/views/juil/construction-pmis.blade.php index ae3d5057..bb4dc11d 100644 --- a/resources/views/juil/construction-pmis.blade.php +++ b/resources/views/juil/construction-pmis.blade.php @@ -11,7 +11,282 @@ @include('partials.react-cdn')