LANCommander/LANCommander.Server/LANCommanderMappingProfile.cs
2026-05-23 22:13:58 -05:00

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));
}
}
}