feat(giving): single-entry giving service with paging + lock guard
Adds GivingListItemDto, GivingDto, CreateGivingRequest, UpdateGivingRequest DTOs; IGivingService interface; GivingService implementation with category/date filtering, OfferingSession lock guard (Submitted/Reconciled), and DI registration in Program.cs. Covered by 4 xUnit tests (TDD: red → green). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
namespace ROLAC.API.DTOs.Giving;
|
||||
|
||||
public class CreateGivingRequest
|
||||
{
|
||||
public int? MemberId { get; set; }
|
||||
[Required] public int GivingCategoryId { get; set; }
|
||||
[Range(0.01, 9999999)] public decimal Amount { get; set; }
|
||||
[Required, MaxLength(20)] public string PaymentMethod { get; set; } = "Cash";
|
||||
[MaxLength(50)] public string? CheckNumber { get; set; }
|
||||
[MaxLength(100)] public string? ZelleReferenceCode { get; set; }
|
||||
[MaxLength(100)] public string? PayPalTransactionId { get; set; }
|
||||
public DateOnly GivingDate { get; set; }
|
||||
public bool IsAnonymous { get; set; }
|
||||
[MaxLength(500)] public string? Notes { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
namespace ROLAC.API.DTOs.Giving;
|
||||
|
||||
public class GivingDto
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public int? MemberId { get; set; }
|
||||
public string? MemberName { get; set; }
|
||||
public int GivingCategoryId { get; set; }
|
||||
public int? OfferingSessionId { get; set; }
|
||||
public decimal Amount { get; set; }
|
||||
public string PaymentMethod { get; set; } = "";
|
||||
public string? CheckNumber { get; set; }
|
||||
public string? ZelleReferenceCode { get; set; }
|
||||
public string? PayPalTransactionId { get; set; }
|
||||
public DateOnly GivingDate { get; set; }
|
||||
public bool IsAnonymous { get; set; }
|
||||
public string? Notes { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
namespace ROLAC.API.DTOs.Giving;
|
||||
|
||||
public class GivingListItemDto
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public int? MemberId { get; set; }
|
||||
public string? MemberName { get; set; }
|
||||
public int GivingCategoryId { get; set; }
|
||||
public string CategoryName { get; set; } = "";
|
||||
public decimal Amount { get; set; }
|
||||
public string PaymentMethod { get; set; } = "";
|
||||
public string GivingDate { get; set; } = ""; // ISO yyyy-MM-dd
|
||||
public bool IsAnonymous { get; set; }
|
||||
public int? OfferingSessionId { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
namespace ROLAC.API.DTOs.Giving;
|
||||
|
||||
public class UpdateGivingRequest : CreateGivingRequest { }
|
||||
Reference in New Issue
Block a user