using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace foundation_system.Models
{
    [Table("cajas_chicas")]
    public class CajaChica
    {
        [Key]
        [Column("id")]
        public int Id { get; set; }

        [Required]
        [StringLength(100)]
        [Column("nombre")]
        public string Nombre { get; set; } = string.Empty;

        [Column("responsable_usuario_id")]
        public long ResponsableUsuarioId { get; set; }
        
        [ForeignKey("ResponsableUsuarioId")]
        public virtual Usuario? Responsable { get; set; }

        [Column("monto_asignado", TypeName = "decimal(10,2)")]
        public decimal MontoAsignado { get; set; }

        [Column("saldo_actual", TypeName = "decimal(10,2)")]
        public decimal SaldoActual { get; set; }

        [Required]
        [StringLength(20)]
        [Column("estado")]
        public string Estado { get; set; } = "ABIERTA"; // ABIERTA, CERRADA, ARQUEO

        [Column("fecha_apertura")]
        public DateOnly FechaApertura { get; set; }

        [Column("fecha_cierre")]
        public DateOnly? FechaCierre { get; set; }

        [Column("creado_en")]
        public DateTime CreadoEn { get; set; } = DateTime.UtcNow;

        [Column("actualizado_en")]
        public DateTime ActualizadoEn { get; set; } = DateTime.UtcNow;

        public virtual ICollection<CajaChicaMovimiento> Movimientos { get; set; } = new List<CajaChicaMovimiento>();
    }
}
