MemberGrade.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. namespace Domain.Entities.Members
  2. {
  3. public class MemberGrade
  4. {
  5. public int ID { get; private set; }
  6. public string KorName { get; private set; } = default!;
  7. public string EngName { get; private set; } = default!;
  8. public string? Description { get; private set; }
  9. public short Order { get; private set; } = 0;
  10. public string? Image { get; private set; }
  11. public int RequiredExp { get; private set; } = 0;
  12. public long RequiredAttendance { get; private set; } = 0;
  13. public bool IsActive { get; private set; } = false;
  14. public DateTime? UpdatedAt { get; private set; }
  15. public DateTime CreatedAt { get; private set; } = DateTime.UtcNow;
  16. private MemberGrade() { }
  17. private MemberGrade(string korName, string engName, short order, bool isActive)
  18. {
  19. if (string.IsNullOrWhiteSpace(korName))
  20. {
  21. throw new ArgumentException("KorName is required.", nameof(korName));
  22. }
  23. if (korName.Length > 240)
  24. {
  25. throw new ArgumentOutOfRangeException(nameof(korName));
  26. }
  27. if (string.IsNullOrWhiteSpace(engName))
  28. {
  29. throw new ArgumentException("EngName is required.", nameof(engName));
  30. }
  31. if (engName.Length > 120)
  32. {
  33. throw new ArgumentOutOfRangeException(nameof(engName));
  34. }
  35. if (order < 0)
  36. {
  37. throw new ArgumentOutOfRangeException(nameof(order));
  38. }
  39. KorName = korName;
  40. EngName = engName;
  41. Order = order;
  42. IsActive = isActive;
  43. }
  44. public static MemberGrade Create(string korName, string engName, short order = 0, bool isActive = false)
  45. {
  46. return new(korName, engName, order, isActive);
  47. }
  48. public void Update(string korName, string engName, string? description, short order, string? image, int requiredExp, long requiredAttendance, bool isActive)
  49. {
  50. if (string.IsNullOrWhiteSpace(korName))
  51. {
  52. throw new ArgumentException("KorName is required.", nameof(korName));
  53. }
  54. if (korName.Length > 240)
  55. {
  56. throw new ArgumentOutOfRangeException(nameof(korName));
  57. }
  58. if (string.IsNullOrWhiteSpace(engName))
  59. {
  60. throw new ArgumentException("EngName is required.", nameof(engName));
  61. }
  62. if (engName.Length > 120)
  63. {
  64. throw new ArgumentOutOfRangeException(nameof(engName));
  65. }
  66. if (description is not null && description.Length > 1000)
  67. {
  68. throw new ArgumentOutOfRangeException(nameof(description));
  69. }
  70. if (order < 0)
  71. {
  72. throw new ArgumentOutOfRangeException(nameof(order));
  73. }
  74. if (image is not null && image.Length > 1000)
  75. {
  76. throw new ArgumentOutOfRangeException(nameof(image));
  77. }
  78. if (requiredExp < 0)
  79. {
  80. throw new ArgumentOutOfRangeException(nameof(requiredExp));
  81. }
  82. if (requiredAttendance < 0)
  83. {
  84. throw new ArgumentOutOfRangeException(nameof(requiredAttendance));
  85. }
  86. KorName = korName;
  87. EngName = engName;
  88. Description = description;
  89. Order = order;
  90. Image = image;
  91. RequiredExp = requiredExp;
  92. RequiredAttendance = requiredAttendance;
  93. IsActive = isActive;
  94. UpdatedAt = DateTime.UtcNow;
  95. }
  96. }
  97. }