middleware('auth'); } /** * Store a newly created summary report in storage. */ public function store(Request $request, Book $book) { $validated = $request->validate([ 'reason' => 'required|string|max:100', 'details' => 'nullable|string|max:5000', ]); // Try to prevent duplicate reports from the same user for the same book $report = SummaryReport::firstOrCreate( [ 'user_id' => $request->user()->id, 'book_id' => $book->id, ], [ 'summary_id' => optional($book->summary)->id, 'reason' => $validated['reason'], 'details' => $validated['details'] ?? null, 'status' => 'open', ] ); if (!$report->wasRecentlyCreated) { // If already exists, update reason/details in case user adds more context $report->update([ 'reason' => $validated['reason'], 'details' => $validated['details'] ?? $report->details, 'summary_id' => optional($book->summary)->id, ]); } return back()->with('success', 'Thanks! Your report has been submitted. We will review it soon.'); } }