RecentController.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Resources\RecentResource;
  4. use App\Models\Recent;
  5. use App\Services\AuthService;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Http\Response;
  8. use Illuminate\Support\Str;
  9. class RecentController extends Controller
  10. {
  11. /**
  12. * Display a listing of the resource.
  13. *
  14. * @return Response
  15. */
  16. public function index(Request $request)
  17. {
  18. //
  19. switch ($request->view) {
  20. case 'user':
  21. $table = Recent::where('user_uid', $request->input('id'));
  22. break;
  23. default:
  24. return $this->error('known view');
  25. break;
  26. }
  27. if ($request->has('type')) {
  28. $table->where('type', $request->input('type'));
  29. }
  30. $table->orderBy($request->input('order', 'updated_at'), $request->input('dir', 'desc'));
  31. $count = $table->count();
  32. $table->skip($request->input('offset', 0))
  33. ->take($request->input('limit', 1000));
  34. $result = $table->get();
  35. return $this->ok(['rows' => RecentResource::collection($result), 'count' => $count]);
  36. }
  37. /**
  38. * Store a newly created resource in storage.
  39. *
  40. * @return Response
  41. */
  42. public function store(Request $request)
  43. {
  44. $user = AuthService::current($request);
  45. if (! $user) {
  46. return $this->error(__('auth.failed'), [], 401);
  47. }
  48. $validated = $request->validate([
  49. 'type' => 'required',
  50. 'article_id' => 'required',
  51. ]);
  52. $row = Recent::firstOrNew([
  53. 'type' => $request->input('type'),
  54. 'article_id' => $request->input('article_id'),
  55. 'user_uid' => $user['user_uid'],
  56. ], [
  57. 'id' => Str::uuid(),
  58. ]);
  59. $row->param = $request->input('param', null);
  60. $row->save();
  61. return $this->ok(new RecentResource($row));
  62. }
  63. /**
  64. * Display the specified resource.
  65. *
  66. * @return Response
  67. */
  68. public function show(Recent $recent)
  69. {
  70. //
  71. return $this->ok(new RecentResource($recent));
  72. }
  73. /**
  74. * Update the specified resource in storage.
  75. *
  76. * @return Response
  77. */
  78. public function update(Request $request, Recent $recent)
  79. {
  80. //
  81. }
  82. /**
  83. * Remove the specified resource from storage.
  84. *
  85. * @return Response
  86. */
  87. public function destroy(Recent $recent)
  88. {
  89. //
  90. }
  91. }