using CMSMicroservice.Domain.Enums;
namespace CMSMicroservice.Application.CommissionCQ.Queries.GetWithdrawalReports;
///
/// Query برای دریافت گزارش برداشتها
///
public record GetWithdrawalReportsQuery : IRequest
{
///
/// تاریخ شروع
///
public DateTime? StartDate { get; init; }
///
/// تاریخ پایان
///
public DateTime? EndDate { get; init; }
///
/// نوع بازه زمانی (روزانه، هفتگی، ماهانه)
///
public ReportPeriodType PeriodType { get; init; } = ReportPeriodType.Daily;
///
/// فیلتر بر اساس وضعیت
///
public CommissionPayoutStatus? Status { get; init; }
///
/// شناسه کاربر (برای فیلتر کردن بر اساس کاربر خاص)
///
public long? UserId { get; init; }
}
///
/// نوع بازه زمانی گزارش
///
public enum ReportPeriodType
{
Daily = 1,
Weekly = 2,
Monthly = 3
}
///
/// DTO گزارش برداشتها
///
public class WithdrawalReportsDto
{
///
/// گزارشهای بازههای زمانی
///
public List PeriodReports { get; set; } = new();
///
/// خلاصه کلی
///
public WithdrawalSummaryDto Summary { get; set; } = new();
}
///
/// گزارش یک بازه زمانی
///
public class PeriodReportDto
{
///
/// عنوان بازه (مثلاً "هفته 1" یا "دی ماه")
///
public string PeriodLabel { get; set; } = string.Empty;
///
/// تاریخ شروع بازه
///
public DateTime StartDate { get; set; }
///
/// تاریخ پایان بازه
///
public DateTime EndDate { get; set; }
///
/// تعداد کل درخواستها
///
public int TotalRequests { get; set; }
///
/// تعداد درخواستهای در انتظار
///
public int PendingCount { get; set; }
///
/// تعداد درخواستهای تأیید شده
///
public int ApprovedCount { get; set; }
///
/// تعداد درخواستهای رد شده
///
public int RejectedCount { get; set; }
///
/// تعداد درخواستهای موفق
///
public int CompletedCount { get; set; }
///
/// تعداد درخواستهای ناموفق
///
public int FailedCount { get; set; }
///
/// مجموع مبلغ درخواستها
///
public long TotalAmount { get; set; }
///
/// مجموع مبلغ پرداخت شده
///
public long PaidAmount { get; set; }
///
/// مجموع مبلغ در انتظار
///
public long PendingAmount { get; set; }
}
///
/// خلاصه کلی برداشتها
///
public class WithdrawalSummaryDto
{
///
/// تعداد کل درخواستها
///
public int TotalRequests { get; set; }
///
/// مجموع کل مبالغ
///
public long TotalAmount { get; set; }
///
/// مجموع مبلغ پرداخت شده
///
public long TotalPaid { get; set; }
///
/// مجموع مبلغ در انتظار
///
public long TotalPending { get; set; }
///
/// مجموع مبلغ رد شده
///
public long TotalRejected { get; set; }
///
/// میانگین مبلغ هر درخواست
///
public long AverageAmount { get; set; }
///
/// تعداد کاربران منحصر به فرد
///
public int UniqueUsers { get; set; }
///
/// درصد موفقیت (Completed / Total)
///
public decimal SuccessRate { get; set; }
}