feat: Implement User Package Status and User Order Management features
- Added GetUserPackageStatus functionality with mapping and service implementation. - Introduced UserOrder service methods for updating order status, applying discounts, and calculating order PV. - Created Protobuf definitions for public messages and user orders, including necessary request and response messages. - Implemented mapping profiles for package and user order related queries and commands. - Developed query handlers and validators for new commands and queries in the application layer. - Established PublicMessage service for handling public messages with appropriate gRPC endpoints.
This commit is contained in:
@@ -1,10 +1,79 @@
|
||||
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.Queries.GetOrdersByDateRange;
|
||||
using BackOffice.BFF.Application.UserOrderCQ.Queries.CalculateOrderPV;
|
||||
using Google.Protobuf.WellKnownTypes;
|
||||
|
||||
public class UserOrderProfile : IRegister
|
||||
{
|
||||
void IRegister.Register(TypeAdapterConfig config)
|
||||
{
|
||||
//config.NewConfig<Source,Destination>()
|
||||
// .Map(dest => dest.FullName, src => $"{src.Firstname} {src.Lastname}");
|
||||
// UpdateOrderStatus mappings
|
||||
config.NewConfig<UpdateOrderStatusRequest, UpdateOrderStatusCommand>()
|
||||
.Map(dest => dest.OrderId, src => src.OrderId)
|
||||
.Map(dest => dest.NewStatus, src => src.NewStatus);
|
||||
|
||||
config.NewConfig<UpdateOrderStatusCommand, UpdateOrderStatusResponse>()
|
||||
.Map(dest => dest.Success, src => src.Success)
|
||||
.Map(dest => dest.Message, src => src.Message)
|
||||
.Map(dest => dest.OldStatus, src => src.OldStatus)
|
||||
.Map(dest => dest.NewStatus, src => src.NewStatus);
|
||||
|
||||
// GetOrdersByDateRange mappings
|
||||
config.NewConfig<GetOrdersByDateRangeRequest, GetOrdersByDateRangeQuery>()
|
||||
.Map(dest => dest.StartDate, src => src.StartDate.ToDateTime())
|
||||
.Map(dest => dest.EndDate, src => src.EndDate.ToDateTime())
|
||||
.Map(dest => dest.Status, src => src.Status != null ? (int?)src.Status.Value : null)
|
||||
.Map(dest => dest.UserId, src => src.UserId != null ? (long?)src.UserId.Value : null)
|
||||
.Map(dest => dest.PageNumber, src => src.PageNumber)
|
||||
.Map(dest => dest.PageSize, src => src.PageSize);
|
||||
|
||||
config.NewConfig<GetOrdersByDateRangeQuery, GetOrdersByDateRangeResponse>()
|
||||
.Map(dest => dest.MetaData, src => src.MetaData)
|
||||
.Map(dest => dest.Orders, src => src.Orders);
|
||||
|
||||
config.NewConfig<OrderSummaryDto, OrderSummaryDto>()
|
||||
.Map(dest => dest.OrderId, src => src.OrderId)
|
||||
.Map(dest => dest.OrderNumber, src => src.OrderNumber)
|
||||
.Map(dest => dest.UserId, src => src.UserId)
|
||||
.Map(dest => dest.UserFullName, src => src.UserFullName)
|
||||
.Map(dest => dest.TotalAmount, src => src.TotalAmount)
|
||||
.Map(dest => dest.Status, src => src.Status)
|
||||
.Map(dest => dest.StatusName, src => src.StatusName)
|
||||
.Map(dest => dest.ItemsCount, src => src.ItemsCount)
|
||||
.Map(dest => dest.CreatedAt, src => Timestamp.FromDateTime(src.CreatedAt.ToUniversalTime()));
|
||||
|
||||
// ApplyDiscountToOrder mappings
|
||||
config.NewConfig<ApplyDiscountToOrderRequest, ApplyDiscountToOrderCommand>()
|
||||
.Map(dest => dest.OrderId, src => src.OrderId)
|
||||
.Map(dest => dest.DiscountAmount, src => src.DiscountAmount)
|
||||
.Map(dest => dest.Reason, src => src.Reason);
|
||||
|
||||
config.NewConfig<ApplyDiscountToOrderCommand, ApplyDiscountToOrderResponse>()
|
||||
.Map(dest => dest.Success, src => src.Success)
|
||||
.Map(dest => dest.Message, src => src.Message)
|
||||
.Map(dest => dest.OriginalAmount, src => src.OriginalAmount)
|
||||
.Map(dest => dest.DiscountAmount, src => src.DiscountAmount)
|
||||
.Map(dest => dest.FinalAmount, src => src.FinalAmount);
|
||||
|
||||
// CalculateOrderPV mappings
|
||||
config.NewConfig<CalculateOrderPVRequest, CalculateOrderPVQuery>()
|
||||
.Map(dest => dest.OrderId, src => src.OrderId);
|
||||
|
||||
config.NewConfig<CalculateOrderPVQuery, CalculateOrderPVResponse>()
|
||||
.Map(dest => dest.OrderId, src => src.OrderId)
|
||||
.Map(dest => dest.TotalPv, src => src.TotalPV)
|
||||
.Map(dest => dest.Products, src => src.Products);
|
||||
|
||||
config.NewConfig<ProductPVDto, ProductPVDto>()
|
||||
.Map(dest => dest.ProductId, src => src.ProductId)
|
||||
.Map(dest => dest.ProductTitle, src => src.ProductTitle)
|
||||
.Map(dest => dest.Quantity, src => src.Quantity)
|
||||
.Map(dest => dest.UnitPv, src => src.UnitPV)
|
||||
.Map(dest => dest.TotalPv, src => src.TotalPV);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user