feat: Implement DiscountProductProfile for mapping Discount Product commands and queries
Build and Deploy / build (push) Successful in 2m50s

This commit is contained in:
masoodafar-web
2026-01-08 18:09:30 +03:30
parent b39d1cb2e1
commit aca28fce40
@@ -0,0 +1,92 @@
using BackOffice.BFF.Application.DiscountProductCQ.Commands.CreateDiscountProduct;
using BackOffice.BFF.Application.DiscountProductCQ.Commands.UpdateDiscountProduct;
using BackOffice.BFF.Application.DiscountProductCQ.Commands.DeleteDiscountProduct;
using BackOffice.BFF.Application.DiscountProductCQ.Queries.GetDiscountProducts;
using BackOffice.BFF.Application.DiscountProductCQ.Queries.GetDiscountProductById;
using BackOffice.BFF.DiscountProduct.Protobuf.Protos.DiscountProduct;
using Mapster;
using CreateFileModel = BackOffice.BFF.Application.DiscountProductCQ.Commands.CreateDiscountProduct.DiscountProductFileModel;
using UpdateFileModel = BackOffice.BFF.Application.DiscountProductCQ.Commands.UpdateDiscountProduct.DiscountProductFileModel;
namespace BackOffice.BFF.WebApi.Common.Mappings;
public class DiscountProductProfile : IRegister
{
public void Register(TypeAdapterConfig config)
{
// Request to Query/Command mappings
config.NewConfig<GetDiscountProductsRequest, GetDiscountProductsQuery>()
.Map(dest => dest.CategoryId, src => src.CategoryId)
.Map(dest => dest.SearchQuery, src => src.SearchQuery)
.Map(dest => dest.MinPrice, src => src.MinPrice)
.Map(dest => dest.MaxPrice, src => src.MaxPrice)
.Map(dest => dest.IsActive, src => src.IsActive)
.Map(dest => dest.InStock, src => src.InStock)
.Map(dest => dest.PageNumber, src => src.PageNumber)
.Map(dest => dest.PageSize, src => src.PageSize);
config.NewConfig<GetDiscountProductByIdRequest, GetDiscountProductByIdQuery>()
.Map(dest => dest.ProductId, src => src.ProductId);
config.NewConfig<CreateDiscountProductRequest, CreateDiscountProductCommand>()
.Map(dest => dest.Title, src => src.Title)
.Map(dest => dest.ShortInformation, src => src.ShortInfomation)
.Map(dest => dest.FullInformation, src => src.FullInformation)
.Map(dest => dest.Price, src => src.Price)
.Map(dest => dest.MaxDiscountPercent, src => src.MaxDiscountPercent)
.Map(dest => dest.SortOrder, src => src.SortOrder)
.Map(dest => dest.IsActive, src => src.IsActive)
.Map(dest => dest.CategoryIds, src => src.CategoryIds)
.Map(dest => dest.ImageFile, src => src.ImageFile != null ? new CreateFileModel { File = src.ImageFile.File.ToByteArray(), FileName = src.ImageFile.FileName, Mime = src.ImageFile.Mime } : null)
.Map(dest => dest.ThumbnailFile, src => src.ThumbnailFile != null ? new CreateFileModel { File = src.ThumbnailFile.File.ToByteArray(), FileName = src.ThumbnailFile.FileName, Mime = src.ThumbnailFile.Mime } : null);
config.NewConfig<UpdateDiscountProductRequest, UpdateDiscountProductCommand>()
.Map(dest => dest.ProductId, src => src.ProductId)
.Map(dest => dest.Title, src => src.Title)
.Map(dest => dest.ShortInformation, src => src.ShortInfomation)
.Map(dest => dest.FullInformation, src => src.FullInformation)
.Map(dest => dest.Price, src => src.Price)
.Map(dest => dest.MaxDiscountPercent, src => src.MaxDiscountPercent)
.Map(dest => dest.SortOrder, src => src.SortOrder)
.Map(dest => dest.IsActive, src => src.IsActive)
.Map(dest => dest.CategoryIds, src => src.CategoryIds)
.Map(dest => dest.ImageFile, src => src.ImageFile != null ? new UpdateFileModel { File = src.ImageFile.File.ToByteArray(), FileName = src.ImageFile.FileName, Mime = src.ImageFile.Mime } : null)
.Map(dest => dest.ThumbnailFile, src => src.ThumbnailFile != null ? new UpdateFileModel { File = src.ThumbnailFile.File.ToByteArray(), FileName = src.ThumbnailFile.FileName, Mime = src.ThumbnailFile.Mime } : null);
config.NewConfig<DeleteDiscountProductRequest, DeleteDiscountProductCommand>()
.Map(dest => dest.ProductId, src => src.ProductId);
// Response mappings
config.NewConfig<Application.DiscountProductCQ.Queries.GetDiscountProducts.GetDiscountProductsResponseDto, GetDiscountProductsResponse>()
.Map(dest => dest.MetaData, src => src.MetaData)
.Map(dest => dest.Models, src => src.Products);
config.NewConfig<Application.DiscountProductCQ.Queries.GetDiscountProducts.DiscountProductDto, BackOffice.BFF.DiscountProduct.Protobuf.Protos.DiscountProduct.DiscountProductDto>()
.Map(dest => dest.Id, src => src.Id)
.Map(dest => dest.Title, src => src.Title)
.Map(dest => dest.ShortInfomation, src => src.ShortInformation)
.Map(dest => dest.Price, src => src.Price)
.Map(dest => dest.MaxDiscountPercent, src => src.MaxDiscountPercent)
.Map(dest => dest.ImagePath, src => src.ImagePath)
.Map(dest => dest.ThumbnailPath, src => src.ThumbnailPath)
.Map(dest => dest.RemainingCount, src => src.RemainingCount)
.Map(dest => dest.ViewCount, src => src.ViewCount)
.Map(dest => dest.IsActive, src => src.IsActive)
.Map(dest => dest.Created, src => src.Created != DateTime.MinValue ? Google.Protobuf.WellKnownTypes.Timestamp.FromDateTime(src.Created.ToUniversalTime()) : null);
config.NewConfig<Application.DiscountProductCQ.Queries.GetDiscountProductById.GetDiscountProductByIdResponseDto, GetDiscountProductByIdResponse>()
.Map(dest => dest.Id, src => src.Id)
.Map(dest => dest.Title, src => src.Title)
.Map(dest => dest.ShortInfomation, src => src.ShortInformation)
.Map(dest => dest.FullInformation, src => src.FullInformation)
.Map(dest => dest.Price, src => src.Price)
.Map(dest => dest.MaxDiscountPercent, src => src.MaxDiscountPercent)
.Map(dest => dest.ImagePath, src => src.ImagePath)
.Map(dest => dest.ThumbnailPath, src => src.ThumbnailPath)
.Map(dest => dest.RemainingCount, src => src.RemainingCount)
.Map(dest => dest.ViewCount, src => src.ViewCount)
.Map(dest => dest.SortOrder, src => src.SortOrder)
.Map(dest => dest.IsActive, src => src.IsActive)
.Map(dest => dest.Created, src => src.Created != DateTime.MinValue ? Google.Protobuf.WellKnownTypes.Timestamp.FromDateTime(src.Created.ToUniversalTime()) : null);
}
}