Рефакторинг
Убрал лишнее , то что пока не используется.
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user