Важный фикс
Забыл добавить управление отделами :)
This commit is contained in:
@@ -76,9 +76,11 @@ class Project extends BaseEntity {
|
||||
return Database::select('departments', [
|
||||
'id',
|
||||
'name_departments',
|
||||
'color'
|
||||
'color',
|
||||
'order_id'
|
||||
], [
|
||||
'id_project' => $project_id
|
||||
'id_project' => $project_id,
|
||||
'ORDER' => ['order_id' => 'ASC']
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -366,6 +368,100 @@ class Project extends BaseEntity {
|
||||
public static function setReadyColumn($project_id, $column_id, $user_id) {
|
||||
return ['success' => false, 'errors' => ['column' => 'Изменение финальной колонки запрещено. Финальная колонка всегда последняя.']];
|
||||
}
|
||||
|
||||
// ==================== CRUD ОТДЕЛОВ ====================
|
||||
|
||||
// Добавление отдела
|
||||
public static function addDepartment($project_id, $name, $color, $user_id) {
|
||||
if (!ProjectAccess::can($project_id, $user_id, 'manage_departments')) {
|
||||
return ['success' => false, 'errors' => ['access' => 'Нет прав на управление отделами']];
|
||||
}
|
||||
|
||||
// Получаем максимальный order_id для проекта
|
||||
$maxOrder = (int)(Database::max('departments', 'order_id', ['id_project' => $project_id]) ?? 0);
|
||||
$newOrderId = $maxOrder + 1;
|
||||
|
||||
Database::insert('departments', [
|
||||
'name_departments' => $name,
|
||||
'color' => $color ?: '#6366f1',
|
||||
'id_project' => $project_id,
|
||||
'order_id' => $newOrderId
|
||||
]);
|
||||
|
||||
$departmentId = Database::id();
|
||||
return [
|
||||
'success' => true,
|
||||
'id' => $departmentId,
|
||||
'department' => [
|
||||
'id' => $departmentId,
|
||||
'name_departments' => $name,
|
||||
'color' => $color ?: '#6366f1',
|
||||
'order_id' => $newOrderId
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
// Обновление отдела
|
||||
public static function updateDepartment($id, $name, $color, $user_id) {
|
||||
// Получаем отдел для проверки проекта
|
||||
$department = Database::get('departments', ['id_project'], ['id' => $id]);
|
||||
if (!$department) {
|
||||
return ['success' => false, 'errors' => ['department' => 'Отдел не найден']];
|
||||
}
|
||||
|
||||
if (!ProjectAccess::can($department['id_project'], $user_id, 'manage_departments')) {
|
||||
return ['success' => false, 'errors' => ['access' => 'Нет прав на управление отделами']];
|
||||
}
|
||||
|
||||
$updateData = [];
|
||||
if ($name !== null) $updateData['name_departments'] = $name;
|
||||
if ($color !== null) $updateData['color'] = $color;
|
||||
|
||||
if (!empty($updateData)) {
|
||||
Database::update('departments', $updateData, ['id' => $id]);
|
||||
}
|
||||
|
||||
return ['success' => true];
|
||||
}
|
||||
|
||||
// Получение количества задач в отделе
|
||||
public static function getDepartmentTasksCount($department_id) {
|
||||
return Database::count('cards_task', ['id_department' => $department_id]);
|
||||
}
|
||||
|
||||
// Удаление отдела (обнуляет id_department у задач)
|
||||
public static function deleteDepartment($id, $user_id) {
|
||||
// Получаем отдел для проверки проекта
|
||||
$department = Database::get('departments', ['id_project'], ['id' => $id]);
|
||||
if (!$department) {
|
||||
return ['success' => false, 'errors' => ['department' => 'Отдел не найден']];
|
||||
}
|
||||
|
||||
if (!ProjectAccess::can($department['id_project'], $user_id, 'manage_departments')) {
|
||||
return ['success' => false, 'errors' => ['access' => 'Нет прав на управление отделами']];
|
||||
}
|
||||
|
||||
// Обнуляем id_department у задач (не удаляем сами задачи)
|
||||
Database::update('cards_task', ['id_department' => null], ['id_department' => $id]);
|
||||
|
||||
// Удаляем отдел
|
||||
Database::delete('departments', ['id' => $id]);
|
||||
|
||||
return ['success' => true];
|
||||
}
|
||||
|
||||
// Обновление порядка отделов
|
||||
public static function updateDepartmentsOrder($project_id, $ids, $user_id) {
|
||||
if (!ProjectAccess::can($project_id, $user_id, 'manage_departments')) {
|
||||
return ['success' => false, 'errors' => ['access' => 'Нет прав на управление отделами']];
|
||||
}
|
||||
|
||||
foreach ($ids as $order => $id) {
|
||||
Database::update('departments', ['order_id' => $order + 1], ['id' => $id, 'id_project' => $project_id]);
|
||||
}
|
||||
|
||||
return ['success' => true];
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user