TaskController.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace App\Http\Controllers\API;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\API\Task\CreateOrUpdateRequest;
  5. use App\Http\Resources\API\TaskDetailResource;
  6. use App\Http\Resources\API\TaskResource;
  7. use App\Models\Task;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Support\Facades\Auth;
  10. class TaskController extends Controller
  11. {
  12. /**
  13. * Display a listing of the resource.
  14. */
  15. public function index(Request $request)
  16. {
  17. $tasks = Task::query()
  18. ->where("parent_id", 0)
  19. ->with(['children', 'assignTo', 'createdBy'])
  20. ->filter($request->all())->paginate();
  21. return TaskResource::collection($tasks);
  22. }
  23. /**
  24. * Store a newly created resource in storage.
  25. */
  26. public function store(CreateOrUpdateRequest $request)
  27. {
  28. Task::create([
  29. ...$request->all(),
  30. 'company_id' => Auth::user()->company_id,
  31. 'created_by' => Auth::id(),
  32. 'whitelist' => $request->whitelist ? sprintf(",%s", implode(',', $request->whitelist)) : null,
  33. ]);
  34. return $this->created();
  35. }
  36. /**
  37. * Display the specified resource.
  38. */
  39. public function show(string $id)
  40. {
  41. $task = Task::query()->findOrFail($id);
  42. return new TaskDetailResource($task);
  43. }
  44. /**
  45. * Update the specified resource in storage.
  46. */
  47. public function update(CreateOrUpdateRequest $request, string $id)
  48. {
  49. $task = Task::query()->findOrFail($id);
  50. $task->fill([...$request->all(),
  51. 'whitelist' => $request->whitelist ? sprintf(",%s", implode(',', $request->whitelist)) : null,
  52. ]);
  53. $task->save();
  54. return $this->noContent();
  55. }
  56. /**
  57. * Remove the specified resource from storage.
  58. */
  59. public function destroy(string $id)
  60. {
  61. $task = Task::query()->findOrFail($id);
  62. $task->delete();
  63. return $this->noContent();
  64. }
  65. }