namespace SIGCM.Domain.Entities;

public class CashSession
{
  public int Id { get; set; }
  public int UserId { get; set; }
  public DateTime OpeningDate { get; set; }
  public DateTime? ClosingDate { get; set; }
  public string Status { get; set; } = "Open"; // Open, PendingValidation, Closed

  // Apertura
  public decimal OpeningBalance { get; set; }

  // Declaración del Cajero
  public decimal? DeclaredCash { get; set; }
  public decimal? DeclaredCards { get; set; }
  public decimal? DeclaredTransfers { get; set; }

  // Valores calculados por Sistema
  public decimal? SystemExpectedCash { get; set; }
  public decimal? SystemExpectedCards { get; set; }
  public decimal? SystemExpectedTransfers { get; set; }

  public decimal? TotalDifference { get; set; }

  // Auditoría de Validación
  public int? ValidatedByUserId { get; set; }
  public DateTime? ValidationDate { get; set; }
  public string? ValidationNotes { get; set; }

  // Auxiliares para UI
  public string? Username { get; set; }
  public string? ValidatorName { get; set; }
}