start tasks module

This commit is contained in:
root
2026-01-23 08:48:06 +03:00
parent 283b9132a0
commit 725c62a179
22 changed files with 2489 additions and 6 deletions
@@ -0,0 +1,89 @@
<?php
namespace App\Modules\Tasks\Models;
use CodeIgniter\Model;
use App\Models\Traits\TenantScopedModel;
class TaskColumnModel extends Model
{
use TenantScopedModel;
protected $table = 'task_columns';
protected $primaryKey = 'id';
protected $useAutoIncrement = true;
protected $returnType = 'array';
protected $useSoftDeletes = false;
protected $tenantField = 'organization_id';
protected $allowedFields = [
'board_id',
'name',
'color',
'order_index',
'is_default',
];
protected $useTimestamps = true;
protected $createdField = 'created_at';
protected $updatedField = 'updated_at';
/**
* Получить колонки доски
*/
public function getColumnsByBoard(int $boardId): array
{
return $this->where('board_id', $boardId)
->orderBy('order_index', 'ASC')
->findAll();
}
/**
* Получить следующий порядковый номер для колонки
*/
public function getNextOrderIndex(int $boardId): int
{
$max = $this->selectMax('order_index')
->where('board_id', $boardId)
->first();
return ($max['order_index'] ?? 0) + 1;
}
/**
* Создать дефолтные колонки для новой доски
*/
public function createDefaultColumns(int $boardId): bool
{
$defaultColumns = [
[
'board_id' => $boardId,
'name' => 'К выполнению',
'color' => '#6B7280',
'order_index' => 1,
'is_default' => 0,
],
[
'board_id' => $boardId,
'name' => 'В работе',
'color' => '#3B82F6',
'order_index' => 2,
'is_default' => 0,
],
[
'board_id' => $boardId,
'name' => 'На проверке',
'color' => '#F59E0B',
'order_index' => 3,
'is_default' => 0,
],
[
'board_id' => $boardId,
'name' => 'Завершено',
'color' => '#10B981',
'order_index' => 4,
'is_default' => 0,
],
];
return $this->insertBatch($defaultColumns);
}
}