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