diff --git a/backend/api/project.php b/backend/api/project.php index c47cd5b..644f285 100644 --- a/backend/api/project.php +++ b/backend/api/project.php @@ -5,7 +5,6 @@ $method = $_SERVER['REQUEST_METHOD']; if ($method === 'POST') { $data = RestApi::getInput(); $action = $data['action'] ?? null; - $project = new Project(); // Получение данных проекта (проект + колонки + отделы) if ($action === 'get_project_data') { @@ -18,41 +17,6 @@ if ($method === 'POST') { } } - // Установка колонки "Готово" для проекта - if ($action === 'set_ready_column') { - $project_id = $data['id_project'] ?? null; - $column_id = $data['column_id'] ?? null; - $result = Project::setReadyColumn($project_id, $column_id); - RestApi::response($result); - } - - // Создание проекта - if ($action === 'create') { - $project->name = $data['name'] ?? ''; - $project->id_ready = $data['id_ready'] ?? null; - - $result = $project->create(); - RestApi::response($result); - } - - // Обновление проекта - if ($action === 'update') { - $project->id = $data['id'] ?? null; - $project->name = $data['name'] ?? ''; - $project->id_ready = $data['id_ready'] ?? null; - $project->id_order = $data['id_order'] ?? null; - - $result = $project->update(); - RestApi::response($result); - } - - // Удаление проекта - if ($action === 'delete') { - $id = $data['id'] ?? null; - $result = Project::delete($id); - RestApi::response($result); - } - // Метод не указан if (!$action) { RestApi::response(['success' => false, 'error' => 'Укажите метод'], 400); diff --git a/backend/app/class/enity/class_project.php b/backend/app/class/enity/class_project.php index 63fd2c5..04a0989 100644 --- a/backend/app/class/enity/class_project.php +++ b/backend/app/class/enity/class_project.php @@ -4,126 +4,6 @@ class Project extends BaseEntity { protected $db_name = 'project'; - // Свойства проекта - public $id; - public $id_order; - public $name; - public $id_ready; - - // Валидация данных - protected function validate() { - static::$error_message = []; - - if (!$this->id) { - $this->addError('id', 'ID проекта не указан'); - } - if (!$this->name) { - $this->addError('name', 'Название проекта не может быть пустым'); - } - - return $this->getErrors(); - } - - // Валидация данных (для create) - protected function validateCreate() { - static::$error_message = []; - - if (!$this->name) { - $this->addError('name', 'Название проекта не может быть пустым'); - } - - return $this->getErrors(); - } - - // Создание проекта - public function create() { - // Валидация - if ($errors = $this->validateCreate()) { - return $errors; - } - - // Получаем максимальный order - $maxOrder = Database::max($this->db_name, 'id_order') ?? 0; - - // Вставляем в базу - Database::insert($this->db_name, [ - 'name' => $this->name, - 'id_order' => $maxOrder + 1, - 'id_ready' => $this->id_ready - ]); - - $this->id = Database::id(); - - return [ - 'success' => true, - 'id' => $this->id - ]; - } - - // Обновление проекта - public function update() { - // Валидация - if ($errors = $this->validate()) { - return $errors; - } - - // Проверка что проект существует - $project = Database::get($this->db_name, ['id'], ['id' => $this->id]); - if (!$project) { - $this->addError('project', 'Проект не найден'); - return $this->getErrors(); - } - - // Формируем данные для обновления - $update_data = [ - 'name' => $this->name - ]; - - // id_ready обновляем только если передан - if ($this->id_ready !== null) { - $update_data['id_ready'] = $this->id_ready; - } - - // id_order обновляем только если передан - if ($this->id_order !== null) { - $update_data['id_order'] = $this->id_order; - } - - // Обновляем в БД - Database::update($this->db_name, $update_data, [ - 'id' => $this->id - ]); - - return ['success' => true]; - } - - // Удаление проекта - public static function delete($id) { - // Проверка что проект существует - $project = self::checkProject($id); - if (!$project) { - return ['success' => false, 'errors' => ['project' => 'Проект не найден']]; - } - - // Удаляем все связанные данные - // Удаляем задачи проекта (и их файлы) - $tasks = Database::select('cards_task', ['id'], ['id_project' => $id]); - foreach ($tasks as $task) { - Task::delete($task['id']); - } - - // Удаляем колонки проекта - Database::delete('columns', ['id_project' => $id]); - - // Удаляем отделы проекта - Database::delete('departments', ['id_project' => $id]); - - // Удаляем сам проект - Database::delete('project', ['id' => $id]); - - return ['success' => true]; - } - // Получение всех проектов public function getAll() { return Database::select($this->db_name, [ @@ -152,30 +32,6 @@ class Project extends BaseEntity { return $project ? (int)$project['id_ready'] : null; } - // Установка id_ready для проекта - public static function setReadyColumn($project_id, $column_id) { - // Проверка что проект существует - $project = self::checkProject($project_id); - if (!$project) { - return ['success' => false, 'errors' => ['project' => 'Проект не найден']]; - } - - // Проверка что колонка существует и принадлежит этому проекту - $column = Database::get('columns', ['id', 'id_project'], ['id' => $column_id]); - if (!$column || (int)$column['id_project'] !== (int)$project_id) { - return ['success' => false, 'errors' => ['column' => 'Колонка не найдена или не принадлежит проекту']]; - } - - // Обновляем id_ready - Database::update('project', [ - 'id_ready' => $column_id - ], [ - 'id' => $project_id - ]); - - return ['success' => true, 'id_ready' => $column_id]; - } - // Получение колонок проекта public static function getColumns($project_id) { return Database::select('columns', [ @@ -222,20 +78,6 @@ class Project extends BaseEntity { 'labels' => $labels ]; } - - // Проверка и получение проекта - public static function checkProject($project_id) { - return Database::get('project', '*', ['id' => $project_id]); - } - - // Проверка проекта с ответом (при ошибке — сразу ответ и exit) - public static function check($project_id) { - $project = self::checkProject($project_id); - if (!$project_id || !$project) { - RestApi::response(['success' => false, 'errors' => ['project' => 'Проект не найден']], 400); - } - return $project; - } } ?> diff --git a/front_vue/src/api.js b/front_vue/src/api.js index e92daa4..239efba 100644 --- a/front_vue/src/api.js +++ b/front_vue/src/api.js @@ -46,36 +46,12 @@ export const projectsApi = { if (active) url += `?active=${active}` return request(url, { credentials: 'include' }) }, - // Получение данных проекта (проект + колонки + отделы) — один запрос вместо трёх + // Получение данных проекта (проект + колонки + отделы) getData: (id_project) => request('/api/project', { method: 'POST', credentials: 'include', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ action: 'get_project_data', id_project }) - }), - create: (data) => request('/api/project', { - method: 'POST', - credentials: 'include', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ action: 'create', ...data }) - }), - update: (data) => request('/api/project', { - method: 'POST', - credentials: 'include', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ action: 'update', ...data }) - }), - delete: (id) => request('/api/project', { - method: 'POST', - credentials: 'include', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ action: 'delete', id }) - }), - setReadyColumn: (id_project, column_id) => request('/api/project', { - method: 'POST', - credentials: 'include', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ action: 'set_ready_column', id_project, column_id }) }) }