using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace GestorFacturas.API.Models; /// /// Entidad que almacena la configuración completa del sistema. /// Solo existe un registro (ID=1) para toda la aplicación. /// public class Configuracion { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } // ===== CONFIGURACIÓN DE PERIODICIDAD ===== /// /// Tipo de periodicidad: "Minutos", "Dias", "Meses" /// [Required] [MaxLength(20)] public string Periodicidad { get; set; } = "Dias"; /// /// Valor numérico de la periodicidad (ej: 1, 5, 30) /// [Required] public int ValorPeriodicidad { get; set; } = 1; /// /// Hora específica de ejecución (formato HH:mm:ss) /// [Required] [MaxLength(10)] public string HoraEjecucion { get; set; } = "00:00:00"; /// /// Última vez que se ejecutó el proceso /// public DateTime? UltimaEjecucion { get; set; } /// /// Resultado del último proceso (true=Exitoso, false=Con Errores) /// public bool Estado { get; set; } = true; /// /// Indica si el servicio está activo o detenido /// public bool EnEjecucion { get; set; } = false; // ===== CONFIGURACIÓN BASE DE DATOS ERP (EXTERNA) ===== /// /// Servidor de SQL Server del ERP /// [Required] [MaxLength(200)] public string DBServidor { get; set; } = "TECNICA3"; /// /// Nombre de la base de datos del ERP /// [Required] [MaxLength(100)] public string DBNombre { get; set; } = string.Empty; /// /// Usuario de SQL Server (si no usa autenticación integrada) /// [MaxLength(500)] public string? DBUsuario { get; set; } /// /// Contraseña de SQL Server (si no usa autenticación integrada) /// [MaxLength(500)] public string? DBClave { get; set; } /// /// Usar autenticación integrada de Windows (true) o credenciales SQL (false) /// public bool DBTrusted { get; set; } = true; // ===== RUTAS DE ARCHIVOS ===== /// /// Ruta de red donde se buscan los PDFs originales (Origen) /// [Required] [MaxLength(500)] public string RutaFacturas { get; set; } = string.Empty; /// /// Ruta de red donde se organizan los PDFs procesados (Destino) /// [Required] [MaxLength(500)] public string RutaDestino { get; set; } = string.Empty; // ===== CONFIGURACIÓN SMTP ===== /// /// Servidor SMTP para envío de alertas /// [MaxLength(200)] public string? SMTPServidor { get; set; } /// /// Puerto del servidor SMTP /// public int SMTPPuerto { get; set; } = 587; /// /// Usuario para autenticación SMTP /// [MaxLength(500)] public string? SMTPUsuario { get; set; } /// /// Contraseña para autenticación SMTP /// [MaxLength(500)] public string? SMTPClave { get; set; } /// /// Usar SSL/TLS para conexión SMTP /// public bool SMTPSSL { get; set; } = true; /// /// Dirección de correo destinatario para alertas /// [MaxLength(200)] public string? SMTPDestinatario { get; set; } /// /// Activar/desactivar envío de alertas por correo /// public bool AvisoMail { get; set; } = false; }