json(["message" => "Can't create task"], 403); } try { $event = Events::find($request["event_id"]); $event->tasks()->create([ "name" => $request["name"], "description" => $request["description"], "start" => $request["start"], "end" => $request["end"], "location" => $request["location"], "max_participants" => $request["max_participants"], ]); return response()->json(['message' => "Task created"], 200); } catch(\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } public function assignSelf(Request $request): JsonResponse { try { $task = Task::find($request["task_id"]); if($task->max_participants = $task->users()->count()) { return response()->json(["message" => "Max participants reached"], 403); } $task->users()->attach($request->user()->id); return response()->json(['message' => "Task assigned"], 200); } catch (\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } public function assignUser(request $request, int $id): JsonResponse { if(Gate::denies('assignOther', Task::class)) { return response()->json(["message" => "Can't create task"], 403); } try { $task = Task::find($request["task_id"]); if($task->max_participants === $task->users()->count()) { return response()->json(["message" => "Max participants reached"], 403); } $user = User::find($id); if($user) $task->users()->attach($id); return response()->json(['message' => "Task assigned"], 200); } catch(\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } public function getEventTasks(Request $request, int $id): JsonResponse { try { $event = Events::find($id); return response()->json(['data' => $event->tasks()->get()]); } catch(\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } public function deleteTask(Request $request, int $id): JsonResponse { if(Gate::denies('delete', Task::class)) { return response()->json(["message" => "Can't delete task"], 403); } try { $task = Task::find($id); $task->delete(); return response()->json(['message' => "Task deleted"], 200); } catch(\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } public function update(Request $request, int $id): JsonResponse { if(Gate::denies('update', Task::class)) { return response()->json(["message" => "Forbidden"], 403); } try { $task = Task::find($id); $task->name = $request["name"]; $task->description = $request["description"]; $task->start = $request["start"]; $task->end = $request["end"]; $task->location = $request["location"]; $task->max_participants = $request["max_participants"]; $task->save(); return response()->json(['message' => "Task updated"], 200); } catch (\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } }