using CMSMicroservice.Domain.Enums;
using MediatR;

namespace CMSMicroservice.Application.PublicMessageCQ.Commands.UpdatePublicMessage;

/// <summary>
/// دستور ویرایش پیام عمومی
/// Admin می‌تواند پیام‌های منقضی نشده را ویرایش کند
/// </summary>
public class UpdatePublicMessageCommand : IRequest<Unit>
{
    /// <summary>
    /// شناسه پیام
    /// </summary>
    public long Id { get; set; }

    /// <summary>
    /// عنوان پیام (حداکثر 200 کاراکتر)
    /// </summary>
    public string Title { get; set; } = string.Empty;

    /// <summary>
    /// محتوای پیام (حداکثر 2000 کاراکتر)
    /// </summary>
    public string Content { get; set; } = string.Empty;

    /// <summary>
    /// نوع پیام
    /// </summary>
    public MessageType Type { get; set; }

    /// <summary>
    /// اولویت پیام
    /// </summary>
    public MessagePriority Priority { get; set; }

    /// <summary>
    /// وضعیت فعال/غیرفعال
    /// </summary>
    public bool IsActive { get; set; }

    /// <summary>
    /// تاریخ شروع نمایش
    /// </summary>
    public DateTime StartsAt { get; set; }

    /// <summary>
    /// تاریخ پایان نمایش
    /// </summary>
    public DateTime ExpiresAt { get; set; }

    /// <summary>
    /// لینک اختیاری
    /// </summary>
    public string? LinkUrl { get; set; }

    /// <summary>
    /// متن دکمه لینک
    /// </summary>
    public string? LinkText { get; set; }
}
