71 lines
3.4 KiB
C#
71 lines
3.4 KiB
C#
using System.Linq.Expressions;
|
|
using AutoMapper;
|
|
using LANCommander.SDK.Enums;
|
|
using LANCommander.SDK.Models;
|
|
|
|
namespace LANCommander.Server
|
|
{
|
|
public class LANCommanderMappingProfile : Profile
|
|
{
|
|
public LANCommanderMappingProfile()
|
|
{
|
|
CreateMap<Data.Models.Action, SDK.Models.Action>();
|
|
CreateMap<Data.Models.Archive, SDK.Models.Archive>();
|
|
CreateMap<Data.Models.Company, SDK.Models.Company>();
|
|
CreateMap<Data.Models.Collection, SDK.Models.Collection>();
|
|
CreateMap<Data.Models.Engine, SDK.Models.Engine>();
|
|
CreateMap<Data.Models.GameSave, SDK.Models.GameSave>();
|
|
CreateMap<Data.Models.Genre, SDK.Models.Genre>();
|
|
CreateMap<Data.Models.Key, SDK.Models.Key>();
|
|
CreateMap<Data.Models.Media, SDK.Models.Media>();
|
|
CreateMap<Data.Models.MultiplayerMode, SDK.Models.MultiplayerMode>();
|
|
CreateMap<Data.Models.Platform, SDK.Models.Platform>();
|
|
CreateMap<Data.Models.PlaySession, SDK.Models.PlaySession>();
|
|
CreateMap<Data.Models.Redistributable, SDK.Models.Redistributable>()
|
|
.ForMember(dest => dest.Scripts, opt => opt.MapFrom(src => src.Scripts != null ? src.Scripts.Where(s => s.Type != ScriptType.Package) : null));
|
|
CreateMap<Data.Models.Server, SDK.Models.Server>();
|
|
CreateMap<Data.Models.ServerConsole, SDK.Models.ServerConsole>();
|
|
CreateMap<Data.Models.ServerHttpPath, SDK.Models.ServerHttpPath>();
|
|
CreateMap<Data.Models.SavePath, SDK.Models.SavePath>();
|
|
CreateMap<Data.Models.Script, SDK.Models.Script>();
|
|
CreateMap<Data.Models.Tag, SDK.Models.Tag>();
|
|
CreateMap<Data.Models.User, SDK.Models.User>();
|
|
CreateMap<Data.Models.GameCustomField, SDK.Models.GameCustomField>();
|
|
|
|
CreateEntityReferenceMap<SDK.Models.Game>(g => g.Title);
|
|
|
|
CreateMap<Data.Models.Action, SDK.Models.Action>()
|
|
.ForMember(dest =>
|
|
dest.IsPrimaryAction,
|
|
opt => opt.MapFrom(src => src.PrimaryAction));
|
|
|
|
CreateMap<Data.Models.Game, SDK.Models.Game>()
|
|
.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<Data.Models.Game, SDK.Models.DepotGame>()
|
|
.ForMember(dest =>
|
|
dest.Cover,
|
|
opt => opt.MapFrom(src => src.Media.Where(m => m.Type == SDK.Enums.MediaType.Cover).FirstOrDefault()));
|
|
|
|
CreateMap<Settings.Models.AuthenticationProvider, SDK.Models.AuthenticationProvider>();
|
|
|
|
CreateMap<Data.Models.Game, EntityReference>()
|
|
.ForMember(dest => dest.Name,
|
|
opt => opt.MapFrom(src => src.Title))
|
|
.ForMember(dest => dest.UpdatedOn,
|
|
opt => opt.MapFrom(src => src.UpdatedOn));
|
|
}
|
|
|
|
private void CreateEntityReferenceMap<TEntity>(Expression<Func<TEntity, string>> nameMember)
|
|
{
|
|
CreateMap<TEntity, SDK.Models.EntityReference>()
|
|
.ForMember(dest => dest.Name, opt => opt.MapFrom(nameMember));
|
|
}
|
|
}
|
|
}
|