middleware('auth'); } public function showForm(Request $request) { $this->validate($request, [ 'type' => 'required|alpha_dash', 'id' => 'required|integer|min:1', ]); return view('report.form'); } public function notInterestedForm(Request $request) { return view('report.not-interested'); } public function spamForm(Request $request) { return view('report.spam'); } public function spamCommentForm(Request $request) { return view('report.spam.comment'); } public function spamPostForm(Request $request) { return view('report.spam.post'); } public function spamProfileForm(Request $request) { return view('report.spam.profile'); } public function sensitiveCommentForm(Request $request) { return view('report.sensitive.comment'); } public function sensitivePostForm(Request $request) { return view('report.sensitive.post'); } public function sensitiveProfileForm(Request $request) { return view('report.sensitive.profile'); } public function abusiveCommentForm(Request $request) { return view('report.abusive.comment'); } public function abusivePostForm(Request $request) { return view('report.abusive.post'); } public function abusiveProfileForm(Request $request) { return view('report.abusive.profile'); } public function formStore(Request $request) { $this->validate($request, [ 'report' => 'required|alpha_dash', 'type' => 'required|alpha_dash', 'id' => 'required|integer|min:1', 'msg' => 'nullable|string|max:150', ]); $profile = Auth::user()->profile; $reportType = $request->input('report'); $object_id = $request->input('id'); $object_type = $request->input('type'); $msg = $request->input('msg'); $object = null; $types = ['spam', 'sensitive', 'abusive']; if (!in_array($reportType, $types)) { return redirect('/timeline')->with('error', 'Invalid report type'); } switch ($object_type) { case 'post': $object = Status::findOrFail($object_id); $object_type = 'App\Status'; $exists = Report::whereUserId(Auth::id()) ->whereObjectId($object->id) ->whereObjectType('App\Status') ->count(); break; default: return redirect('/timeline')->with('error', 'Invalid report type'); break; } if ($exists !== 0) { return redirect('/timeline')->with('error', 'You have already reported this!'); } if ($object->profile_id == $profile->id) { return redirect('/timeline')->with('error', 'You cannot report your own content!'); } $report = new Report(); $report->profile_id = $profile->id; $report->user_id = Auth::id(); $report->object_id = $object->id; $report->object_type = $object_type; $report->reported_profile_id = $object->profile_id; $report->type = $request->input('report'); $report->message = $request->input('msg'); $report->save(); return redirect('/timeline')->with('status', 'Report successfully sent!'); } }