using CMSMicroservice.Domain.Enums;
using MediatR;

namespace CMSMicroservice.Application.ManualPaymentCQ.Commands.CreateManualPayment;

/// <summary>
/// دستور ثبت پرداخت دستی توسط Admin
/// </summary>
public class CreateManualPaymentCommand : IRequest<long>
{
    /// <summary>
    /// شناسه کاربری که پرداخت برای او ثبت می‌شود
    /// </summary>
    public long UserId { get; set; }

    /// <summary>
    /// مبلغ تراکنش (تومان) — [DEPRECATED] مبلغ از پکیج خوانده می‌شود
    /// </summary>
    public long Amount { get; set; }

    /// <summary>
    /// شناسه پکیج — اگر 0 باشد، پکیج پایه استفاده می‌شود
    /// </summary>
    public long PackageId { get; set; }

    /// <summary>
    /// نوع تراکنش دستی
    /// </summary>
    public ManualPaymentType Type { get; set; }

    /// <summary>
    /// توضیحات (اجباری)
    /// </summary>
    public string Description { get; set; } = string.Empty;

    /// <summary>
    /// شماره مرجع یا شماره فیش (اختیاری)
    /// </summary>
    public string? ReferenceNumber { get; set; }

    /// <summary>
    /// مسیر تصویر فیش واریزی (اختیاری)
    /// </summary>
    public string? ImagePath { get; set; }

    /// <summary>
    /// شناسه سند در FMS (اختیاری)
    /// </summary>
    public long? ImageDocumentId { get; set; }
}
