using System; using AutoMapper; using NzbDrone.Api.Calendar; using NzbDrone.Api.Episodes; using NzbDrone.Api.Missing; using NzbDrone.Api.QualityProfiles; using NzbDrone.Api.QualityType; using NzbDrone.Api.Resolvers; using NzbDrone.Api.Series; using NzbDrone.Core.Qualities; using NzbDrone.Core.Tv; namespace NzbDrone.Api { public static class AutomapperBootstraper { public static void InitializeAutomapper() { //QualityProfiles Mapper.CreateMap<QualityProfile, QualityProfileModel>() .ForMember(dest => dest.Qualities, opt => opt.ResolveUsing<AllowedToQualitiesResolver>().FromMember(src => src.Allowed)); Mapper.CreateMap<QualityProfileModel, QualityProfile>() .ForMember(dest => dest.Allowed, opt => opt.ResolveUsing<QualitiesToAllowedResolver>().FromMember(src => src.Qualities)); Mapper.CreateMap<Quality, QualityProfileType>() .ForMember(dest => dest.Allowed, opt => opt.Ignore()); //QualitySize Mapper.CreateMap<QualitySize, QualitySizeResource>() .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.QualityId)); Mapper.CreateMap<QualitySizeResource, QualitySize>() .ForMember(dest => dest.QualityId, opt => opt.MapFrom(src => src.Id)); //Series Mapper.CreateMap<Core.Tv.Series, SeriesResource>() .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id)) .ForMember(dest => dest.CustomStartDate, opt => opt.ResolveUsing<NullableDatetimeToString>().FromMember(src => src.CustomStartDate)) .ForMember(dest => dest.BacklogSetting, opt => opt.MapFrom(src => (Int32)src.BacklogSetting)) .ForMember(dest => dest.NextAiring, opt => opt.ResolveUsing<NextAiringResolver>()) .ForMember(dest => dest.QualityProfileName, opt => opt.MapFrom(src => src.QualityProfile.Name)); //Calendar Mapper.CreateMap<Episode, CalendarResource>() .ForMember(dest => dest.SeriesTitle, opt => opt.MapFrom(src => src.Series.Title)) .ForMember(dest => dest.EpisodeTitle, opt => opt.MapFrom(src => src.Title)) .ForMember(dest => dest.Start, opt => opt.MapFrom(src => src.AirDate)) .ForMember(dest => dest.End, opt => opt.ResolveUsing<EndTimeResolver>()); //Episode Mapper.CreateMap<Episode, EpisodeResource>(); //Missing Mapper.CreateMap<Episode, MissingResource>() .ForMember(dest => dest.SeriesTitle, opt => opt.MapFrom(src => src.Series.Title)) .ForMember(dest => dest.EpisodeTitle, opt => opt.MapFrom(src => src.Title)); } } }