Init Commit
This commit is contained in:
138
Backend/GestorFacturas.API/Models/Configuracion.cs
Normal file
138
Backend/GestorFacturas.API/Models/Configuracion.cs
Normal file
@@ -0,0 +1,138 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace GestorFacturas.API.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Entidad que almacena la configuración completa del sistema.
|
||||
/// Solo existe un registro (ID=1) para toda la aplicación.
|
||||
/// </summary>
|
||||
public class Configuracion
|
||||
{
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
|
||||
// ===== CONFIGURACIÓN DE PERIODICIDAD =====
|
||||
/// <summary>
|
||||
/// Tipo de periodicidad: "Minutos", "Dias", "Meses"
|
||||
/// </summary>
|
||||
[Required]
|
||||
[MaxLength(20)]
|
||||
public string Periodicidad { get; set; } = "Dias";
|
||||
|
||||
/// <summary>
|
||||
/// Valor numérico de la periodicidad (ej: 1, 5, 30)
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int ValorPeriodicidad { get; set; } = 1;
|
||||
|
||||
/// <summary>
|
||||
/// Hora específica de ejecución (formato HH:mm:ss)
|
||||
/// </summary>
|
||||
[Required]
|
||||
[MaxLength(10)]
|
||||
public string HoraEjecucion { get; set; } = "00:00:00";
|
||||
|
||||
/// <summary>
|
||||
/// Última vez que se ejecutó el proceso
|
||||
/// </summary>
|
||||
public DateTime? UltimaEjecucion { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Resultado del último proceso (true=Exitoso, false=Con Errores)
|
||||
/// </summary>
|
||||
public bool Estado { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Indica si el servicio está activo o detenido
|
||||
/// </summary>
|
||||
public bool EnEjecucion { get; set; } = false;
|
||||
|
||||
// ===== CONFIGURACIÓN BASE DE DATOS ERP (EXTERNA) =====
|
||||
/// <summary>
|
||||
/// Servidor de SQL Server del ERP
|
||||
/// </summary>
|
||||
[Required]
|
||||
[MaxLength(200)]
|
||||
public string DBServidor { get; set; } = "TECNICA3";
|
||||
|
||||
/// <summary>
|
||||
/// Nombre de la base de datos del ERP
|
||||
/// </summary>
|
||||
[Required]
|
||||
[MaxLength(100)]
|
||||
public string DBNombre { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Usuario de SQL Server (si no usa autenticación integrada)
|
||||
/// </summary>
|
||||
[MaxLength(500)]
|
||||
public string? DBUsuario { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Contraseña de SQL Server (si no usa autenticación integrada)
|
||||
/// </summary>
|
||||
[MaxLength(500)]
|
||||
public string? DBClave { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Usar autenticación integrada de Windows (true) o credenciales SQL (false)
|
||||
/// </summary>
|
||||
public bool DBTrusted { get; set; } = true;
|
||||
|
||||
// ===== RUTAS DE ARCHIVOS =====
|
||||
/// <summary>
|
||||
/// Ruta de red donde se buscan los PDFs originales (Origen)
|
||||
/// </summary>
|
||||
[Required]
|
||||
[MaxLength(500)]
|
||||
public string RutaFacturas { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Ruta de red donde se organizan los PDFs procesados (Destino)
|
||||
/// </summary>
|
||||
[Required]
|
||||
[MaxLength(500)]
|
||||
public string RutaDestino { get; set; } = string.Empty;
|
||||
|
||||
// ===== CONFIGURACIÓN SMTP =====
|
||||
/// <summary>
|
||||
/// Servidor SMTP para envío de alertas
|
||||
/// </summary>
|
||||
[MaxLength(200)]
|
||||
public string? SMTPServidor { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Puerto del servidor SMTP
|
||||
/// </summary>
|
||||
public int SMTPPuerto { get; set; } = 587;
|
||||
|
||||
/// <summary>
|
||||
/// Usuario para autenticación SMTP
|
||||
/// </summary>
|
||||
[MaxLength(500)]
|
||||
public string? SMTPUsuario { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Contraseña para autenticación SMTP
|
||||
/// </summary>
|
||||
[MaxLength(500)]
|
||||
public string? SMTPClave { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Usar SSL/TLS para conexión SMTP
|
||||
/// </summary>
|
||||
public bool SMTPSSL { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Dirección de correo destinatario para alertas
|
||||
/// </summary>
|
||||
[MaxLength(200)]
|
||||
public string? SMTPDestinatario { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Activar/desactivar envío de alertas por correo
|
||||
/// </summary>
|
||||
public bool AvisoMail { get; set; } = false;
|
||||
}
|
||||
95
Backend/GestorFacturas.API/Models/DTOs/ConfiguracionDto.cs
Normal file
95
Backend/GestorFacturas.API/Models/DTOs/ConfiguracionDto.cs
Normal file
@@ -0,0 +1,95 @@
|
||||
namespace GestorFacturas.API.Models.DTOs;
|
||||
|
||||
/// <summary>
|
||||
/// DTO para transferencia de datos de configuración
|
||||
/// </summary>
|
||||
public class ConfiguracionDto
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
// Periodicidad
|
||||
public string Periodicidad { get; set; } = "Dias";
|
||||
public int ValorPeriodicidad { get; set; } = 1;
|
||||
public string HoraEjecucion { get; set; } = "00:00:00";
|
||||
public DateTime? UltimaEjecucion { get; set; }
|
||||
public DateTime? ProximaEjecucion { get; set; }
|
||||
public bool Estado { get; set; }
|
||||
public bool EnEjecucion { get; set; }
|
||||
|
||||
// Base de Datos Externa
|
||||
public string DBServidor { get; set; } = "127.0.0.1";
|
||||
public string DBNombre { get; set; } = string.Empty;
|
||||
public string? DBUsuario { get; set; }
|
||||
public string? DBClave { get; set; }
|
||||
public bool DBTrusted { get; set; } = true;
|
||||
|
||||
// Rutas
|
||||
public string RutaFacturas { get; set; } = string.Empty;
|
||||
public string RutaDestino { get; set; } = string.Empty;
|
||||
|
||||
// SMTP
|
||||
public string? SMTPServidor { get; set; }
|
||||
public int SMTPPuerto { get; set; } = 587;
|
||||
public string? SMTPUsuario { get; set; }
|
||||
public string? SMTPClave { get; set; }
|
||||
public bool SMTPSSL { get; set; } = true;
|
||||
public string? SMTPDestinatario { get; set; }
|
||||
public bool AvisoMail { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DTO para probar conexión a base de datos externa
|
||||
/// </summary>
|
||||
public class ProbarConexionDto
|
||||
{
|
||||
public string Servidor { get; set; } = string.Empty;
|
||||
public string NombreDB { get; set; } = string.Empty;
|
||||
public string? Usuario { get; set; }
|
||||
public string? Clave { get; set; }
|
||||
public bool TrustedConnection { get; set; } = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DTO para probar configuración SMTP
|
||||
/// </summary>
|
||||
public class ProbarSMTPDto
|
||||
{
|
||||
public string Servidor { get; set; } = string.Empty;
|
||||
public int Puerto { get; set; } = 587;
|
||||
public string Usuario { get; set; } = string.Empty;
|
||||
public string Clave { get; set; } = string.Empty;
|
||||
public bool SSL { get; set; } = true;
|
||||
public string Destinatario { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DTO para solicitud de ejecución manual
|
||||
/// </summary>
|
||||
public class EjecucionManualDto
|
||||
{
|
||||
public DateTime FechaDesde { get; set; } = DateTime.Today;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DTO para respuesta de evento
|
||||
/// </summary>
|
||||
public class EventoDto
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public DateTime Fecha { get; set; }
|
||||
public string Mensaje { get; set; } = string.Empty;
|
||||
public string Tipo { get; set; } = string.Empty;
|
||||
public bool Enviado { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DTO para respuesta paginada
|
||||
/// </summary>
|
||||
public class PagedResult<T>
|
||||
{
|
||||
public List<T> Items { get; set; } = new();
|
||||
public int TotalCount { get; set; }
|
||||
public int PageNumber { get; set; }
|
||||
public int PageSize { get; set; }
|
||||
public int TotalPages => (int)Math.Ceiling((double)TotalCount / PageSize);
|
||||
}
|
||||
48
Backend/GestorFacturas.API/Models/Evento.cs
Normal file
48
Backend/GestorFacturas.API/Models/Evento.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace GestorFacturas.API.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Entidad para registro de eventos y auditoría del sistema
|
||||
/// </summary>
|
||||
public class Evento
|
||||
{
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Fecha y hora del evento
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime Fecha { get; set; } = DateTime.Now;
|
||||
|
||||
/// <summary>
|
||||
/// Mensaje descriptivo del evento
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Mensaje { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Tipo de evento: "Info", "Error", "Warning"
|
||||
/// </summary>
|
||||
[Required]
|
||||
[MaxLength(20)]
|
||||
public string Tipo { get; set; } = "Info";
|
||||
|
||||
/// <summary>
|
||||
/// Indica si este evento ya fue notificado por correo
|
||||
/// </summary>
|
||||
public bool Enviado { get; set; } = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Enum para tipos de eventos
|
||||
/// </summary>
|
||||
public enum TipoEvento
|
||||
{
|
||||
Info,
|
||||
Error,
|
||||
Warning
|
||||
}
|
||||
29
Backend/GestorFacturas.API/Models/RefreshToken.cs
Normal file
29
Backend/GestorFacturas.API/Models/RefreshToken.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace GestorFacturas.API.Models;
|
||||
|
||||
public class RefreshToken
|
||||
{
|
||||
[Key]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required]
|
||||
public string Token { get; set; } = string.Empty;
|
||||
|
||||
public DateTime Expires { get; set; }
|
||||
public DateTime Created { get; set; } = DateTime.UtcNow;
|
||||
public DateTime? Revoked { get; set; }
|
||||
|
||||
public bool IsPersistent { get; set; }
|
||||
|
||||
public bool IsExpired => DateTime.UtcNow >= Expires;
|
||||
public bool IsActive => Revoked == null && !IsExpired;
|
||||
|
||||
public int UsuarioId { get; set; }
|
||||
|
||||
[ForeignKey("UsuarioId")]
|
||||
[JsonIgnore]
|
||||
public Usuario? Usuario { get; set; }
|
||||
}
|
||||
17
Backend/GestorFacturas.API/Models/Usuario.cs
Normal file
17
Backend/GestorFacturas.API/Models/Usuario.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
namespace GestorFacturas.API.Models;
|
||||
|
||||
public class Usuario
|
||||
{
|
||||
[Key]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required]
|
||||
[MaxLength(50)]
|
||||
public string Username { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
public string PasswordHash { get; set; } = string.Empty;
|
||||
|
||||
public string Nombre { get; set; } = string.Empty;
|
||||
}
|
||||
Reference in New Issue
Block a user