using CMSMicroservice.Domain.Enums;
using MediatR;

namespace CMSMicroservice.Application.PublicMessageCQ.Commands.CreatePublicMessage;

/// <summary>
/// دستور ایجاد پیام عمومی
/// Admin می‌تواند پیام عمومی برای نمایش در داشبورد کاربران ایجاد کند
/// </summary>
public class CreatePublicMessageCommand : IRequest<long>
{
    /// <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 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; }
}
