header('HX-Request')) { return response('', 200)->header('HX-Redirect', route('juil.estimate')); } return view('juil.estimate'); } public function project(Request $request): View|Response { if ($request->header('HX-Request')) { return response('', 200)->header('HX-Redirect', route('juil.project')); } return view('juil.project'); } public function workflow(Request $request): View|Response { if ($request->header('HX-Request')) { return response('', 200)->header('HX-Redirect', route('juil.workflow')); } return view('juil.workflow'); } public function constructionPmis(Request $request): View|Response { if ($request->header('HX-Request')) { return response('', 200)->header('HX-Redirect', route('juil.construction-pmis')); } return view('juil.construction-pmis'); } public function pmisWeather(WeatherService $weatherService): JsonResponse { $forecasts = $weatherService->getWeeklyForecast(); 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' => '개인정보가 저장되었습니다.']); } }