TaskController.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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\CustomField;
  8. use App\Models\NamingRule;
  9. use App\Models\Task;
  10. use App\Repositories\CustomFieldRepository;
  11. use Illuminate\Http\Request;
  12. use Illuminate\Support\Facades\Auth;
  13. class TaskController extends Controller
  14. {
  15. /**
  16. * Display a listing of the resource.
  17. */
  18. public function index(Request $request)
  19. {
  20. $tasks = Task::query()
  21. ->where("parent_id", 0)
  22. ->with(['children', 'assignTo', 'createdBy'])
  23. ->filter($request->all())->paginate();
  24. return TaskResource::collection($tasks);
  25. }
  26. /**
  27. * Store a newly created resource in storage.
  28. */
  29. public function store(CreateOrUpdateRequest $request, CustomFieldRepository $customFieldRepo)
  30. {
  31. $formData = [
  32. ...$request->all(),
  33. 'company_id' => Auth::user()->company_id,
  34. 'created_by' => Auth::id(),
  35. 'whitelist' => $request->whitelist ? sprintf(",%s", implode(',', $request->whitelist)) : null,
  36. ];
  37. if ($request->has("naming_rule_id") && $request->get("naming_rule_id") > 0) {
  38. $keys = $customFieldRepo->keysByGroup($request->get("naming_rule_id"));
  39. $formData['naming_rules'] = $request->only($keys);
  40. }
  41. Task::create($formData);
  42. return $this->created();
  43. }
  44. /**
  45. * Display the specified resource.
  46. */
  47. public function show(string $id)
  48. {
  49. $task = Task::query()->findOrFail($id);
  50. return new TaskDetailResource($task);
  51. }
  52. /**
  53. * Update the specified resource in storage.
  54. */
  55. public function update(CreateOrUpdateRequest $request, string $id, CustomFieldRepository $customFieldRepo)
  56. {
  57. $task = Task::query()->findOrFail($id);
  58. $formData = [...$request->all(),
  59. 'whitelist' => $request->whitelist ? sprintf(",%s", implode(',', $request->whitelist)) : null,
  60. ];
  61. if ($request->has("naming_rule_id") && $request->get("naming_rule_id") > 0) {
  62. $keys = $customFieldRepo->keysByGroup($request->get("naming_rule_id"));
  63. $formData['naming_rules'] = $request->only($keys);
  64. }
  65. $task->fill($formData);
  66. $task->save();
  67. return $this->noContent();
  68. }
  69. /**
  70. * Remove the specified resource from storage.
  71. */
  72. public function destroy(string $id)
  73. {
  74. $task = Task::query()->findOrFail($id);
  75. $task->delete();
  76. return $this->noContent();
  77. }
  78. }