Фиксы...
This commit is contained in:
@@ -30,8 +30,12 @@ class Comment extends BaseEntity {
|
||||
return $errors;
|
||||
}
|
||||
|
||||
// Проверяем что задача существует
|
||||
Task::check_task($this->id_task);
|
||||
// Проверяем что задача существует и не архивная
|
||||
$task = Task::check_task($this->id_task);
|
||||
if ((int)$task['archive'] === 1) {
|
||||
$this->addError('task', 'Нельзя комментировать архивные задачи');
|
||||
return $this->getErrors();
|
||||
}
|
||||
|
||||
// Если это ответ — проверяем что родительский комментарий существует
|
||||
if ($this->id_answer) {
|
||||
@@ -75,6 +79,13 @@ class Comment extends BaseEntity {
|
||||
// Проверяем что комментарий существует
|
||||
$comment = self::checkComment($this->id);
|
||||
|
||||
// Проверяем что задача не архивная
|
||||
$task = Database::get('cards_task', ['archive'], ['id' => $comment['id_task']]);
|
||||
if ($task && (int)$task['archive'] === 1) {
|
||||
$this->addError('task', 'Нельзя редактировать комментарии архивных задач');
|
||||
return $this->getErrors();
|
||||
}
|
||||
|
||||
// Проверяем что пользователь — автор комментария
|
||||
if ((int)$comment['id_accounts'] !== (int)$this->id_accounts) {
|
||||
$this->addError('access', 'Вы можете редактировать только свои комментарии');
|
||||
@@ -99,8 +110,16 @@ class Comment extends BaseEntity {
|
||||
// Проверяем что комментарий существует
|
||||
$comment = self::checkComment($id);
|
||||
|
||||
// Получаем задачу для проверки админа проекта
|
||||
$task = Database::get('cards_task', ['id_project'], ['id' => $comment['id_task']]);
|
||||
// Получаем задачу для проверки админа проекта и архивации
|
||||
$task = Database::get('cards_task', ['id_project', 'archive'], ['id' => $comment['id_task']]);
|
||||
|
||||
// Нельзя удалять комментарии архивных задач
|
||||
if ($task && (int)$task['archive'] === 1) {
|
||||
RestApi::response([
|
||||
'success' => false,
|
||||
'errors' => ['task' => 'Нельзя удалять комментарии архивных задач']
|
||||
], 400);
|
||||
}
|
||||
|
||||
// Проверяем права: автор комментария ИЛИ админ проекта
|
||||
$isAuthor = (int)$comment['id_accounts'] === (int)$id_accounts;
|
||||
|
||||
@@ -112,10 +112,10 @@ class Project extends BaseEntity {
|
||||
|
||||
// ==================== CRUD ПРОЕКТОВ ====================
|
||||
|
||||
// Создание проекта с дефолтными колонками
|
||||
// Создание проекта БЕЗ колонок (колонки создаются на фронте)
|
||||
public static function create($name, $user_id) {
|
||||
// Получаем максимальный id_order
|
||||
$maxOrder = Database::max('project', 'id_order') ?? 0;
|
||||
$maxOrder = (int)(Database::max('project', 'id_order') ?? 0);
|
||||
|
||||
// Создаём проект с создателем как владельцем (id_admin)
|
||||
Database::insert('project', [
|
||||
@@ -129,34 +129,9 @@ class Project extends BaseEntity {
|
||||
return ['success' => false, 'errors' => ['project' => 'Ошибка создания проекта']];
|
||||
}
|
||||
|
||||
// Создаём дефолтные колонки
|
||||
Database::insert('columns', [
|
||||
'name_columns' => 'К выполнению',
|
||||
'color' => '#6366f1',
|
||||
'id_project' => $projectId,
|
||||
'id_order' => 1
|
||||
]);
|
||||
$firstColumnId = Database::id();
|
||||
|
||||
Database::insert('columns', [
|
||||
'name_columns' => 'Готово',
|
||||
'color' => '#22c55e',
|
||||
'id_project' => $projectId,
|
||||
'id_order' => 2
|
||||
]);
|
||||
$readyColumnId = Database::id();
|
||||
|
||||
// Устанавливаем id_ready
|
||||
Database::update('project', ['id_ready' => $readyColumnId], ['id' => $projectId]);
|
||||
|
||||
return [
|
||||
'success' => true,
|
||||
'id' => $projectId,
|
||||
'columns' => [
|
||||
['id' => $firstColumnId, 'name_columns' => 'К выполнению', 'color' => '#6366f1', 'id_order' => 1],
|
||||
['id' => $readyColumnId, 'name_columns' => 'Готово', 'color' => '#22c55e', 'id_order' => 2]
|
||||
],
|
||||
'id_ready' => $readyColumnId,
|
||||
'is_admin' => true
|
||||
];
|
||||
}
|
||||
@@ -237,7 +212,7 @@ class Project extends BaseEntity {
|
||||
}
|
||||
|
||||
// Получаем максимальный id_order для проекта
|
||||
$maxOrder = Database::max('columns', 'id_order', ['id_project' => $project_id]) ?? 0;
|
||||
$maxOrder = (int)(Database::max('columns', 'id_order', ['id_project' => $project_id]) ?? 0);
|
||||
|
||||
Database::insert('columns', [
|
||||
'name_columns' => $name,
|
||||
|
||||
@@ -61,6 +61,9 @@ class Task extends BaseEntity {
|
||||
return $errors;
|
||||
}
|
||||
|
||||
// Формируем дату создания (одна переменная для БД и ответа)
|
||||
$date_create = date('Y-m-d H:i:s');
|
||||
|
||||
// Вставляем в базу
|
||||
Database::insert($this->db_name, [
|
||||
'id_project' => $this->id_project,
|
||||
@@ -75,7 +78,7 @@ class Task extends BaseEntity {
|
||||
'descript' => $this->descript ?: null,
|
||||
'descript_full' => $this->descript_full ?: null,
|
||||
'archive' => 0,
|
||||
'date_create' => date('Y-m-d H:i:s'),
|
||||
'date_create' => $date_create,
|
||||
'file_img' => '[]'
|
||||
]);
|
||||
|
||||
@@ -96,6 +99,9 @@ class Task extends BaseEntity {
|
||||
return [
|
||||
'success' => true,
|
||||
'id' => $this->id,
|
||||
'date' => $this->date ?: null,
|
||||
'date_create' => $date_create,
|
||||
'date_closed' => null,
|
||||
'files' => $uploaded_files
|
||||
];
|
||||
}
|
||||
@@ -108,12 +114,18 @@ class Task extends BaseEntity {
|
||||
}
|
||||
|
||||
// Проверка что задача существует и получаем текущие данные
|
||||
$task = Database::get($this->db_name, ['id', 'column_id', 'order', 'id_project'], ['id' => $this->id]);
|
||||
$task = Database::get($this->db_name, ['id', 'column_id', 'order', 'id_project', 'archive'], ['id' => $this->id]);
|
||||
if (!$task) {
|
||||
$this->addError('task', 'Задача не найдена');
|
||||
return $this->getErrors();
|
||||
}
|
||||
|
||||
// Архивные задачи нельзя редактировать
|
||||
if ((int)$task['archive'] === 1) {
|
||||
$this->addError('task', 'Архивные задачи нельзя редактировать');
|
||||
return $this->getErrors();
|
||||
}
|
||||
|
||||
// Получаем текущую колонку
|
||||
$old_column_id = (int)$task['column_id'];
|
||||
|
||||
@@ -179,14 +191,32 @@ class Task extends BaseEntity {
|
||||
// Загрузка файла к задаче
|
||||
public static function uploadFile($task_id, $file_base64, $file_name) {
|
||||
// Проверка что задача существует
|
||||
self::check_task($task_id);
|
||||
$task = self::check_task($task_id);
|
||||
|
||||
// Архивные задачи нельзя редактировать
|
||||
if ((int)$task['archive'] === 1) {
|
||||
RestApi::response([
|
||||
'success' => false,
|
||||
'errors' => ['task' => 'Нельзя загружать файлы в архивную задачу']
|
||||
], 400);
|
||||
}
|
||||
|
||||
return FileUpload::upload('task', $task_id, $file_base64, $file_name);
|
||||
}
|
||||
|
||||
// Удаление файлов задачи
|
||||
public static function deleteFile($task_id, $file_names) {
|
||||
// Проверка что задача существует
|
||||
self::check_task($task_id);
|
||||
$task = self::check_task($task_id);
|
||||
|
||||
// Архивные задачи нельзя редактировать
|
||||
if ((int)$task['archive'] === 1) {
|
||||
RestApi::response([
|
||||
'success' => false,
|
||||
'errors' => ['task' => 'Нельзя удалять файлы из архивной задачи']
|
||||
], 400);
|
||||
}
|
||||
|
||||
return FileUpload::delete('task', $task_id, $file_names);
|
||||
}
|
||||
|
||||
@@ -199,6 +229,14 @@ class Task extends BaseEntity {
|
||||
$new_column_id = (int)$column_id;
|
||||
$archive = (int)$task['archive'];
|
||||
|
||||
// Архивные задачи нельзя перемещать
|
||||
if ($archive === 1) {
|
||||
RestApi::response([
|
||||
'success' => false,
|
||||
'errors' => ['task' => 'Архивные задачи нельзя перемещать']
|
||||
], 400);
|
||||
}
|
||||
|
||||
// Получаем id_ready (колонка "Готово") из проекта
|
||||
$done_column_id = Project::getReadyColumnId($task['id_project']);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user