using System.ComponentModel.DataAnnotations;
namespace ROLAC.API.DTOs.Disbursement;

public class ChurchProfileDto
{
    public int     Id                { get; set; }
    public string  Name              { get; set; } = "";
    public string? NameZh            { get; set; }
    public string? Phone             { get; set; }
    public string? Email             { get; set; }
    public string? Website           { get; set; }
    public string? Address           { get; set; }
    public string? City              { get; set; }
    public string? State             { get; set; }
    public string? ZipCode           { get; set; }
    public string? BankName          { get; set; }
    public string? BankAccountNumber { get; set; }
    public string? BankRoutingNumber { get; set; }
    public string? PayerEin          { get; set; }
    public int     NextCheckNumber   { get; set; }
    public string  AiProvider         { get; set; } = "Claude";
    public string? ClaudeModel        { get; set; }
    public string? ClaudeApiKeyMasked { get; set; }
    public string? GeminiModel        { get; set; }
    public string? GeminiApiKeyMasked { get; set; }
}

public class UpdateChurchProfileRequest
{
    [Required, MaxLength(200)] public string Name { get; set; } = "";
    [MaxLength(200)] public string? NameZh  { get; set; }
    [MaxLength(50)]  public string? Phone   { get; set; }
    [MaxLength(200), EmailAddress] public string? Email { get; set; }
    [MaxLength(300)] public string? Website { get; set; }
    [MaxLength(500)] public string? Address { get; set; }
    [MaxLength(100)] public string? City    { get; set; }
    [MaxLength(50)]  public string? State   { get; set; }
    [MaxLength(20)]  public string? ZipCode { get; set; }
    [MaxLength(200)] public string? BankName { get; set; }
    [MaxLength(50)]  public string? BankAccountNumber { get; set; }
    [MaxLength(50)]  public string? BankRoutingNumber { get; set; }
    [MaxLength(20)]  public string? PayerEin          { get; set; }
    [Range(1, int.MaxValue)] public int NextCheckNumber { get; set; }
    [MaxLength(20)]  public string  AiProvider   { get; set; } = "Claude";
    [MaxLength(100)] public string? ClaudeModel  { get; set; }
    [MaxLength(500)] public string? ClaudeApiKey { get; set; }   // null/blank = leave unchanged
    [MaxLength(100)] public string? GeminiModel  { get; set; }
    [MaxLength(500)] public string? GeminiApiKey { get; set; }   // null/blank = leave unchanged
}
