ApiTaskController.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\TaskPutRequest;
  4. use App\Http\Requests\TaskRequest;
  5. use App\Models\TaskType;
  6. use DateTime;
  7. use Illuminate\Http\JsonResponse;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Http\Response;
  10. use App\Models\Task;
  11. class ApiTaskController extends Controller
  12. {
  13. /**
  14. * Display a listing of the resource.
  15. *
  16. * @param Request $request
  17. * @return JsonResponse
  18. */
  19. public function index(Request $request) {
  20. if ($request->query('TypeList')) {
  21. $listId = $request->query('TypeList', 'AllTasks');
  22. $tasks = $this->filterTasks($listId, $request->user());
  23. }
  24. else {
  25. $tasks = Task::where('user_id', $request->user()->id)->get();
  26. }
  27. return response()->json([
  28. 'success' => true,
  29. 'data' => $tasks,
  30. 'user' => $request->user()
  31. ], 200);
  32. }
  33. private function filterTasks($list_id, $user, $date=null) {
  34. $query = Task::where('user_id', $user->id)->fresh('types');
  35. if ($list_id == 0) {
  36. return $query->get();
  37. }
  38. elseif ($list_id == 1) {
  39. $nowDate = new DateTime('now');
  40. return $query->where('date', '>=', $nowDate)->where('done', false)->get();
  41. }
  42. elseif ($list_id == 2) {
  43. return $query->where('done', true)->get();
  44. }
  45. elseif ($list_id == 3) {
  46. $dateToLost = new DateTime('now');
  47. return $query->where('done', false, 'date')->where('date', '<', $dateToLost)->get();
  48. }
  49. elseif ($list_id == 4) {
  50. if ($date == null)
  51. return [];
  52. $currentDate = DateTime::createFromFormat("d.m.Y", $date);
  53. return $query->where('date', '=', $currentDate)->get();
  54. }
  55. else {
  56. return [];
  57. }
  58. }
  59. /**
  60. * Store a newly created resource in storage.
  61. *
  62. * @param TaskRequest $request
  63. * @return JsonResponse
  64. */
  65. public function store(TaskRequest $request)
  66. {
  67. $data = $request->validated();
  68. $taskType = TaskType::where('name', $data['type_name'])->first();
  69. $data['type_id'] = $taskType->id;
  70. $data['user_id'] = $request->user()->id;
  71. $new_task = Task::create($data);
  72. return response()->json([
  73. 'success' => true,
  74. 'data' => $new_task
  75. ], 201);
  76. }
  77. /**
  78. * Display the specified resource.
  79. *
  80. * @param Request $request
  81. * @param $id
  82. * @return JsonResponse
  83. */
  84. public function show(Request $request, $id)
  85. {
  86. $task = Task::where('id', $id)->first();
  87. if ($request->user()->id != $task->user->id) {
  88. return response()->json([
  89. 'success' => false,
  90. 'errors' => "you do not have permissions"
  91. ], 403);
  92. }
  93. return response()->json([
  94. 'success' => true,
  95. 'data' => Task::where('id', $id)->first()
  96. ], 200);
  97. }
  98. /**
  99. * Update the specified resource in storage.
  100. *
  101. * @param TaskPutRequest $request
  102. * @param int $id
  103. * @return JsonResponse
  104. */
  105. public function update(TaskPutRequest $request, int $id)
  106. {
  107. $task = Task::where('id', $id)->first();
  108. if ($request->user()->id != $task->user->id) {
  109. return response()->json([
  110. 'success' => false,
  111. 'errors' => "you do not have permissions"
  112. ], 403);
  113. }
  114. if (isset($task)) {
  115. try {
  116. $data = $request->validated();
  117. if (isset($data['type_name'])) {
  118. $taskType = TaskType::where('name', $data['type_name'])->first();
  119. $data['type_id'] = $taskType->id;
  120. }
  121. $task->update($data);
  122. }
  123. catch (\Exception $e) {
  124. return response()->json([
  125. 'success' => false,
  126. 'errors' => $e
  127. ], 422);
  128. }
  129. return response()->json([
  130. 'success' => true,
  131. 'data' => Task::where('id', $id)->first()
  132. ], 201);
  133. }
  134. else {
  135. return response()->json([
  136. 'success' => false,
  137. 'errors' => 'Task not found'
  138. ], 402);
  139. }
  140. }
  141. /**
  142. * Remove the specified resource from storage.
  143. *
  144. * @param Request $request
  145. * @param int $id
  146. * @return JsonResponse
  147. */
  148. public function destroy(Request $request, int $id)
  149. {
  150. $task = Task::where('id', $id)->first();
  151. if ($request->user()->id != $task->user->id) {
  152. return response()->json([
  153. 'success' => false,
  154. 'errors' => "you do not have permissions"
  155. ], 403);
  156. }
  157. $task->delete();
  158. return response()->json([
  159. 'success' => true,
  160. 'data' => "ok"
  161. ], 203);
  162. }
  163. }