netgescon-day0/database/seeders/DatabaseSeeder.php

133 lines
6.0 KiB
PHP
Executable File

<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
$seeders = [
// SuperAdminSeeder::class, // Questo seeder è ora inglobato in TestSetupSeeder
TestSetupSeeder::class, // Chiama il seeder principale di setup
ImpostazioniSeeder::class,
DocumentiDemoSeeder::class, // Documenti demo persistenti
UnitaTipologieSeeder::class,
ChecklistFineAnnoSeeder::class,
];
if (app()->environment(['local', 'development'])) {
$seeders[] = DemoUsersSeeder::class;
}
// Chiama solo il seeder che abbiamo creato.
$this->call($seeders);
// Registra e attiva i moduli di base (Contabilita e StampeRate) se non presenti
if (\Illuminate\Support\Facades\Schema::hasTable('modules')) {
\Illuminate\Support\Facades\DB::table('modules')->updateOrInsert(
['name' => 'Contabilita'],
[
'display_name' => 'Contabilità Avanzata',
'version' => '1.0.0',
'description' => 'Modulo per la gestione della contabilità avanzata, include piano dei conti, registrazioni, bilanci e report.',
'author' => 'Team NetGescon',
'status' => 'active',
'license' => 'commercial',
'price' => 199.00,
'currency' => 'EUR',
'billing' => 'yearly',
'config' => json_encode([
"path" => "app/Modules/Contabilita",
"namespace" => "App\\Modules\\Contabilita",
"auto_install_routes" => true,
"auto_install_migrations" => true,
"cache_enabled" => true,
"api_enabled" => true
]),
'dependencies' => json_encode([]),
'permissions' => json_encode([
"contabilita_view" => "Visualizzare la contabilità",
"contabilita_create" => "Creare registrazioni contabili",
"contabilita_edit" => "Modificare registrazioni contabili",
"contabilita_delete" => "Eliminare registrazioni contabili",
"contabilita_admin" => "Amministrazione completa del modulo contabilità"
]),
'installed_at' => now(),
'created_at' => now(),
'updated_at' => now()
]
);
\Illuminate\Support\Facades\DB::table('modules')->updateOrInsert(
['name' => 'StampeRate'],
[
'display_name' => 'Stampe Rate Avanzate',
'version' => '1.0.0',
'description' => 'Modulo avanzato per la gestione e stampa delle rate condominiali con template personalizzabili',
'author' => 'NetGescon Team',
'status' => 'active',
'license' => 'commercial',
'price' => 99.00,
'currency' => 'EUR',
'billing' => 'yearly',
'config' => json_encode([
'path' => 'app/Modules/StampeRate',
'namespace' => 'App\\Modules\\StampeRate',
'prezzo_annuale' => 99.00,
'categoria' => 'Stampe e Comunicazioni',
'features' => [
'Generazione PDF multipli',
'Template personalizzabili',
'Invio email automatico',
'Tracking aperture email',
'Cronologia e statistiche',
'Export in vari formati'
],
'menu_items' => [
[
'title' => 'Stampe Rate',
'route' => 'stampeRate.index',
'icon' => 'fa-file-pdf',
'permission' => 'stampe_rate_view'
],
[
'title' => 'Template',
'route' => 'stampeRate.templates.index',
'icon' => 'fa-template',
'permission' => 'stampe_rate_templates_manage'
],
[
'title' => 'Cronologia',
'route' => 'stampeRate.history.index',
'icon' => 'fa-history',
'permission' => 'stampe_rate_view'
]
]
]),
'dependencies' => json_encode([]),
'permissions' => json_encode([
'stampe_rate_view' => 'Visualizzare stampe rate',
'stampe_rate_create' => 'Creare nuove stampe',
'stampe_rate_edit' => 'Modificare stampe esistenti',
'stampe_rate_delete' => 'Eliminare stampe',
'stampe_rate_templates_manage' => 'Gestire template',
'stampe_rate_admin' => 'Amministrazione completa modulo'
]),
'installed_at' => now(),
'created_at' => now(),
'updated_at' => now()
]
);
// Resetta cache dei moduli
\Illuminate\Support\Facades\Cache::forget('netgescon.active_modules');
\Illuminate\Support\Facades\Cache::forget('netgescon.modules_menu');
\Illuminate\Support\Facades\Cache::forget('netgescon.modules_permissions');
}
}
}