header('HX-Request')) { return response('', 200)->header('HX-Redirect', route('documents.index')); } $tenantId = session('selected_tenant_id'); // 템플릿 목록 (필터용) $templates = $tenantId ? DocumentTemplate::where(function ($q) use ($tenantId) { $q->whereNull('tenant_id')->orWhere('tenant_id', $tenantId); })->where('is_active', true)->orderBy('name')->get() : collect(); return view('documents.index', [ 'templates' => $templates, 'statuses' => Document::STATUS_LABELS, ]); } /** * 문서 생성 페이지 */ public function create(Request $request): View|Response { if ($request->header('HX-Request')) { return response('', 200)->header('HX-Redirect', route('documents.create', $request->query())); } $tenantId = session('selected_tenant_id'); $templateId = $request->query('template_id'); // 템플릿 목록 $templates = $tenantId ? DocumentTemplate::where(function ($q) use ($tenantId) { $q->whereNull('tenant_id')->orWhere('tenant_id', $tenantId); })->where('is_active', true)->orderBy('name')->get() : collect(); // 선택된 템플릿 $template = $templateId ? DocumentTemplate::with(['approvalLines', 'basicFields', 'sections.items', 'columns'])->find($templateId) : null; return view('documents.edit', [ 'document' => null, 'template' => $template, 'templates' => $templates, 'isCreate' => true, ]); } /** * 문서 수정 페이지 */ public function edit(int $id): View|Response { if (request()->header('HX-Request')) { return response('', 200)->header('HX-Redirect', route('documents.edit', $id)); } $tenantId = session('selected_tenant_id'); $document = Document::with([ 'template.approvalLines', 'template.basicFields', 'template.sections.items', 'template.columns', 'approvals.user', 'data', 'attachments.file', 'creator', ])->where('tenant_id', $tenantId)->findOrFail($id); // 템플릿 목록 (변경용) $templates = $tenantId ? DocumentTemplate::where(function ($q) use ($tenantId) { $q->whereNull('tenant_id')->orWhere('tenant_id', $tenantId); })->where('is_active', true)->orderBy('name')->get() : collect(); return view('documents.edit', [ 'document' => $document, 'template' => $document->template, 'templates' => $templates, 'isCreate' => false, ]); } /** * 문서 인쇄용 화면 (성적서 양식) */ public function print(int $id): View { $tenantId = session('selected_tenant_id'); $document = Document::with([ 'template.approvalLines', 'template.basicFields', 'template.sections.items', 'template.columns', 'approvals.user', 'data', 'creator', ])->where('tenant_id', $tenantId)->findOrFail($id); return view('documents.print', [ 'document' => $document, ]); } /** * 문서 상세 페이지 (읽기 전용) */ public function show(int $id): View { $tenantId = session('selected_tenant_id'); $document = Document::with([ 'template.approvalLines', 'template.basicFields', 'template.sections.items', 'template.columns', 'approvals.user', 'data', 'attachments.file', 'creator', 'updater', ])->where('tenant_id', $tenantId)->findOrFail($id); return view('documents.show', [ 'document' => $document, ]); } }