From 560fb79bf0392a26529e69ca659c37c4908d425d Mon Sep 17 00:00:00 2001 From: Chris Chen Date: Thu, 25 Jun 2026 17:02:33 -0700 Subject: [PATCH] feat(1099): add recipient DTOs Add Payee1099ListItemDto, Payee1099Dto, and SavePayee1099Request in DTOs/Payee for the 1099 recipient CRUD surface. Co-Authored-By: Claude Opus 4.8 --- API/ROLAC.API/DTOs/Payee/Payee1099Dtos.cs | 54 +++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 API/ROLAC.API/DTOs/Payee/Payee1099Dtos.cs diff --git a/API/ROLAC.API/DTOs/Payee/Payee1099Dtos.cs b/API/ROLAC.API/DTOs/Payee/Payee1099Dtos.cs new file mode 100644 index 0000000..481e952 --- /dev/null +++ b/API/ROLAC.API/DTOs/Payee/Payee1099Dtos.cs @@ -0,0 +1,54 @@ +using System.ComponentModel.DataAnnotations; +namespace ROLAC.API.DTOs.Payee; + +public class Payee1099ListItemDto +{ + public int Id { get; set; } + public string LegalName { get; set; } = ""; + public string? DisplayName { get; set; } + public int? MemberId { get; set; } + public string? MemberName { get; set; } + public string TaxClassification { get; set; } = ""; + public bool Is1099Tracked { get; set; } + public string? TinType { get; set; } + public string? TinLast4 { get; set; } + public string W9Status { get; set; } = ""; + public bool IsActive { get; set; } +} + +public class Payee1099Dto : Payee1099ListItemDto +{ + public string? AddressLine1 { get; set; } + public string? AddressLine2 { get; set; } + public string? City { get; set; } + public string? State { get; set; } + public string? Zip { get; set; } + public string? Email { get; set; } + public string? Phone { get; set; } + public string? W9ReceivedDate { get; set; } + public bool HasW9Document { get; set; } + public string? Notes { get; set; } +} + +public class SavePayee1099Request +{ + [Required, MaxLength(200)] public string LegalName { get; set; } = ""; + [MaxLength(200)] public string? DisplayName { get; set; } + public int? MemberId { get; set; } + [Required, MaxLength(40)] public string TaxClassification { get; set; } = "Individual"; + public bool Is1099Tracked { get; set; } = true; + [MaxLength(10)] public string? TinType { get; set; } + /// Plain TIN; null = leave unchanged on update. Encrypted server-side. + public string? Tin { get; set; } + [MaxLength(100)] public string? AddressLine1 { get; set; } + [MaxLength(100)] public string? AddressLine2 { get; set; } + [MaxLength(60)] public string? City { get; set; } + [MaxLength(2)] public string? State { get; set; } + [MaxLength(10)] public string? Zip { get; set; } + [MaxLength(120)] public string? Email { get; set; } + [MaxLength(40)] public string? Phone { get; set; } + [MaxLength(20)] public string W9Status { get; set; } = "Missing"; + public DateOnly? W9ReceivedDate { get; set; } + public bool IsActive { get; set; } = true; + public string? Notes { get; set; } +}