<?php

namespace App\Console\Seeders;

use App\Models\MovimentoContabile;
use App\Models\Stabile;
use App\Models\User;
use Illuminate\Database\Seeder;
use Carbon\Carbon;

class MovimentiContabiliSeeder extends Seeder
{
    public function run()
    {
        // Recupera uno stabile e un utente per i test
        $stabile = Stabile::first();
        $user = User::first();
        
        if (!$stabile || !$user) {
            $this->command->error('Mancano Stabili o Utenti. Esegui prima gli altri seeder.');
            return;
        }

        $this->command->info('Creazione movimenti contabili di test...');

        // Movimenti in Prima Nota
        $movimentiPrimaNota = [
            [
                'stabile_id' => $stabile->id, // Usa 'id' invece di 'id_stabile'
                'data_registrazione' => now()->subDays(5),
                'descrizione' => 'Fattura elettrica Enel - Gen 2025',
                'tipo_movimento' => 'uscita',
                'categoria_movimento' => 'ordinario',
                'importo_totale' => 156.78,
                'iva' => 33.92,
                'importo_netto' => 122.86,
                'stato_movimento' => 'prima_nota',
                'numero_documento' => 'ENEL2025001',
                'protocollo' => 'PROT001/2025',
                'creato_da' => $user->id,
            ],
            [
                'stabile_id' => $stabile->id, // Usa 'id' invece di 'id_stabile'
                'data_registrazione' => now()->subDays(3),
                'descrizione' => 'Fattura gas Eni - Gen 2025',
                'tipo_movimento' => 'uscita',
                'categoria_movimento' => 'ordinario',
                'importo_totale' => 89.45,
                'iva' => 19.48,
                'importo_netto' => 69.97,
                'stato_movimento' => 'prima_nota',
                'numero_documento' => 'ENI2025001',
                'protocollo' => 'PROT002/2025',
                'creato_da' => $user->id,
            ],
            [
                'stabile_id' => $stabile->id, // Usa 'id' invece di 'id_stabile'
                'data_registrazione' => now()->subDays(2),
                'descrizione' => 'Rata condominiale Gennaio 2025',
                'tipo_movimento' => 'entrata',
                'categoria_movimento' => 'ordinario',
                'importo_totale' => 2340.00,
                'iva' => 0.00,
                'importo_netto' => 2340.00,
                'stato_movimento' => 'prima_nota',
                'protocollo' => 'PROT003/2025',
                'creato_da' => $user->id,
            ]
        ];

        // Movimenti già Confermati
        $movimentiConfermati = [
            [
                'stabile_id' => $stabile->id, // Usa 'id' invece di 'id_stabile'
                'data_registrazione' => now()->subDays(10),
                'descrizione' => 'Pulizia scale - Dicembre 2024',
                'tipo_movimento' => 'uscita',
                'categoria_movimento' => 'ordinario',
                'importo_totale' => 250.00,
                'iva' => 55.00,
                'importo_netto' => 195.00,
                'stato_movimento' => 'confermato',
                'data_conferma' => now()->subDays(8),
                'confermato_da' => $user->id,
                'numero_documento' => 'PULIZIE001',
                'protocollo' => 'PROT020/2024',
                'creato_da' => $user->id,
            ],
            [
                'stabile_id' => $stabile->id, // Usa 'id' invece di 'id_stabile'
                'data_registrazione' => now()->subDays(15),
                'descrizione' => 'Riparazione ascensore',
                'tipo_movimento' => 'uscita',
                'categoria_movimento' => 'straordinario',
                'importo_totale' => 850.00,
                'iva' => 187.00,
                'importo_netto' => 663.00,
                'stato_movimento' => 'confermato',
                'data_conferma' => now()->subDays(12),
                'confermato_da' => $user->id,
                'numero_documento' => 'ASC2024001',
                'protocollo' => 'PROT019/2024',
                'creato_da' => $user->id,
            ]
        ];

        // Crea movimenti in prima nota
        foreach ($movimentiPrimaNota as $movimento) {
            MovimentoContabile::create($movimento);
        }

        // Crea movimenti confermati
        foreach ($movimentiConfermati as $movimento) {
            MovimentoContabile::create($movimento);
        }

        $this->command->info('Creati ' . count($movimentiPrimaNota) . ' movimenti in Prima Nota');
        $this->command->info('Creati ' . count($movimentiConfermati) . ' movimenti Confermati');
        $this->command->info('Seeder MovimentiContabili completato!');
    }
}
