namespace ROLAC.API.DTOs.Finance;

public class Form1099BoxDto
{
    public int    Id        { get; set; }
    public string BoxCode   { get; set; } = "";
    public string Name_en   { get; set; } = "";
    public string? Name_zh  { get; set; }
    public string FormType  { get; set; } = "";
    public int    SortOrder { get; set; }
}

public class Form1099RecipientRowDto
{
    public int     PayeeId       { get; set; }
    public string  LegalName     { get; set; } = "";
    public string? TinLast4      { get; set; }
    public string  W9Status      { get; set; } = "";
    public decimal NecTotal      { get; set; }
    public decimal RentsTotal    { get; set; }
    public decimal GrandTotal    { get; set; }
    public bool    MeetsThreshold { get; set; }
    public bool    W9Missing     { get; set; }
}

public class Form1099SummaryDto
{
    public int TaxYear { get; set; }
    public List<Form1099RecipientRowDto> Rows { get; set; } = [];
    public decimal TotalReportable        { get; set; }
    public int     RecipientsAtThreshold  { get; set; }
    public int     RecipientsMissingW9    { get; set; }
}

public class Form1099PaymentDto
{
    public string  PaidDate     { get; set; } = "";
    public string  Description  { get; set; } = "";
    public string  CategoryName { get; set; } = "";
    public string  BoxCode      { get; set; } = "";
    public decimal Amount       { get; set; }
}

public class Form1099RecipientDetailDto
{
    public int    PayeeId   { get; set; }
    public string LegalName { get; set; } = "";
    public string? TinLast4 { get; set; }
    public string W9Status  { get; set; } = "";
    public int    TaxYear   { get; set; }
    public List<Form1099PaymentDto> Payments { get; set; } = [];
}
