using System.Linq.Expressions; using AutoMapper; using LANCommander.SDK.Models; using LANCommander.Server.Services; namespace LANCommander.Server { public class MappingProfile : Profile { public MappingProfile() { AllowNullCollections = true; AllowNullDestinationValues = true; CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap().ReverseMap(); CreateMap(); CreateMap(); CreateEntityReferenceMap(g => g.Title); CreateMap() .ForMember(dest => dest.IPXRelayHost, opt => opt.MapFrom(src => src.IPXRelay.Host)) .ForMember(dest => dest.IPXRelayPort, opt => opt.MapFrom(src => src.IPXRelay.Port)) .ForMember(dest => dest.EnableUserLibraries, opt => opt.MapFrom(src => src.Library.EnableUserLibraries)); CreateMap() .ForMember(dest => dest.IsPrimaryAction, opt => opt.MapFrom(src => src.PrimaryAction)); CreateMap() .MaxDepth(5) .ForMember(dest => dest.DependentGames, opt => opt.MapFrom(src => src.DependentGames.Select(d => d.Id))); CreateMap() .ForMember(dest => dest.Cover, opt => opt.MapFrom(src => src.Media.Where(m => m.Type == SDK.Enums.MediaType.Cover).FirstOrDefault())); CreateMap(); CreateMap() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Title)); CreateManifestMappings(); } private void CreateManifestMappings() { CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); } private void CreateEntityReferenceMap(Expression> nameMember) { CreateMap() .ForMember(dest => dest.Name, opt => opt.MapFrom(nameMember)); } } }