id = $data['id'] ?? null; // Проверяем право на редактирование $taskData = Task::check_task($task->id); ProjectAccess::requireEditTask($taskData['id_project'], $user_id, (int)($taskData['id_account'] ?? 0), (int)($taskData['create_id_account'] ?? 0)); $task->id_department = $data['id_department'] ?? null; $task->id_label = $data['id_label'] ?? null; $task->id_account = $data['id_account'] ?? null; $task->column_id = $data['column_id'] ?? null; $task->order = $data['order'] ?? null; $task->date = $data['date'] ?? null; $task->title = $data['title'] ?? ''; $task->descript = $data['descript'] ?? ''; $task->descript_full = $data['descript_full'] ?? ''; $result = $task->update(); RestApi::response($result); } // Создание задачи if ($action === 'create') { $project_id = $data['id_project'] ?? null; // Проверяем право на создание задач ProjectAccess::requirePermission($project_id, $user_id, 'create_task'); $task->id_project = $project_id; $task->id_department = $data['id_department'] ?? null; $task->id_label = $data['id_label'] ?? null; $task->id_account = $data['id_account'] ?? null; $task->create_id_account = $user_id; // Создатель задачи $task->column_id = $data['column_id'] ?? null; $task->order = $data['order'] ?? 0; $task->date = $data['date'] ?? null; $task->title = $data['title'] ?? ''; $task->descript = $data['descript'] ?? ''; $task->descript_full = $data['descript_full'] ?? ''; $files = $data['files'] ?? []; $result = $task->create($files); RestApi::response($result); } // Удаление задачи if ($action === 'delete') { $id = $data['id'] ?? null; // Проверяем право на удаление $taskData = Task::check_task($id); ProjectAccess::requirePermission($taskData['id_project'], $user_id, 'delete_task'); $result = Task::delete($id); RestApi::response($result); } // Установка статуса архивации задачи if ($action === 'set_archive') { $id = $data['id'] ?? null; $archive = $data['archive'] ?? 1; // Проверяем право на архивирование $taskData = Task::check_task($id); ProjectAccess::requirePermission($taskData['id_project'], $user_id, 'archive_task'); $result = Task::setArchive($id, $archive); RestApi::response($result); } // Метод не указан if (!$action) { RestApi::response(['success' => false, 'error' => 'Укажите метод'], 400); } } if ($method === 'GET') { // Получение задач проекта // ?id_project=1 (обязательный) // ?archive=0 (неархивные, по умолчанию), ?archive=1 (архивные), ?archive=all (все) $user_id = RestApi::getCurrentUserId(); $id_project = $_GET['id_project'] ?? null; if (!$id_project) { RestApi::response(['success' => false, 'errors' => ['id_project' => 'Проект не указан']], 400); } // Проверяем доступ к проекту ProjectAccess::requireAccess((int)$id_project, $user_id); $archive = $_GET['archive'] ?? 0; if ($archive === 'all') { $archive = null; } else { $archive = (int)$archive; } $task = new Task(); $tasks = $task->getAll($id_project, $archive); RestApi::response(['success' => true, 'data' => $tasks]); } ?>