<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Storage;

class Configuracion extends Model
{
    protected $table = 'configuraciones';

    protected $guarded = ['id'];

    protected $casts = [
        'sri_agente_retencion' => 'boolean',
        'sri_activo' => 'boolean',
        'sri_envio_automatico' => 'boolean',
        'sri_certificado_password' => 'encrypted',
    ];

    /** Devuelve la fila de configuración (crea una por defecto si no existe). */
    public static function actual(): self
    {
        return static::first() ?? static::create(['empresa' => 'AutoTaller Pro', 'igv' => 18]);
    }

    /** RUC sin puntos ni espacios, tal como lo exige el XML del SRI. */
    public function getRucLimpioAttribute(): string
    {
        return preg_replace('/\D/', '', (string) $this->ruc);
    }

    public function getSriListoAttribute(): bool
    {
        return $this->ruc
            && strlen($this->ruc_limpio) === 13
            && $this->sri_certificado_path
            && $this->sri_certificado_password
            && Storage::disk('local')->exists($this->sri_certificado_path);
    }

    /** Ruta absoluta al .p12 en disco (storage/app/private por defecto). */
    public function rutaCertificadoAbsoluta(): ?string
    {
        if (! $this->sri_certificado_path) {
            return null;
        }

        return Storage::disk('local')->path($this->sri_certificado_path);
    }
}
