using System.Linq.Expressions; using AutoMapper; using LANCommander.SDK.Enums; using LANCommander.SDK.Models; namespace LANCommander.Server { public class LANCommanderMappingProfile : Profile { public LANCommanderMappingProfile() { CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap() .ForMember(dest => dest.Scripts, opt => opt.MapFrom(src => src.Scripts != null ? src.Scripts.Where(s => s.Type != ScriptType.Package) : null)); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateEntityReferenceMap(g => g.Title); 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))) .ForMember(dest => dest.Scripts, opt => opt.MapFrom(src => src.Scripts != null ? src.Scripts.Where(s => s.Type != ScriptType.Package) : null)); 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)) .ForMember(dest => dest.UpdatedOn, opt => opt.MapFrom(src => src.UpdatedOn)); } private void CreateEntityReferenceMap(Expression> nameMember) { CreateMap() .ForMember(dest => dest.Name, opt => opt.MapFrom(nameMember)); } } }