Files
podnoms/server/Providers/MappingProvider.cs
2017-11-27 23:56:27 +00:00

49 lines
1.7 KiB
C#

using AutoMapper;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options;
using PodNoms.Api.Models;
using PodNoms.Api.Models.ViewModels;
namespace PodNoms.Api.Providers
{
public class MappingProvider : Profile
{
private readonly IConfiguration _options;
public MappingProvider() { }
public MappingProvider(IConfiguration options)
{
this._options = options;
//Domain to API Resource
CreateMap<Podcast, PodcastViewModel>()
.ForMember(
v => v.RssUrl,
e => e.MapFrom(m => $"{this._options.GetSection("App")["RssUrl"]}{m.User.Slug}/{m.Slug}"))
.ForMember(
v => v.ImageUrl,
e => e.MapFrom(m => m.GetImageUrl(
this._options.GetSection("Storage")["CdnUrl"],
this._options.GetSection("ImageFileStorageSettings")["ContainerName"])));
CreateMap<PodcastEntry, PodcastEntryViewModel>()
.ForMember(
src => src.AudioUrl,
e => e.MapFrom(m => $"{this._options.GetSection("Storage")["CdnUrl"]}{m.AudioUrl}"));
CreateMap<User, ProfileViewModel>()
.ForMember(
src => src.Name,
e => e.MapFrom(m => m.FullName));
//API Resource to Domain
CreateMap<PodcastViewModel, Podcast>()
.ForMember(v => v.ImageUrl, opt => opt.Ignore())
;
CreateMap<PodcastEntryViewModel, PodcastEntry>()
.ForMember(
e => e.ImageUrl,
opt => opt.MapFrom(m => m.ImageUrl))
;
}
}
}