Рефакторинг
Убрал лишнее , то что пока не используется.
This commit is contained in:
@@ -5,7 +5,6 @@ $method = $_SERVER['REQUEST_METHOD'];
|
|||||||
if ($method === 'POST') {
|
if ($method === 'POST') {
|
||||||
$data = RestApi::getInput();
|
$data = RestApi::getInput();
|
||||||
$action = $data['action'] ?? null;
|
$action = $data['action'] ?? null;
|
||||||
$project = new Project();
|
|
||||||
|
|
||||||
// Получение данных проекта (проект + колонки + отделы)
|
// Получение данных проекта (проект + колонки + отделы)
|
||||||
if ($action === 'get_project_data') {
|
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) {
|
if (!$action) {
|
||||||
RestApi::response(['success' => false, 'error' => 'Укажите метод'], 400);
|
RestApi::response(['success' => false, 'error' => 'Укажите метод'], 400);
|
||||||
|
|||||||
@@ -4,126 +4,6 @@ class Project extends BaseEntity {
|
|||||||
|
|
||||||
protected $db_name = 'project';
|
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() {
|
public function getAll() {
|
||||||
return Database::select($this->db_name, [
|
return Database::select($this->db_name, [
|
||||||
@@ -152,30 +32,6 @@ class Project extends BaseEntity {
|
|||||||
return $project ? (int)$project['id_ready'] : null;
|
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) {
|
public static function getColumns($project_id) {
|
||||||
return Database::select('columns', [
|
return Database::select('columns', [
|
||||||
@@ -222,20 +78,6 @@ class Project extends BaseEntity {
|
|||||||
'labels' => $labels
|
'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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -46,36 +46,12 @@ export const projectsApi = {
|
|||||||
if (active) url += `?active=${active}`
|
if (active) url += `?active=${active}`
|
||||||
return request(url, { credentials: 'include' })
|
return request(url, { credentials: 'include' })
|
||||||
},
|
},
|
||||||
// Получение данных проекта (проект + колонки + отделы) — один запрос вместо трёх
|
// Получение данных проекта (проект + колонки + отделы)
|
||||||
getData: (id_project) => request('/api/project', {
|
getData: (id_project) => request('/api/project', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
credentials: 'include',
|
credentials: 'include',
|
||||||
headers: { 'Content-Type': 'application/json' },
|
headers: { 'Content-Type': 'application/json' },
|
||||||
body: JSON.stringify({ action: 'get_project_data', id_project })
|
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 })
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user