123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- <?php
- namespace App\Http\Controllers;
- use App\Http\Requests\TaskPutRequest;
- use App\Http\Requests\TaskRequest;
- use App\Models\TaskType;
- use DateTime;
- use Illuminate\Http\JsonResponse;
- use Illuminate\Http\Request;
- use Illuminate\Http\Response;
- use App\Models\Task;
- class ApiTaskController extends Controller
- {
- /**
- * Display a listing of the resource.
- *
- * @param Request $request
- * @return JsonResponse
- */
- public function index(Request $request) {
- if ($request->query('TypeList')) {
- $listId = $request->query('TypeList', 'AllTasks');
- $tasks = $this->filterTasks($listId, $request->user());
- }
- else {
- $tasks = Task::where('user_id', $request->user()->id)->get();
- }
- return response()->json([
- 'success' => true,
- 'data' => $tasks,
- 'user' => $request->user()
- ], 200);
- }
- private function filterTasks($list_id, $user, $date=null) {
- $query = Task::where('user_id', $user->id)->fresh('types');
- if ($list_id == 0) {
- return $query->get();
- }
- elseif ($list_id == 1) {
- $nowDate = new DateTime('now');
- return $query->where('date', '>=', $nowDate)->where('done', false)->get();
- }
- elseif ($list_id == 2) {
- return $query->where('done', true)->get();
- }
- elseif ($list_id == 3) {
- $dateToLost = new DateTime('now');
- return $query->where('done', false, 'date')->where('date', '<', $dateToLost)->get();
- }
- elseif ($list_id == 4) {
- if ($date == null)
- return [];
- $currentDate = DateTime::createFromFormat("d.m.Y", $date);
- return $query->where('date', '=', $currentDate)->get();
- }
- else {
- return [];
- }
- }
- /**
- * Store a newly created resource in storage.
- *
- * @param TaskRequest $request
- * @return JsonResponse
- */
- public function store(TaskRequest $request)
- {
- $data = $request->validated();
- $taskType = TaskType::where('name', $data['type_name'])->first();
- $data['type_id'] = $taskType->id;
- $data['user_id'] = $request->user()->id;
- $new_task = Task::create($data);
- return response()->json([
- 'success' => true,
- 'data' => $new_task
- ], 201);
- }
- /**
- * Display the specified resource.
- *
- * @param Request $request
- * @param $id
- * @return JsonResponse
- */
- public function show(Request $request, $id)
- {
- $task = Task::where('id', $id)->first();
- if ($request->user()->id != $task->user->id) {
- return response()->json([
- 'success' => false,
- 'errors' => "you do not have permissions"
- ], 403);
- }
- return response()->json([
- 'success' => true,
- 'data' => Task::where('id', $id)->first()
- ], 200);
- }
- /**
- * Update the specified resource in storage.
- *
- * @param TaskPutRequest $request
- * @param int $id
- * @return JsonResponse
- */
- public function update(TaskPutRequest $request, int $id)
- {
- $task = Task::where('id', $id)->first();
- if ($request->user()->id != $task->user->id) {
- return response()->json([
- 'success' => false,
- 'errors' => "you do not have permissions"
- ], 403);
- }
- if (isset($task)) {
- try {
- $data = $request->validated();
- if (isset($data['type_name'])) {
- $taskType = TaskType::where('name', $data['type_name'])->first();
- $data['type_id'] = $taskType->id;
- }
- $task->update($data);
- }
- catch (\Exception $e) {
- return response()->json([
- 'success' => false,
- 'errors' => $e
- ], 422);
- }
- return response()->json([
- 'success' => true,
- 'data' => Task::where('id', $id)->first()
- ], 201);
- }
- else {
- return response()->json([
- 'success' => false,
- 'errors' => 'Task not found'
- ], 402);
- }
- }
- /**
- * Remove the specified resource from storage.
- *
- * @param Request $request
- * @param int $id
- * @return JsonResponse
- */
- public function destroy(Request $request, int $id)
- {
- $task = Task::where('id', $id)->first();
- if ($request->user()->id != $task->user->id) {
- return response()->json([
- 'success' => false,
- 'errors' => "you do not have permissions"
- ], 403);
- }
- $task->delete();
- return response()->json([
- 'success' => true,
- 'data' => "ok"
- ], 203);
- }
- }
|