AdminReportController.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Report;
  4. use Carbon\Carbon;
  5. use Illuminate\Http\Request;
  6. trait AdminReportController
  7. {
  8. public function updateReport(Request $request, $id)
  9. {
  10. $this->validate($request, [
  11. 'action' => 'required|string',
  12. ]);
  13. $action = $request->input('action');
  14. $actions = [
  15. 'ignore',
  16. 'cw',
  17. 'unlist',
  18. 'delete',
  19. 'shadowban',
  20. 'ban',
  21. ];
  22. if (!in_array($action, $actions)) {
  23. return abort(403);
  24. }
  25. $report = Report::findOrFail($id);
  26. $this->handleReportAction($report, $action);
  27. return response()->json(['msg'=> 'Success']);
  28. }
  29. public function handleReportAction(Report $report, $action)
  30. {
  31. $item = $report->reported();
  32. $report->admin_seen = Carbon::now();
  33. switch ($action) {
  34. case 'ignore':
  35. $report->not_interested = true;
  36. break;
  37. case 'cw':
  38. $item->is_nsfw = true;
  39. $item->save();
  40. $report->nsfw = true;
  41. break;
  42. case 'unlist':
  43. $item->visibility = 'unlisted';
  44. $item->save();
  45. break;
  46. case 'delete':
  47. // Todo: fire delete job
  48. $report->admin_seen = null;
  49. break;
  50. case 'shadowban':
  51. // Todo: fire delete job
  52. $report->admin_seen = null;
  53. break;
  54. case 'ban':
  55. // Todo: fire delete job
  56. $report->admin_seen = null;
  57. break;
  58. default:
  59. $report->admin_seen = null;
  60. break;
  61. }
  62. $report->save();
  63. return $this;
  64. }
  65. }