validate(['opportunity' => 'nullable|string|max:150', 'history_scope' => 'nullable|in:dossier', 'history_before' => 'nullable|integer|min:1']); $data = $workspace->view($request->user(), $id, $request->query('opportunity'), $request->filled('history_before') ? $request->integer('history_before') : null, $request->query('history_scope') === 'dossier'); return $request->expectsJson() ? response()->json($data) : Inertia::render('investor-path/preparation', ['workspace' => $data]); } public function change(Request $request, string $id, InvestmentPreparationWorkspace $workspace): JsonResponse { return response()->json($workspace->change($request->user(), $id, $request->all())); } public function preview(Request $request, string $id, InvestmentPreparationWorkspace $workspace): \Illuminate\Http\Response { $request->validate(['opportunity' => 'nullable|string|max:150', 'history_scope' => 'nullable|in:dossier']); $data = $workspace->view($request->user(), $id, $request->query('opportunity'), null, $request->query('history_scope') === 'dossier'); return response()->view('investments.preparation-index', ['workspace' => $data, 'manifest' => null])->header('Content-Security-Policy', "sandbox; default-src 'none'; style-src 'unsafe-inline'")->header('X-Content-Type-Options', 'nosniff'); } public function download(Request $request, string $id, string $exportId, InvestmentPreparationWorkspace $workspace): \Illuminate\Http\Response { $request->validate(['opportunity' => 'nullable|string|max:150', 'history_scope' => 'nullable|in:dossier']); $bundle = $workspace->bundle($request->user(), $id, $request->query('opportunity'), $exportId, $request->query('history_scope') === 'dossier'); return response($bundle['bytes'], 200, ['Content-Type' => 'application/zip', 'Content-Disposition' => 'attachment; filename="preparacao-apiex-'.$id.'.zip"', 'X-Export-Id' => $exportId, 'X-Content-Type-Options' => 'nosniff']); } public function export(Request $request, string $id, InvestmentPreparationWorkspace $workspace): \Illuminate\Http\Response { $body = [...$request->all(), 'action' => 'apiex_export']; $state = $workspace->change($request->user(), $id, $body); $bundle = $workspace->bundle($request->user(), $id, $state['opportunity'], $body['operation_key']); return response($bundle['bytes'], 200, ['Content-Type' => 'application/zip', 'Content-Disposition' => 'attachment; filename="preparacao-apiex-'.$id.'.zip"', 'X-Export-Id' => $bundle['export_id'], 'X-Content-Type-Options' => 'nosniff']); } }