SettlementAccount.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System.ComponentModel.DataAnnotations;
  2. using System.ComponentModel.DataAnnotations.Schema;
  3. using Domain.Entities.Members;
  4. namespace Domain.Entities.Donations;
  5. public class SettlementAccount
  6. {
  7. [ForeignKey(nameof(ChannelID))]
  8. public virtual Channel? Channel { get; private set; }
  9. [ForeignKey(nameof(MemberID))]
  10. public virtual Member? Member { get; private set; }
  11. [Key]
  12. public int ID { get; private set; }
  13. public int ChannelID { get; private set; }
  14. public int MemberID { get; private set; }
  15. public string BankCode { get; private set; } = default!;
  16. public string BankName { get; private set; } = default!;
  17. public string AccountNumber { get; private set; } = default!;
  18. public string AccountHolder { get; private set; } = default!;
  19. public bool IsVerified { get; private set; }
  20. public DateTime CreatedAt { get; private set; } = DateTime.UtcNow;
  21. public DateTime UpdatedAt { get; private set; } = DateTime.UtcNow;
  22. private SettlementAccount() { }
  23. public static SettlementAccount Create(
  24. int channelID,
  25. int memberID,
  26. string bankCode,
  27. string bankName,
  28. string accountNumber,
  29. string accountHolder
  30. ) {
  31. return new SettlementAccount
  32. {
  33. ChannelID = channelID,
  34. MemberID = memberID,
  35. BankCode = bankCode,
  36. BankName = bankName,
  37. AccountNumber = accountNumber,
  38. AccountHolder = accountHolder,
  39. IsVerified = true
  40. };
  41. }
  42. public void Update(string bankCode, string bankName, string accountNumber, string accountHolder)
  43. {
  44. BankCode = bankCode;
  45. BankName = bankName;
  46. AccountNumber = accountNumber;
  47. AccountHolder = accountHolder;
  48. IsVerified = true;
  49. UpdatedAt = DateTime.UtcNow;
  50. }
  51. }