120 lines
5.3 KiB
PHP
Executable File
120 lines
5.3 KiB
PHP
Executable File
<?php
|
|
namespace Database\Seeders;
|
|
|
|
use App\Models\CategoriaTicket;
|
|
use App\Models\Soggetto;
|
|
use App\Models\Ticket;
|
|
use App\Models\User;
|
|
use Illuminate\Database\Seeder;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class DemoTicketsSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
$stabileId = DB::table('stabili')->where('codice_stabile', 'DEMO001')->value('id')
|
|
?: DB::table('stabili')->orderBy('id')->value('id');
|
|
|
|
if (! $stabileId) {
|
|
$this->command?->warn('Nessuno stabile disponibile per i ticket demo.');
|
|
return;
|
|
}
|
|
|
|
$unitaCondomino = DB::table('unita_immobiliari')
|
|
->where('stabile_id', $stabileId)
|
|
->where('interno', '1')
|
|
->value('id');
|
|
|
|
$unitaInquilino = DB::table('unita_immobiliari')
|
|
->where('stabile_id', $stabileId)
|
|
->where('interno', '2')
|
|
->value('id');
|
|
|
|
$adminUserId = User::query()->where('email', 'amministratore@demo.netgescon.it')->value('id');
|
|
$condominoUserId = User::query()->where('email', 'condomino@demo.netgescon.it')->value('id');
|
|
$inquilinoUserId = User::query()->where('email', 'inquilino@demo.netgescon.it')->value('id');
|
|
|
|
$condominoSoggettoId = Soggetto::query()->where('email', 'condomino@demo.netgescon.it')->value('id');
|
|
$inquilinoSoggettoId = Soggetto::query()->where('email', 'inquilino@demo.netgescon.it')->value('id');
|
|
|
|
$guastiId = CategoriaTicket::query()->firstOrCreate(
|
|
['nome' => 'Guasti'],
|
|
['descrizione' => 'Guasti e manutenzioni ordinarie']
|
|
)->id;
|
|
|
|
$acquaId = CategoriaTicket::query()->firstOrCreate(
|
|
['nome' => 'Acqua'],
|
|
['descrizione' => 'Segnalazioni acqua e letture contatori']
|
|
)->id;
|
|
|
|
$documentiId = CategoriaTicket::query()->firstOrCreate(
|
|
['nome' => 'Documentazione'],
|
|
['descrizione' => 'Richieste e verifiche documentali']
|
|
)->id;
|
|
|
|
$tickets = [
|
|
[
|
|
'lookup' => 'DEMO-GUASTO-ASCENSORE',
|
|
'stabile_id' => $stabileId,
|
|
'unita_immobiliare_id' => $unitaCondomino,
|
|
'soggetto_richiedente_id' => $condominoSoggettoId,
|
|
'aperto_da_user_id' => $condominoUserId,
|
|
'categoria_ticket_id' => $guastiId,
|
|
'assegnato_a_user_id' => $adminUserId,
|
|
'titolo' => 'Ascensore fermo al piano terra',
|
|
'descrizione' => 'Segnalazione demo: ascensore fermo al piano terra con apertura porte intermittente.',
|
|
'luogo_intervento' => 'Scala A - Ascensore principale',
|
|
'stato' => 'Aperto',
|
|
'priorita' => 'Alta',
|
|
'data_apertura' => now()->subDays(2),
|
|
'data_scadenza_prevista' => now()->addDay(),
|
|
],
|
|
[
|
|
'lookup' => 'DEMO-ACQUA-PERDITA',
|
|
'stabile_id' => $stabileId,
|
|
'unita_immobiliare_id' => $unitaInquilino,
|
|
'soggetto_richiedente_id' => $inquilinoSoggettoId,
|
|
'aperto_da_user_id' => $inquilinoUserId,
|
|
'categoria_ticket_id' => $acquaId,
|
|
'assegnato_a_user_id' => $adminUserId,
|
|
'titolo' => 'Perdita acqua nel vano contatori',
|
|
'descrizione' => 'Segnalazione demo: perdita leggera nel vano contatori con lettura acqua anomala.',
|
|
'luogo_intervento' => 'Piano terra - vano tecnico acqua',
|
|
'stato' => 'In Lavorazione',
|
|
'priorita' => 'Urgente',
|
|
'data_apertura' => now()->subDay(),
|
|
'data_scadenza_prevista' => now()->addDay(),
|
|
],
|
|
[
|
|
'lookup' => 'DEMO-DOC-VERBALE',
|
|
'stabile_id' => $stabileId,
|
|
'unita_immobiliare_id' => $unitaCondomino,
|
|
'soggetto_richiedente_id' => $condominoSoggettoId,
|
|
'aperto_da_user_id' => $condominoUserId,
|
|
'categoria_ticket_id' => $documentiId,
|
|
'assegnato_a_user_id' => $adminUserId,
|
|
'titolo' => 'Richiesta copia verbale assemblea',
|
|
'descrizione' => 'Segnalazione demo: richiesta invio verbale assemblea straordinaria di luglio.',
|
|
'luogo_intervento' => 'Area documentale',
|
|
'stato' => 'Chiuso',
|
|
'priorita' => 'Media',
|
|
'data_apertura' => now()->subDays(8),
|
|
'data_scadenza_prevista' => now()->subDays(6),
|
|
'data_chiusura_effettiva' => now()->subDays(5),
|
|
'data_risoluzione_effettiva' => now()->subDays(5),
|
|
],
|
|
];
|
|
|
|
foreach ($tickets as $ticket) {
|
|
unset($ticket['lookup']);
|
|
|
|
Ticket::query()->updateOrCreate(
|
|
['titolo' => $ticket['titolo']],
|
|
$ticket
|
|
);
|
|
}
|
|
|
|
$this->command?->info('Ticket demo sincronizzati: ' . count($tickets));
|
|
}
|
|
}
|