using AutoMapper; using Printbase.Application.ProductGroup; using Printbase.Application.Products; using Printbase.Application.ProductType; using Printbase.Domain.Entities.Products; namespace Printbase.Application.Common.Mappings; public class ApplicationMappingProfile : Profile { public ApplicationMappingProfile() { CreateMap() .ForMember(dest => dest.TypeName, opt => opt.Ignore()) .ForMember(dest => dest.Variants, opt => opt.MapFrom(src => src.Variants)); CreateMap() .ConstructUsing((src, ctx) => new Product( Guid.NewGuid(), src.Name, src.TypeId, src.Description, src.Discount)) .ForMember(dest => dest.Variants, opt => opt.Ignore()); CreateMap() .ForMember(dest => dest.Id, opt => opt.Ignore()) .ForMember(dest => dest.Variants, opt => opt.Ignore()); CreateMap() .ForMember(dest => dest.EffectivePrice, opt => opt.MapFrom(src => src.GetEffectivePrice(src.Discount))); CreateMap() .ConstructUsing((src, ctx) => new ProductVariant( Guid.NewGuid(), Guid.Empty, src.Price, src.Color, src.Size, src.Discount, src.Stock)); CreateMap() .ForMember(dest => dest.ProductId, opt => opt.Ignore()); CreateMap() .ForMember(dest => dest.GroupName, opt => opt.Ignore()); CreateMap() .ConstructUsing((src, ctx) => new Domain.Entities.Products.ProductType( Guid.NewGuid(), src.Name, src.GroupId, src.Description)); CreateMap() .ForMember(dest => dest.Id, opt => opt.Ignore()) .ForMember(dest => dest.GroupId, opt => opt.Ignore()); CreateMap(); CreateMap() .ConstructUsing((src, ctx) => new Domain.Entities.Products.ProductGroup( Guid.NewGuid(), src.Name, src.Description)); CreateMap() .ForMember(dest => dest.Id, opt => opt.Ignore()) .ForMember(dest => dest.Types, opt => opt.Ignore()); } }