<?php

namespace App\Commands;

use CodeIgniter\CLI\BaseCommand;
use CodeIgniter\CLI\CLI;
use Config\Clients;
use Config\Database;
use App\Models\VentasModel;
use App\Libraries\FacturacionElectronica;

class ProcesarDTEsTelemas extends BaseCommand
{
    protected $group       = 'DET Manager';
    protected $name        = 'procesardtesTelemas';
    protected $description = 'Procesa DTEs para Telemas';
    protected $arguments   = ['isc' => 'Identificador del sistema de cliente'];
    protected $options     = ['--cant' => 'Cantidad maxima de DTE a tomar de la cola.'];

    public function run(array $params)
    {
        $isc = $params[0] ?? null;
        $cantDte = CLI::getOption('cant') ?? 5;

        if ($isc) {
            $client = new Clients();
            $dbgroup = $client->getDBGroup($isc);
            if ($dbgroup) 
            {
                $systemVersion = $client->getSystem($isc);
                $feStartDate = $client->getFeStartDate($isc);

                $feEnv = $client->getFeEnv($isc);
                $facturacionElectronica = new FacturacionElectronica($feEnv);

                $counter = 1;

                for( $i = 0; $i < $cantDte; $i++)
                {
                    CLI::write('Procesando '.$counter);
                    $feTipoDocumento = '01';
                    if($feTipoDocumento){
                        CLI::write('Preparando DTE');
                        $feCliente = $facturacionElectronica->prepararReceptor(null, $feTipoDocumento);
                        CLI::write('- Cliente listo');
                        $productosVenta = [];
                        $productosVenta[] = [
                            'cant' => '1',
                            'costo' => 50,
                            'descuento' => 0,
                            'tipoprod' => 2,
                            'sku' => '03',
                            'desc' => 'Servicio de cable e internet Mayo 2026'
                        ];
                        $feCuerpoDocumento = $facturacionElectronica->prepararCuerpoDocumento($productosVenta, $feTipoDocumento);
                        CLI::write('- Cuerpo documento listo');
                        $feResumen = $facturacionElectronica->prepararResumenDocumento($feCuerpoDocumento, null, $feTipoDocumento);
                        CLI::write('- Resumen listo');
                        CLI::write('Intentando envio a API');
                        $envioDte = $facturacionElectronica->procesarDTE($feCliente, $feCuerpoDocumento, $feResumen, $feTipoDocumento);
                        
                        if($envioDte->success)
                        {
                            CLI::write('DTE: '.$envioDte->data->numeroControl.' procesado correctamente', 'green');
                        }
                        else{
                            CLI::write('Error al procesar DTE: '.$envioDte->message, 'red');
                        }
                    }
                    else{
                        CLI::write('Tipo de documento no soportado', 'red');
                    }
                    $counter++;
                }
            }
            else 
            {
                $isc = CLI::error('Identificador del sistema de cliente invalido');
            }
        }
        else 
        {
            $isc = CLI::error('Identificador del sistema de cliente invalido');
        }
    }

}