Files
CMS/src/CMSMicroservice.Domain/Entities/PublicMessage.cs
T
masoodafar-web ba6d74fe35 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.
2025-12-04 03:43:19 +03:30

94 lines
2.5 KiB
C#

using CMSMicroservice.Domain.Common;
using CMSMicroservice.Domain.Enums;
namespace CMSMicroservice.Domain.Entities;
/// <summary>
/// پیام عمومی برای نمایش در سیستم
/// </summary>
public class PublicMessage : BaseAuditableEntity
{
/// <summary>
/// عنوان پیام (حداکثر 200 کاراکتر)
/// </summary>
public string Title { get; set; } = string.Empty;
/// <summary>
/// محتوای پیام (حداکثر 2000 کاراکتر)
/// </summary>
public string Content { get; set; } = string.Empty;
/// <summary>
/// نوع پیام (Announcement, News, Warning, Promotion, SystemUpdate, Event)
/// </summary>
public MessageType Type { get; set; } = MessageType.Announcement;
/// <summary>
/// اولویت پیام (Low, Medium, High, Urgent)
/// </summary>
public MessagePriority Priority { get; set; } = MessagePriority.Medium;
/// <summary>
/// وضعیت فعال/غیرفعال
/// </summary>
public bool IsActive { get; set; } = false;
/// <summary>
/// آیا آرشیو شده است؟
/// </summary>
public bool IsArchived { get; set; } = false;
/// <summary>
/// تاریخ شروع نمایش پیام
/// </summary>
public DateTime? StartDate { get; set; }
/// <summary>
/// تاریخ پایان نمایش پیام
/// </summary>
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; }
/// <summary>
/// تعداد بازدید (اختیاری - برای آمار)
/// </summary>
public int ViewCount { get; set; } = 0;
/// <summary>
/// لینک اختیاری (برای اطلاعات بیشتر)
/// </summary>
public string? LinkUrl { get; set; }
/// <summary>
/// متن دکمه لینک (مثلاً "اطلاعات بیشتر")
/// </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;
}
}