feat: Implement Public Message Management Commands and Queries
- Add GetUserPackageStatusQueryValidator for user package status validation. - Create ArchiveMessageCommand and ArchiveMessageCommandHandler for archiving public messages. - Implement ArchiveMessageCommandValidator to validate message ID. - Introduce PublishMessageCommand and PublishMessageCommandHandler for publishing messages. - Add PublishMessageCommandValidator for validating publish message requests. - Implement GetPublicMessageQuery and GetPublicMessageQueryHandler for retrieving public messages. - Create GetPublicMessageQueryValidator for validating public message requests. - Add ApplyDiscountToOrderCommand and ApplyDiscountToOrderCommandHandler for applying discounts to orders. - Implement ApplyDiscountToOrderCommandValidator for validating discount application requests. - Create UpdateOrderStatusCommand and UpdateOrderStatusCommandHandler for changing order statuses. - Implement UpdateOrderStatusCommandValidator for validating order status updates. - Add CalculateOrderPVQuery and CalculateOrderPVQueryHandler for calculating order PV. - Implement CalculateOrderPVQueryValidator for validating PV calculation requests. - Create GetOrdersByDateRangeQuery and GetOrdersByDateRangeQueryHandler for retrieving orders by date range. - Implement GetOrdersByDateRangeQueryValidator for validating date range queries. - Add PublicMessage entity to represent public messages in the system. - Implement PublicMessageService for handling public message operations via gRPC.
This commit is contained in:
+37
-10
@@ -1,11 +1,10 @@
|
||||
using CMSMicroservice.Domain.Common;
|
||||
using CMSMicroservice.Domain.Enums;
|
||||
|
||||
namespace CMSMicroservice.Domain.Entities.Message;
|
||||
namespace CMSMicroservice.Domain.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// پیامهای عمومی سیستم
|
||||
/// Admin میتواند پیامهای عمومی برای نمایش در داشبورد کاربران ارسال کند
|
||||
/// پیام عمومی برای نمایش در سیستم
|
||||
/// </summary>
|
||||
public class PublicMessage : BaseAuditableEntity
|
||||
{
|
||||
@@ -22,37 +21,52 @@ public class PublicMessage : BaseAuditableEntity
|
||||
/// <summary>
|
||||
/// نوع پیام (Announcement, News, Warning, Promotion, SystemUpdate, Event)
|
||||
/// </summary>
|
||||
public MessageType Type { get; set; }
|
||||
public MessageType Type { get; set; } = MessageType.Announcement;
|
||||
|
||||
/// <summary>
|
||||
/// اولویت پیام (Low, Medium, High, Urgent)
|
||||
/// </summary>
|
||||
public MessagePriority Priority { get; set; }
|
||||
public MessagePriority Priority { get; set; } = MessagePriority.Medium;
|
||||
|
||||
/// <summary>
|
||||
/// وضعیت فعال/غیرفعال
|
||||
/// </summary>
|
||||
public bool IsActive { get; set; }
|
||||
public bool IsActive { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// آیا آرشیو شده است؟
|
||||
/// </summary>
|
||||
public bool IsArchived { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// تاریخ شروع نمایش پیام
|
||||
/// </summary>
|
||||
public DateTime StartsAt { get; set; }
|
||||
public DateTime? StartDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// تاریخ پایان نمایش پیام
|
||||
/// </summary>
|
||||
public DateTime ExpiresAt { get; set; }
|
||||
public DateTime? EndDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// تاریخ انتشار
|
||||
/// </summary>
|
||||
public DateTime? PublishedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// تاریخ آرشیو
|
||||
/// </summary>
|
||||
public DateTime? ArchivedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// شناسه Admin ایجادکننده
|
||||
/// </summary>
|
||||
public long CreatedByUserId { get; set; }
|
||||
public long? CreatedByUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// تعداد بازدید (اختیاری - برای آمار)
|
||||
/// </summary>
|
||||
public int ViewCount { get; set; }
|
||||
public int ViewCount { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// لینک اختیاری (برای اطلاعات بیشتر)
|
||||
@@ -63,4 +77,17 @@ public class PublicMessage : BaseAuditableEntity
|
||||
/// متن دکمه لینک (مثلاً "اطلاعات بیشتر")
|
||||
/// </summary>
|
||||
public string? LinkText { get; set; }
|
||||
|
||||
// Backward compatibility properties (map to StartDate/EndDate)
|
||||
public DateTime? StartsAt
|
||||
{
|
||||
get => StartDate;
|
||||
set => StartDate = value;
|
||||
}
|
||||
|
||||
public DateTime? ExpiresAt
|
||||
{
|
||||
get => EndDate;
|
||||
set => EndDate = value;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user