Add delivery status and tracking details to user order
This commit is contained in:
@@ -1,19 +1,13 @@
|
||||
namespace BackOffice.BFF.Application.UserOrderCQ.Commands.UpdateUserOrder;
|
||||
|
||||
public record UpdateUserOrderCommand : IRequest<Unit>
|
||||
{
|
||||
//شناسه
|
||||
public long Id { get; init; }
|
||||
//قیمت
|
||||
public long Price { get; init; }
|
||||
//شناسه پکیج
|
||||
public long PackageId { get; init; }
|
||||
//شناسه تراکنش
|
||||
public long? TransactionId { get; init; }
|
||||
//وضعیت پرداخت
|
||||
public bool PaymentStatus { get; init; }
|
||||
//تاریخ پرداخت
|
||||
public DateTime? PaymentDate { get; init; }
|
||||
//شناسه کاربر
|
||||
public long UserId { get; init; }
|
||||
|
||||
}
|
||||
// وضعیت ارسال (مقدار عددی DeliveryStatus)
|
||||
public int DeliveryStatus { get; init; }
|
||||
// کد رهگیری
|
||||
public string? TrackingCode { get; init; }
|
||||
// توضیحات ارسال
|
||||
public string? DeliveryDescription { get; init; }
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
using BackOffice.BFF.Application.Common.Interfaces;
|
||||
using CMSMicroservice.Protobuf.Protos.UserOrder;
|
||||
|
||||
namespace BackOffice.BFF.Application.UserOrderCQ.Commands.UpdateUserOrder;
|
||||
|
||||
public class UpdateUserOrderCommandHandler : IRequestHandler<UpdateUserOrderCommand, Unit>
|
||||
{
|
||||
private readonly IApplicationContractContext _context;
|
||||
@@ -12,7 +14,33 @@ public class UpdateUserOrderCommandHandler : IRequestHandler<UpdateUserOrderComm
|
||||
|
||||
public async Task<Unit> Handle(UpdateUserOrderCommand request, CancellationToken cancellationToken)
|
||||
{
|
||||
await _context.UserOrders.UpdateUserOrderAsync(request.Adapt<UpdateUserOrderRequest>(), cancellationToken: cancellationToken);
|
||||
// ابتدا سفارش فعلی را از CMS میگیریم تا سایر فیلدها (مبلغ، پرداخت و ...) دستنخورده بمانند
|
||||
var current = await _context.UserOrders.GetUserOrderAsync(new GetUserOrderRequest
|
||||
{
|
||||
Id = request.Id
|
||||
}, cancellationToken: cancellationToken);
|
||||
|
||||
if (current is null)
|
||||
return Unit.Value;
|
||||
|
||||
// ساخت درخواست کامل برای UpdateUserOrder در CMS
|
||||
var updateRequest = new UpdateUserOrderRequest
|
||||
{
|
||||
Id = current.Id,
|
||||
Amount = current.Amount,
|
||||
PackageId = current.PackageId,
|
||||
TransactionId = current.TransactionId,
|
||||
PaymentStatus = current.PaymentStatus,
|
||||
PaymentDate = current.PaymentDate,
|
||||
UserId = current.UserId,
|
||||
UserAddressId = current.UserAddressId,
|
||||
PaymentMethod = current.PaymentMethod,
|
||||
DeliveryStatus = (CMSMicroservice.Protobuf.Protos.DeliveryStatus)request.DeliveryStatus,
|
||||
TrackingCode = request.TrackingCode ?? string.Empty,
|
||||
DeliveryDescription = request.DeliveryDescription ?? string.Empty
|
||||
};
|
||||
|
||||
await _context.UserOrders.UpdateUserOrderAsync(updateRequest, cancellationToken: cancellationToken);
|
||||
|
||||
return Unit.Value;
|
||||
}
|
||||
|
||||
@@ -1,19 +1,14 @@
|
||||
namespace BackOffice.BFF.Application.UserOrderCQ.Commands.UpdateUserOrder;
|
||||
|
||||
public class UpdateUserOrderCommandValidator : AbstractValidator<UpdateUserOrderCommand>
|
||||
{
|
||||
public UpdateUserOrderCommandValidator()
|
||||
{
|
||||
RuleFor(model => model.Id)
|
||||
.NotNull();
|
||||
RuleFor(model => model.Price)
|
||||
.NotNull();
|
||||
RuleFor(model => model.PackageId)
|
||||
.NotNull();
|
||||
RuleFor(model => model.PaymentStatus)
|
||||
.NotNull();
|
||||
RuleFor(model => model.UserId)
|
||||
.NotNull();
|
||||
// سایر فیلدها اختیاری هستند (فقط برای بهروزرسانی وضعیت ارسال)
|
||||
}
|
||||
|
||||
public Func<object, string, Task<IEnumerable<string>>> ValidateValue => async (model, propertyName) =>
|
||||
{
|
||||
var result = await ValidateAsync(ValidationContext<UpdateUserOrderCommand>.CreateWithOptions((UpdateUserOrderCommand)model, x => x.IncludeProperties(propertyName)));
|
||||
|
||||
@@ -6,7 +6,9 @@ public class GetAllUserOrderByFilterResponseDto
|
||||
//مدل خروجی
|
||||
public List<GetAllUserOrderByFilterResponseModel>? Models { get; set; }
|
||||
|
||||
}public class GetAllUserOrderByFilterResponseModel
|
||||
}
|
||||
|
||||
public class GetAllUserOrderByFilterResponseModel
|
||||
{
|
||||
//شناسه
|
||||
public long Id { get; set; }
|
||||
@@ -16,10 +18,24 @@ public class GetAllUserOrderByFilterResponseDto
|
||||
public long PackageId { get; set; }
|
||||
//شناسه تراکنش
|
||||
public long? TransactionId { get; set; }
|
||||
//وضعیت پرداخت
|
||||
//وضعیت پرداخت (true برای Success)
|
||||
public bool PaymentStatus { get; set; }
|
||||
//تاریخ پرداخت
|
||||
public DateTime? PaymentDate { get; set; }
|
||||
//شناسه کاربر
|
||||
public long UserId { get; set; }
|
||||
//شناسه آدرس کاربر
|
||||
public long? UserAddressId { get; set; }
|
||||
//متن آدرس کاربر
|
||||
public string? UserAddressText { get; set; }
|
||||
//وضعیت ارسال (مقدار عددی DeliveryStatus)
|
||||
public int DeliveryStatus { get; set; }
|
||||
//کد رهگیری
|
||||
public string? TrackingCode { get; set; }
|
||||
//توضیحات ارسال
|
||||
public string? DeliveryDescription { get; set; }
|
||||
// نام کامل کاربر
|
||||
public string? UserFullName { get; set; }
|
||||
// کدملی کاربر
|
||||
public string? UserNationalCode { get; set; }
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
namespace BackOffice.BFF.Application.UserOrderCQ.Queries.GetUserOrder;
|
||||
|
||||
public class GetUserOrderResponseDto
|
||||
{
|
||||
//شناسه
|
||||
@@ -9,11 +10,36 @@ public class GetUserOrderResponseDto
|
||||
public long PackageId { get; set; }
|
||||
//شناسه تراکنش
|
||||
public long? TransactionId { get; set; }
|
||||
//وضعیت پرداخت
|
||||
//وضعیت پرداخت (true برای Success)
|
||||
public bool PaymentStatus { get; set; }
|
||||
//تاریخ پرداخت
|
||||
public DateTime? PaymentDate { get; set; }
|
||||
//شناسه کاربر
|
||||
public long UserId { get; set; }
|
||||
//شناسه آدرس کاربر
|
||||
public long? UserAddressId { get; set; }
|
||||
//متن آدرس کاربر
|
||||
public string? UserAddressText { get; set; }
|
||||
//جزئیات فاکتور
|
||||
public List<GetUserOrderResponseFactorDetail>? FactorDetails { get; set; }
|
||||
//وضعیت ارسال (مقدار عددی DeliveryStatus)
|
||||
public int DeliveryStatus { get; set; }
|
||||
//کد رهگیری
|
||||
public string? TrackingCode { get; set; }
|
||||
//توضیحات ارسال
|
||||
public string? DeliveryDescription { get; set; }
|
||||
// نام کامل کاربر
|
||||
public string? UserFullName { get; set; }
|
||||
// کدملی کاربر
|
||||
public string? UserNationalCode { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
public class GetUserOrderResponseFactorDetail
|
||||
{
|
||||
public long ProductId { get; set; }
|
||||
public string ProductTitle { get; set; }
|
||||
public string? ProductThumbnailPath { get; set; }
|
||||
public long? UnitPrice { get; set; }
|
||||
public int? Count { get; set; }
|
||||
public long? UnitDiscountPrice { get; set; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user