feat: Implement manual payment system with gRPC service and related commands/queries

This commit is contained in:
masoodafar-web
2025-12-05 17:26:58 +03:30
parent ee1fa9d064
commit 217ef147dd
8 changed files with 257 additions and 5 deletions

View File

@@ -15,6 +15,7 @@ public class GetAllUserOrderByFilterQueryHandler : IRequestHandler<GetAllUserOrd
.Include(i => i.User)
.Include(i => i.FactorDetails)
.ThenInclude(t => t.Product)
.Include(i => i.OrderVAT)
.ApplyOrder(sortBy: request.SortBy)
.AsNoTracking()
.AsQueryable();
@@ -61,7 +62,9 @@ public class GetAllUserOrderByFilterQueryHandler : IRequestHandler<GetAllUserOrd
TrackingCode = x.TrackingCode,
DeliveryDescription = x.DeliveryDescription,
UserFullName = (x.User.FirstName ?? string.Empty) + " " + (x.User.LastName ?? string.Empty),
UserNationalCode = x.User.NationalCode
UserNationalCode = x.User.NationalCode,
VatAmount = x.OrderVAT != null ? x.OrderVAT.VATAmount : 0,
VatPercentage = x.OrderVAT != null ? (double)(x.OrderVAT.VATRate * 100) : 0
})
.ToListAsync(cancellationToken);

View File

@@ -42,6 +42,10 @@ public class GetAllUserOrderByFilterResponseDto
public string? UserFullName { get; set; }
// کدملی کاربر
public string? UserNationalCode { get; set; }
// مبلغ مالیات بر ارزش افزوده (ریال)
public long VatAmount { get; set; }
// درصد مالیات بر ارزش افزوده (مثلاً 9 برای 9٪)
public double VatPercentage { get; set; }
}
public class GetAllUserOrderByFilterResponseModelFactorDetail
{

View File

@@ -16,6 +16,7 @@ public class GetUserOrderQueryHandler : IRequestHandler<GetUserOrderQuery, GetUs
.Include(i => i.User)
.Include(i => i.FactorDetails)
.ThenInclude(t => t.Product)
.Include(i => i.OrderVAT)
.AsNoTracking()
.Where(x => x.Id == request.Id)
.Select(x => new GetUserOrderResponseDto
@@ -43,7 +44,15 @@ public class GetUserOrderQueryHandler : IRequestHandler<GetUserOrderQuery, GetUs
TrackingCode = x.TrackingCode,
DeliveryDescription = x.DeliveryDescription,
UserFullName = (x.User.FirstName ?? string.Empty) + " " + (x.User.LastName ?? string.Empty),
UserNationalCode = x.User.NationalCode
UserNationalCode = x.User.NationalCode,
VatInfo = x.OrderVAT != null ? new OrderVATInfoDto
{
VatRate = x.OrderVAT.VATRate,
BaseAmount = x.OrderVAT.BaseAmount,
VatAmount = x.OrderVAT.VATAmount,
TotalAmount = x.OrderVAT.TotalAmount,
IsPaid = x.OrderVAT.IsPaid
} : null
})
.FirstOrDefaultAsync(cancellationToken);

View File

@@ -27,7 +27,7 @@ public class GetUserOrderResponseDto
public List<GetUserOrderResponseFactorDetail>? FactorDetails { get; set; }
// وضعیت ارسال سفارش
public DeliveryStatus DeliveryStatus { get; set; }
// کد رهگیری مرسوله
// کدرهگیری مرسوله
public string? TrackingCode { get; set; }
// توضیحات ارسال
public string? DeliveryDescription { get; set; }
@@ -35,8 +35,38 @@ public class GetUserOrderResponseDto
public string? UserFullName { get; set; }
// کدملی کاربر
public string? UserNationalCode { get; set; }
// اطلاعات مالیات بر ارزش افزوده
public OrderVATInfoDto? VatInfo { get; set; }
}
}public class GetUserOrderResponseFactorDetail
/// <summary>
/// اطلاعات مالیات بر ارزش افزوده
/// </summary>
public class OrderVATInfoDto
{
/// <summary>
/// نرخ مالیات (مثلاً 0.09 = 9%)
/// </summary>
public decimal VatRate { get; set; }
/// <summary>
/// مبلغ پایه (قبل از مالیات)
/// </summary>
public long BaseAmount { get; set; }
/// <summary>
/// مبلغ مالیات
/// </summary>
public long VatAmount { get; set; }
/// <summary>
/// مبلغ کل (پایه + مالیات)
/// </summary>
public long TotalAmount { get; set; }
/// <summary>
/// آیا پرداخت شده
/// </summary>
public bool IsPaid { get; set; }
}
public class GetUserOrderResponseFactorDetail
{
//شناسه
public long ProductId { get; set; }