using AutoMapper; using Modules.Library.WebApi.Models; using Modules.Library.WebApi.Models.Anime; namespace Modules.Library.WebApi.Automapper; public class AnimeTitleMapprigProfile : Profile { public AnimeTitleMapprigProfile() { CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap() .ForMember(q => q.ExpirationTimeTicks, opt => opt.MapFrom(q => q.ExpirationTime.Ticks)) .ForMember(q => q.DurationTicks, opt => opt.MapFrom(q => q.Duration.HasValue ? q.Duration.Value.Ticks : default)); CreateMap() .ForMember(q => q.ExpirationTimeTicks, opt => opt.MapFrom(q => q.ExpirationTime.Ticks)); CreateMap().ConstructUsing((s, c) => { if (s is Application.Models.Anime.Episode episode) return c.Mapper.Map(episode); else if (s is Application.Models.Anime.Season season) return c.Mapper.Map(season); else throw new NotImplementedException(); }); CreateMap() .ForMember(q => q.ExpirationTimeTicks, opt => opt.MapFrom(q => q.ExpirationTime.Ticks)) .ForMember(q => q.EpisodesInsideSeasonsCount, opt => opt.MapFrom(q => q.Seasons.SelectMany(q => q.Episodes).Count())); } }