feat: Initialize core application structure including authentication, role-based dashboards, service task management, and integration workflows.
This commit is contained in:
30
database/seeders/DatabaseSeeder.php
Normal file
30
database/seeders/DatabaseSeeder.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\User;
|
||||
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class DatabaseSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
$this->call([
|
||||
ServiceSeeder::class,
|
||||
RolesAndPermissionsSeeder::class,
|
||||
IntegrationTemplateSeeder::class,
|
||||
]);
|
||||
|
||||
$admin = User::factory()->create([
|
||||
'name' => 'Admin User',
|
||||
'email' => 'admin@admin.com',
|
||||
'password' => bcrypt('password'),
|
||||
]);
|
||||
|
||||
$admin->assignRole('Admin');
|
||||
}
|
||||
}
|
||||
68
database/seeders/IntegrationTemplateSeeder.php
Normal file
68
database/seeders/IntegrationTemplateSeeder.php
Normal file
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\IntegrationTemplate;
|
||||
use App\Models\Service;
|
||||
use App\Models\TemplateServiceItem;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class IntegrationTemplateSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$template = IntegrationTemplate::firstOrCreate([
|
||||
'name' => 'Agent Standard',
|
||||
'is_active' => true,
|
||||
]);
|
||||
|
||||
$services = Service::all();
|
||||
|
||||
foreach ($services as $service) {
|
||||
if ($service->name === 'DSI') {
|
||||
$template->serviceItems()->create([
|
||||
'service_id' => $service->id,
|
||||
'label' => 'Création compte AD',
|
||||
'is_mandatory' => true,
|
||||
]);
|
||||
$template->serviceItems()->create([
|
||||
'service_id' => $service->id,
|
||||
'label' => 'Attribution Ordinateur',
|
||||
'is_mandatory' => true,
|
||||
]);
|
||||
$template->serviceItems()->create([
|
||||
'service_id' => $service->id,
|
||||
'label' => 'Création email',
|
||||
'is_mandatory' => true,
|
||||
]);
|
||||
$template->serviceItems()->create([
|
||||
'service_id' => $service->id,
|
||||
'label' => 'Affectation Téléphonie Fixe',
|
||||
'is_mandatory' => false,
|
||||
]);
|
||||
$template->serviceItems()->create([
|
||||
'service_id' => $service->id,
|
||||
'label' => 'Affectation Téléphone mobile',
|
||||
'is_mandatory' => false,
|
||||
]);
|
||||
$template->serviceItems()->create([
|
||||
'service_id' => $service->id,
|
||||
'label' => 'Accès au SIG',
|
||||
'is_mandatory' => false,
|
||||
]);
|
||||
} elseif ($service->name === 'Batiment') {
|
||||
$template->serviceItems()->create([
|
||||
'service_id' => $service->id,
|
||||
'label' => 'Attribution Badge',
|
||||
'is_mandatory' => true,
|
||||
]);
|
||||
} elseif ($service->name === 'ParcAuto') {
|
||||
$template->serviceItems()->create([
|
||||
'service_id' => $service->id,
|
||||
'label' => 'Création compte vehicule',
|
||||
'is_mandatory' => false,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
54
database/seeders/RolesAndPermissionsSeeder.php
Normal file
54
database/seeders/RolesAndPermissionsSeeder.php
Normal file
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
use Spatie\Permission\Models\Role;
|
||||
use Spatie\Permission\Models\Permission;
|
||||
|
||||
class RolesAndPermissionsSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
// Reset cached roles and permissions
|
||||
app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();
|
||||
|
||||
// Create permissions
|
||||
$permissions = [
|
||||
'create integration',
|
||||
'validate rh',
|
||||
'manage dsi tasks',
|
||||
'manage batiment tasks',
|
||||
'manage parc auto tasks',
|
||||
'view dashboard',
|
||||
'export reports',
|
||||
];
|
||||
|
||||
foreach ($permissions as $permission) {
|
||||
Permission::firstOrCreate(['name' => $permission]);
|
||||
}
|
||||
|
||||
// Create roles and assign permissions
|
||||
Role::firstOrCreate(['name' => 'Admin'])->givePermissionTo(Permission::all());
|
||||
|
||||
Role::firstOrCreate(['name' => 'RH'])->givePermissionTo([
|
||||
'create integration',
|
||||
'validate rh',
|
||||
'view dashboard',
|
||||
'export reports',
|
||||
]);
|
||||
|
||||
$services = ['DSI', 'Batiment', 'ParcAuto'];
|
||||
foreach ($services as $service) {
|
||||
Role::firstOrCreate(['name' => $service])->givePermissionTo([
|
||||
'manage ' . strtolower($service === 'ParcAuto' ? 'parc auto' : $service) . ' tasks',
|
||||
'view dashboard',
|
||||
]);
|
||||
}
|
||||
|
||||
Role::firstOrCreate(['name' => 'Prescripteur'])->givePermissionTo([
|
||||
'create integration',
|
||||
'view dashboard',
|
||||
]);
|
||||
}
|
||||
}
|
||||
23
database/seeders/ServiceSeeder.php
Normal file
23
database/seeders/ServiceSeeder.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
use App\Models\Service;
|
||||
|
||||
class ServiceSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$services = [
|
||||
['name' => 'DSI', 'code' => 'dsi'],
|
||||
['name' => 'Batiment', 'code' => 'batiment'],
|
||||
['name' => 'ParcAuto', 'code' => 'parc_auto'],
|
||||
['name' => 'RH', 'code' => 'rh'],
|
||||
];
|
||||
|
||||
foreach ($services as $service) {
|
||||
\App\Models\Service::updateOrCreate(['code' => $service['code']], ['name' => $service['name']]);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user