CrewDonationSummary.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System.ComponentModel.DataAnnotations;
  2. using System.ComponentModel.DataAnnotations.Schema;
  3. namespace Domain.Entities.Donations;
  4. public class CrewDonationSummary
  5. {
  6. [ForeignKey(nameof(CrewSessionID))]
  7. public virtual CrewSession? CrewSession { get; private set; }
  8. [ForeignKey(nameof(CrewMemberID))]
  9. public virtual CrewMember? CrewMember { get; private set; }
  10. [Key]
  11. public int ID { get; private set; }
  12. public int CrewSessionID { get; private set; }
  13. public int CrewMemberID { get; private set; }
  14. public int TotalAmount { get; private set; }
  15. public int DonationCount { get; private set; }
  16. public decimal ContributionRate { get; private set; }
  17. public int Rank { get; private set; }
  18. public DateTime? UpdatedAt { get; private set; }
  19. public DateTime CreatedAt { get; private set; } = DateTime.UtcNow;
  20. private CrewDonationSummary() { }
  21. public static CrewDonationSummary Create(int crewSessionID, int crewMemberID)
  22. {
  23. return new CrewDonationSummary
  24. {
  25. CrewSessionID = crewSessionID,
  26. CrewMemberID = crewMemberID
  27. };
  28. }
  29. public void AddDonation(int amount)
  30. {
  31. TotalAmount += amount;
  32. DonationCount++;
  33. UpdatedAt = DateTime.UtcNow;
  34. }
  35. public void UpdateContribution(decimal contributionRate, int rank)
  36. {
  37. ContributionRate = contributionRate;
  38. Rank = rank;
  39. UpdatedAt = DateTime.UtcNow;
  40. }
  41. }