Item.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. namespace Domain.Entities.Page.Banner
  2. {
  3. public class BannerItem
  4. {
  5. public virtual BannerPosition BannerPosition { get; private set; } = null!;
  6. public int ID { get; private set; }
  7. public int PositionID { get; private set; }
  8. public string Subject { get; private set; } = default!;
  9. public string? DesktopImage { get; private set; }
  10. public string? MobileImage { get; private set; }
  11. public string? Link { get; private set; }
  12. public short Order { get; private set; } = 0;
  13. public bool IsActive { get; private set; } = false;
  14. public DateTime? StartAt { get; private set; }
  15. public DateTime? EndAt { get; private set; }
  16. public DateTime? UpdatedAt { get; private set; }
  17. public DateTime CreatedAt { get; private set; } = DateTime.UtcNow;
  18. private BannerItem() { }
  19. private BannerItem(
  20. int positionID,
  21. string subject,
  22. string? desktopImage,
  23. string? mobileImage,
  24. string? link,
  25. short order,
  26. bool isActive,
  27. DateTime? startAt,
  28. DateTime? endAt
  29. ) {
  30. if (positionID <= 0)
  31. {
  32. throw new ArgumentOutOfRangeException(nameof(positionID));
  33. }
  34. if (string.IsNullOrWhiteSpace(subject))
  35. {
  36. throw new ArgumentException("Subject is required.", nameof(subject));
  37. }
  38. if (subject.Length > 255)
  39. {
  40. throw new ArgumentOutOfRangeException(nameof(subject));
  41. }
  42. if (order < 0)
  43. {
  44. throw new ArgumentOutOfRangeException(nameof(order));
  45. }
  46. PositionID = positionID;
  47. Subject = subject;
  48. DesktopImage = desktopImage;
  49. MobileImage = mobileImage;
  50. Link = link;
  51. Order = order;
  52. IsActive = isActive;
  53. StartAt = startAt;
  54. EndAt = endAt;
  55. }
  56. public static BannerItem Create(
  57. int positionID,
  58. string subject,
  59. string? desktopImage = null,
  60. string? mobileImage = null,
  61. string? link = null,
  62. short order = 0,
  63. bool isActive = false,
  64. DateTime? startAt = null,
  65. DateTime? endAt = null
  66. ) => new(positionID, subject, desktopImage, mobileImage, link, order, isActive, startAt, endAt);
  67. public void Update(
  68. string subject,
  69. string? desktopImage,
  70. string? mobileImage,
  71. string? link,
  72. short order,
  73. bool isActive,
  74. DateTime? startAt,
  75. DateTime? endAt
  76. ) {
  77. if (string.IsNullOrWhiteSpace(subject))
  78. {
  79. throw new ArgumentException("Subject is required.", nameof(subject));
  80. }
  81. if (subject.Length > 255)
  82. {
  83. throw new ArgumentOutOfRangeException(nameof(subject));
  84. }
  85. if (order < 0)
  86. {
  87. throw new ArgumentOutOfRangeException(nameof(order));
  88. }
  89. Subject = subject;
  90. DesktopImage = desktopImage;
  91. MobileImage = mobileImage;
  92. Link = link;
  93. Order = order;
  94. IsActive = isActive;
  95. StartAt = startAt;
  96. EndAt = endAt;
  97. UpdatedAt = DateTime.UtcNow;
  98. }
  99. public void SetDesktopImage(string? desktopImage)
  100. {
  101. DesktopImage = desktopImage;
  102. UpdatedAt = DateTime.UtcNow;
  103. }
  104. public void SetMobileImage(string? mobileImage)
  105. {
  106. MobileImage = mobileImage;
  107. UpdatedAt = DateTime.UtcNow;
  108. }
  109. }
  110. }