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 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; } [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 }