56 lines
1.9 KiB
PHP
56 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Domain\Identity\Enums\RoleName;
|
|
use App\Domain\Identity\Models\Role;
|
|
use App\Domain\Inventory\Models\SnipeAsset;
|
|
use App\Models\User;
|
|
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
|
use Illuminate\Database\Seeder;
|
|
|
|
class DatabaseSeeder extends Seeder
|
|
{
|
|
use WithoutModelEvents;
|
|
|
|
/**
|
|
* Seed the application's database.
|
|
*/
|
|
public function run(): void
|
|
{
|
|
$roles = collect(RoleName::cases())->mapWithKeys(fn (RoleName $role) => [
|
|
$role->value => Role::firstOrCreate(
|
|
['name' => $role->value],
|
|
['description' => match ($role) {
|
|
RoleName::Requester => 'Consulta equipamentos e cria requisições.',
|
|
RoleName::Approver => 'Decide requisições e consulta o calendário global.',
|
|
RoleName::InventoryOperator => 'Regista entregas, devoluções e incidentes.',
|
|
RoleName::Administrator => 'Configura e administra todo o portal.',
|
|
RoleName::Auditor => 'Consulta histórico e auditoria sem alterar dados.',
|
|
}]
|
|
),
|
|
]);
|
|
|
|
$demo = User::factory()->create([
|
|
'name' => 'Utilizador de Demonstração',
|
|
'email' => 'demo@escola.pt',
|
|
'department' => 'Docentes',
|
|
]);
|
|
$demo->roles()->attach($roles[RoleName::Requester->value]);
|
|
|
|
$admin = User::factory()->create([
|
|
'name' => 'Administrador do Portal',
|
|
'email' => 'admin@escola.pt',
|
|
'department' => 'Serviços de Informática',
|
|
]);
|
|
$admin->roles()->attach([
|
|
$roles[RoleName::Requester->value]->id,
|
|
$roles[RoleName::Approver->value]->id,
|
|
$roles[RoleName::InventoryOperator->value]->id,
|
|
$roles[RoleName::Administrator->value]->id,
|
|
]);
|
|
|
|
SnipeAsset::factory()->count(18)->create();
|
|
}
|
|
}
|