Обновлен стартовый экран

Переписаны запросы для статистики, отчетов
Добавлена интеграция отчета сестры
This commit is contained in:
brusnitsyn
2026-05-28 22:10:00 +09:00
parent 90e0d04dfd
commit 739168d427
96 changed files with 6663 additions and 1465 deletions

View File

@@ -2,61 +2,103 @@
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
class PermissionAndRoleSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
Permission::create(['name' => 'Создание отчета']);
Permission::create(['name' => 'Редактирование отчета']);
Permission::create(['name' => 'Просмотр статистики']);
// Сброс кэша перед изменениями
app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();
Permission::create(['name' => 'Создание и редактирование пользователей']);
Permission::create(['name' => 'Создание и редактирование прав и ролей']);
Permission::create(['name' => 'Создание и редактирование метрик']);
// --- Права ---
$permissions = [
// Сводный отчёт (дежурный)
'report.create' => 'Создание сводного отчёта',
'report.edit' => 'Редактирование сводного отчёта (текущий период)',
'report.edit.past' => 'Редактирование сводного отчёта за прошлые периоды (+ нежелательные события, пациенты на контроле)',
'report.view' => 'Просмотр отчётов',
$admin = Role::create(['name' => 'admin']);
$gv = Role::create(['name' => 'gv']);
$zam = Role::create(['name' => 'zam']);
$zav = Role::create(['name' => 'zav']);
$dej = Role::create(['name' => 'dej']);
$nurse = Role::create(['name' => 'nurse']);
// Журнал пациентов (мед. сестра)
'nurse.report.view' => 'Просмотр журнала пациентов',
'nurse.report.create' => 'Создание и редактирование журнала пациентов',
'nurse.report.edit.past' => 'Редактирование журнала пациентов за прошлые периоды',
$admin->givePermissionTo([
'Создание отчета',
'Редактирование отчета',
'Просмотр статистики',
'Создание и редактирование пользователей',
'Создание и редактирование прав и ролей',
'Создание и редактирование метрик',
// Общее
'stats.view' => 'Просмотр статистики',
'users.manage' => 'Управление пользователями',
'roles.manage' => 'Управление ролями и правами',
'metrics.manage' => 'Управление метриками',
];
foreach ($permissions as $name => $label) {
Permission::firstOrCreate(['name' => $name]);
}
// --- Роли (slug совпадает со slug в App\Models\Role) ---
$admin = Role::firstOrCreate(['name' => 'admin']); // Администратор
$gv = Role::firstOrCreate(['name' => 'gv']); // Главный врач
$zam = Role::firstOrCreate(['name' => 'zam']); // Зам. глав. врача
$zav = Role::firstOrCreate(['name' => 'zav']); // Заведующий отделением
$dej = Role::firstOrCreate(['name' => 'dej']); // Врач-дежурный
$nurse = Role::firstOrCreate(['name' => 'nurse']); // Старшая мед. сестра
// --- Назначение прав ---
$admin->syncPermissions(array_keys($permissions));
// Главный врач: полный доступ к отчётам, статистике, метрикам
$gv->syncPermissions([
'report.create',
'report.edit',
'report.edit.past',
'report.view',
'nurse.report.view',
'nurse.report.create',
'nurse.report.edit.past',
'stats.view',
'metrics.manage',
]);
$gv->givePermissionTo([
'Создание отчета',
'Редактирование отчета',
'Просмотр статистики',
// Зам. главного врача: то же что и главный врач
$zam->syncPermissions([
'report.create',
'report.edit',
'report.edit.past',
'report.view',
'nurse.report.view',
'nurse.report.create',
'nurse.report.edit.past',
'stats.view',
'metrics.manage',
]);
$zam->givePermissionTo([
'Создание отчета',
'Редактирование отчета',
'Просмотр статистики',
// Заведующий отделением: создание/редактирование отчётов своего отделения
$zav->syncPermissions([
'report.create',
'report.edit',
'report.edit.past',
'report.view',
'nurse.report.view',
'nurse.report.create',
'nurse.report.edit.past',
'stats.view',
]);
$zav->givePermissionTo([
'Создание отчета',
'Редактирование отчета',
'Просмотр статистики',
// Врач-дежурный: создание сводного + просмотр журнала (без редактирования)
$dej->syncPermissions([
'report.create',
'report.edit',
'report.view',
'nurse.report.view',
]);
$dej->givePermissionTo([
'Создание отчета',
]);
$nurse->givePermissionTo([
'Создание отчета',
// Старшая мед. сестра: журнал пациентов (создание и просмотр)
$nurse->syncPermissions([
'report.view',
'nurse.report.view',
'nurse.report.create',
]);
}
}