feat: Implement Cancel Order functionality with command, handler, and validation

This commit is contained in:
masoodafar-web
2025-12-04 19:53:21 +03:30
parent 82319285bc
commit 67b43fea7a
12 changed files with 245 additions and 1 deletions

View File

@@ -3,6 +3,7 @@ namespace BackOffice.BFF.WebApi.Common.Mappings;
using BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
using BackOffice.BFF.Application.UserOrderCQ.Commands.UpdateOrderStatus;
using BackOffice.BFF.Application.UserOrderCQ.Commands.ApplyDiscountToOrder;
using BackOffice.BFF.Application.UserOrderCQ.Commands.CancelOrder;
using BackOffice.BFF.Application.UserOrderCQ.Queries.GetOrdersByDateRange;
using BackOffice.BFF.Application.UserOrderCQ.Queries.CalculateOrderPV;
using Google.Protobuf.WellKnownTypes;
@@ -74,6 +75,11 @@ public class UserOrderProfile : IRegister
.Map(dest => dest.Quantity, src => src.Quantity)
.Map(dest => dest.UnitPv, src => src.UnitPV)
.Map(dest => dest.TotalPv, src => src.TotalPV);
// CancelOrder mappings
config.NewConfig<CancelOrderRequest, CancelOrderCommand>()
.Map(dest => dest.OrderId, src => src.OrderId)
.Map(dest => dest.CancelReason, src => src.CancelReason)
.Map(dest => dest.RefundPayment, src => src.RefundPayment);
}
}

View File

@@ -7,6 +7,7 @@ using BackOffice.BFF.Application.UserOrderCQ.Queries.GetUserOrder;
using BackOffice.BFF.Application.UserOrderCQ.Queries.GetAllUserOrderByFilter;
using BackOffice.BFF.Application.UserOrderCQ.Commands.UpdateOrderStatus;
using BackOffice.BFF.Application.UserOrderCQ.Commands.ApplyDiscountToOrder;
using BackOffice.BFF.Application.UserOrderCQ.Commands.CancelOrder;
using BackOffice.BFF.Application.UserOrderCQ.Queries.GetOrdersByDateRange;
using BackOffice.BFF.Application.UserOrderCQ.Queries.CalculateOrderPV;
namespace BackOffice.BFF.WebApi.Services;
@@ -58,4 +59,9 @@ public class UserOrderService : UserOrderContract.UserOrderContractBase
{
return await _dispatchRequestToCQRS.Handle<CalculateOrderPVRequest, CalculateOrderPVQuery, CalculateOrderPVResponse>(request, context);
}
public override async Task<CancelOrderResponse> CancelOrder(CancelOrderRequest request, ServerCallContext context)
{
return await _dispatchRequestToCQRS.Handle<CancelOrderRequest, CancelOrderCommand, CancelOrderResponse>(request, context);
}
}