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; } }