Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
ensureAccess($request, $caseRecord); $session = AssistantSession::firstOrCreate( ['case_record_id' => $caseRecord->id, 'user_id' => $request->user()->id, 'status' => 'active'], ['title' => 'CaseReady preparation chat', 'phase' => 'understand'] ); if (! $session->disclaimer_accepted_at) { return redirect() ->route('cases.assistant.show', $caseRecord) ->withErrors(['packet' => 'Please accept the CaseReady preparation disclaimer before generating a packet.']); } try { $result = $assistant->packet($caseRecord); } catch (RuntimeException $exception) { return back()->withErrors(['packet' => $exception->getMessage()]); } $packet = $caseRecord->generatedPackets()->create([ 'user_id' => $request->user()->id, 'title' => 'CaseReady Packet - '.$caseRecord->title, 'content' => $result['content'], 'model' => $result['model'] ?? null, 'input_tokens' => $result['input_tokens'] ?? null, 'output_tokens' => $result['output_tokens'] ?? null, ]); $pdf = Pdf::loadView('packets.pdf', [ 'caseRecord' => $caseRecord->fresh(['user', 'documents']), 'packet' => $packet, ])->setPaper('letter'); $path = "cases/{$caseRecord->id}/packets/caseready-packet-{$packet->id}.pdf"; Storage::disk('local')->put($path, $pdf->output()); $packet->update(['path' => $path, 'disk' => 'local']); return redirect()->route('cases.assistant.show', $caseRecord)->with('success', 'CaseReady Packet generated.'); } public function download(Request $request, GeneratedPacket $packet) { $this->ensureAccess($request, $packet->caseRecord); abort_unless($packet->path && Storage::disk($packet->disk)->exists($packet->path), 404); return Storage::disk($packet->disk)->download($packet->path, str($packet->title)->slug().'.pdf'); } private function ensureAccess(Request $request, CaseRecord $caseRecord): void { abort_unless($request->user()->isAdmin() || $caseRecord->user_id === $request->user()->id, 403); } }