using AutoMapper; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Options; using PodNoms.Api.Models; using PodNoms.Api.Models.ViewModels; using PodNoms.Api.Services.Auth; 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() .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() .ForMember( src => src.AudioUrl, e => e.MapFrom(m => $"{this._options.GetSection("Storage")["CdnUrl"]}{m.AudioUrl}")); CreateMap() .ForMember( src => src.Name, e => e.MapFrom(m => m.FullName)); CreateMap() .ForMember( src => src.Name, map => map.MapFrom(s => $"{s.FirstName} {s.LastName}")) .ForMember( src => src.ProfileImage, map => map.MapFrom(s => s.PictureUrl)); //API Resource to Domain CreateMap() .ForMember(v => v.ImageUrl, map => map.Ignore()) ; CreateMap() .ForMember( e => e.ImageUrl, map => map.MapFrom(vm => vm.ImageUrl)) ; CreateMap() .ForMember( e => e.UserName, map => map.MapFrom(vm => vm.Email)); } } }