Updates all required mappings to use AutoMapperExtensions.MapWithUmbracoContext where appropriate

This commit is contained in:
Shannon
2018-01-25 14:41:28 -07:00
parent 64628c0a9d
commit 54cc80f4e8
8 changed files with 47 additions and 34 deletions

View File

@@ -23,7 +23,7 @@ namespace Umbraco.Web.Models.Mapping
{
return Mapper.Map<TIn, TOut>(obj, opt => opt.Items["UmbracoContext"] = umbCtx);
}
/// <summary>
/// Returns an <see cref="UmbracoContext"/> from the mapping options
/// </summary>
@@ -32,11 +32,11 @@ namespace Umbraco.Web.Models.Mapping
/// <remarks>
/// If an UmbracoContext is not found in the mapping options, it will try to retrieve it from the singleton
/// </remarks>
public static UmbracoContext GetUmbracoContext(this ResolutionResult res)
public static UmbracoContext GetUmbracoContext(this ResolutionContext res)
{
//get the context from the mapping options set during a mapping operation
object umbCtx;
if (res.Context.Options.Items.TryGetValue("UmbracoContext", out umbCtx))
if (res.Options.Items.TryGetValue("UmbracoContext", out umbCtx))
{
var umbracoContext = umbCtx as UmbracoContext;
if (umbracoContext != null) return umbracoContext;

View File

@@ -20,7 +20,7 @@ namespace Umbraco.Web.Models.Mapping
private string ResolveCore(ResolutionResult res, TSource source)
{
var umbCtx = res.GetUmbracoContext();
var umbCtx = res.Context.GetUmbracoContext();
//map the tree node url
if (umbCtx != null)
{

View File

@@ -25,12 +25,7 @@ namespace Umbraco.Web.Models.Mapping
public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext)
{
//FROM MembershipUser TO MediaItemDisplay - used when using a non-umbraco membership provider
config.CreateMap<MembershipUser, MemberDisplay>()
.ConvertUsing(user =>
{
var member = Mapper.Map<MembershipUser, IMember>(user);
return Mapper.Map<IMember, MemberDisplay>(member);
});
config.CreateMap<MembershipUser, MemberDisplay>().ConvertUsing<MembershipUserTypeConverter>();
//FROM MembershipUser TO IMember - used when using a non-umbraco membership provider
config.CreateMap<MembershipUser, IMember>()
@@ -262,7 +257,7 @@ namespace Umbraco.Web.Models.Mapping
var tabs = (List<Tab<ContentPropertyDisplay>>) result.Value;
//now we can customize the result with the current context, we can get the UmbracoContext from the options
CustomizeProperties(source.GetUmbracoContext(), member, tabs);
CustomizeProperties(source.Context.GetUmbracoContext(), member, tabs);
return result;
}
@@ -500,6 +495,21 @@ namespace Umbraco.Web.Models.Mapping
}
}
}
/// <summary>
/// A converter to go from a <see cref="MembershipUser"/> to a <see cref="MemberDisplay"/>
/// </summary>
internal class MembershipUserTypeConverter : ITypeConverter<MembershipUser, MemberDisplay>
{
public MemberDisplay Convert(ResolutionContext context)
{
var source = (MembershipUser)context.SourceValue;
//first convert to IMember
var member = Mapper.Map<MembershipUser, IMember>(source);
//then convert to MemberDisplay
return AutoMapperExtensions.MapWithUmbracoContext<IMember, MemberDisplay>(member, context.GetUmbracoContext());
}
}
}
}

View File

@@ -18,7 +18,7 @@ namespace Umbraco.Web.Models.Mapping
private string ResolveCore(ResolutionResult res, IMember source)
{
var umbCtx = res.GetUmbracoContext();
var umbCtx = res.Context.GetUmbracoContext();
//map the tree node url
if (umbCtx != null)
{