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); $worker = PmisWorker::findOrCreateFromUser($user, $tenantId); return response()->json([ 'worker' => [ 'id' => $worker->id, 'name' => $worker->name, 'login_id' => $worker->login_id, 'phone' => $worker->phone, 'email' => $worker->email, 'department' => $worker->department ?? '-', 'position' => $worker->position ?? '-', 'role_type' => $worker->role_type ?? '-', 'gender' => $worker->gender ?? '', 'company' => $worker->company ?? '-', 'profile_photo_path' => $worker->profile_photo_path, 'created_at' => $worker->created_at?->format('Y-m-d'), 'last_login_at' => $worker->last_login_at?->format('Y-m-d H:i') ?? $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:남,여'], 'position' => ['nullable', 'string', 'max:50'], 'company' => ['nullable', 'string', 'max:100'], ]); $user = auth()->user(); $tenantId = session('current_tenant_id', 1); $worker = PmisWorker::findOrCreateFromUser($user, $tenantId); $worker->update([ 'phone' => $request->input('phone'), 'email' => $request->input('email'), 'gender' => $request->input('gender'), 'position' => $request->input('position'), 'company' => $request->input('company'), ]); return response()->json(['success' => true, 'message' => '개인정보가 저장되었습니다.']); } }