diff --git a/src/Umbraco.Tests/Models/Mapping/AutoMapperTests.cs b/src/Umbraco.Tests/Models/Mapping/AutoMapperTests.cs new file mode 100644 index 0000000000..22aadd744e --- /dev/null +++ b/src/Umbraco.Tests/Models/Mapping/AutoMapperTests.cs @@ -0,0 +1,17 @@ +using AutoMapper; +using NUnit.Framework; +using Umbraco.Tests.TestHelpers; + +namespace Umbraco.Tests.Models.Mapping +{ + [RequiresAutoMapperMappings] + [TestFixture] + public class AutoMapperTests : BaseUmbracoApplicationTest + { + [Test] + public void Assert_Valid_Mappings() + { + Mapper.AssertConfigurationIsValid(); + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 927361265e..6d772332ec 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -178,6 +178,7 @@ + diff --git a/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs b/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs index af74771fb8..78e3bb1d05 100644 --- a/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs +++ b/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs @@ -62,6 +62,10 @@ namespace Umbraco.Web.Models.Mapping ? new[] {"Cannot generate urls without a current Umbraco Context"} : content.GetContentUrls())) .ForMember(display => display.Properties, expression => expression.Ignore()) + .ForMember(display => display.TreeNodeUrl, expression => expression.Ignore()) + .ForMember(display => display.Notifications, expression => expression.Ignore()) + .ForMember(display => display.Errors, expression => expression.Ignore()) + .ForMember(display => display.Alias, expression => expression.Ignore()) .ForMember(display => display.Tabs, expression => expression.ResolveUsing()) .ForMember(display => display.AllowedActions, expression => expression.ResolveUsing( new ActionButtonsResolver(new Lazy(() => applicationContext.Services.UserService)))) @@ -69,24 +73,28 @@ namespace Umbraco.Web.Models.Mapping //FROM IContent TO ContentItemBasic config.CreateMap>() - .ForMember( - dto => dto.Owner, - expression => expression.ResolveUsing>()) - .ForMember( - dto => dto.Updator, - expression => expression.ResolveUsing()) - .ForMember( - dto => dto.Icon, - expression => expression.MapFrom(content => content.ContentType.Icon)) - .ForMember( - dto => dto.ContentTypeAlias, - expression => expression.MapFrom(content => content.ContentType.Alias)); + .ForMember( + dto => dto.Owner, + expression => expression.ResolveUsing>()) + .ForMember( + dto => dto.Updator, + expression => expression.ResolveUsing()) + .ForMember( + dto => dto.Icon, + expression => expression.MapFrom(content => content.ContentType.Icon)) + .ForMember( + dto => dto.ContentTypeAlias, + expression => expression.MapFrom(content => content.ContentType.Alias)) + .ForMember(display => display.Alias, expression => expression.Ignore()); //FROM IContent TO ContentItemDto config.CreateMap>() .ForMember( - dto => dto.Owner, - expression => expression.ResolveUsing>()); + dto => dto.Owner, + expression => expression.ResolveUsing>()) + .ForMember(display => display.Updator, expression => expression.Ignore()) + .ForMember(display => display.Icon, expression => expression.Ignore()) + .ForMember(display => display.Alias, expression => expression.Ignore()); } diff --git a/src/Umbraco.Web/Models/Mapping/ContentPropertyModelMapper.cs b/src/Umbraco.Web/Models/Mapping/ContentPropertyModelMapper.cs index cf06bce528..ba51eb1790 100644 --- a/src/Umbraco.Web/Models/Mapping/ContentPropertyModelMapper.cs +++ b/src/Umbraco.Web/Models/Mapping/ContentPropertyModelMapper.cs @@ -20,9 +20,10 @@ namespace Umbraco.Web.Models.Mapping //FROM Property TO ContentPropertyBasic config.CreateMap>() - .ForMember(tab => tab.Label, expression => expression.MapFrom(@group => @group.Name)) - .ForMember(tab => tab.IsActive, expression => expression.UseValue(true)) - .ForMember(tab => tab.Properties, expression => expression.Ignore()); + .ForMember(tab => tab.Label, expression => expression.MapFrom(@group => @group.Name)) + .ForMember(tab => tab.IsActive, expression => expression.UseValue(true)) + .ForMember(tab => tab.Properties, expression => expression.Ignore()) + .ForMember(tab => tab.Alias, expression => expression.Ignore()); //FROM Property TO ContentPropertyBasic config.CreateMap() diff --git a/src/Umbraco.Web/Models/Mapping/DataTypeModelMapper.cs b/src/Umbraco.Web/Models/Mapping/DataTypeModelMapper.cs index 9871a64c23..e1f5cc4508 100644 --- a/src/Umbraco.Web/Models/Mapping/DataTypeModelMapper.cs +++ b/src/Umbraco.Web/Models/Mapping/DataTypeModelMapper.cs @@ -21,17 +21,21 @@ namespace Umbraco.Web.Models.Mapping { var lazyDataTypeService = new Lazy(() => applicationContext.Services.DataTypeService); - config.CreateMap(); + config.CreateMap(); //just maps the standard properties, does not map the value! - config.CreateMap(); + config.CreateMap() + .ForMember(x => x.Value, expression => expression.Ignore()); config.CreateMap() - .ForMember(display => display.AvailableEditors, expression => expression.ResolveUsing()) - .ForMember(display => display.PreValues, expression => expression.ResolveUsing( - new PreValueDisplayResolver(lazyDataTypeService))) - .ForMember(display => display.SelectedEditor, expression => expression.MapFrom( - definition => definition.PropertyEditorAlias.IsNullOrWhiteSpace() ? null : definition.PropertyEditorAlias)); + .ForMember(display => display.AvailableEditors, expression => expression.ResolveUsing()) + .ForMember(display => display.PreValues, expression => expression.ResolveUsing( + new PreValueDisplayResolver(lazyDataTypeService))) + .ForMember(display => display.SelectedEditor, expression => expression.MapFrom( + definition => definition.PropertyEditorAlias.IsNullOrWhiteSpace() ? null : definition.PropertyEditorAlias)) + .ForMember(x => x.Notifications, expression => expression.Ignore()) + .ForMember(x => x.Icon, expression => expression.Ignore()) + .ForMember(x => x.Alias, expression => expression.Ignore()); //gets a list of PreValueFieldDisplay objects from the data type definition config.CreateMap>() @@ -42,14 +46,21 @@ namespace Umbraco.Web.Models.Mapping }); config.CreateMap() - .ConstructUsing(save => new DataTypeDefinition(-1, save.SelectedEditor) {CreateDate = DateTime.Now}) + .ConstructUsing(save => new DataTypeDefinition(-1, save.SelectedEditor) {CreateDate = DateTime.Now}) + .ForMember(definition => definition.Id, expression => expression.MapFrom(save => Convert.ToInt32(save.Id))) //we have to ignore the Key otherwise this will reset the UniqueId field which should never change! - // http://issues.umbraco.org/issue/U4-3911 - .ForMember(definition => definition.Key, expression => expression.Ignore()) - .ForMember(definition => definition.Path, expression => expression.Ignore()) - .ForMember(definition => definition.PropertyEditorAlias, expression => expression.MapFrom(save => save.SelectedEditor)) - .ForMember(definition => definition.ParentId, expression => expression.MapFrom(save => -1)) - .ForMember(definition => definition.DatabaseType, expression => expression.ResolveUsing()); + // http://issues.umbraco.org/issue/U4-3911 + .ForMember(definition => definition.Key, expression => expression.Ignore()) + .ForMember(definition => definition.Path, expression => expression.Ignore()) + .ForMember(definition => definition.PropertyEditorAlias, expression => expression.MapFrom(save => save.SelectedEditor)) + .ForMember(definition => definition.ParentId, expression => expression.MapFrom(save => -1)) + .ForMember(definition => definition.DatabaseType, expression => expression.ResolveUsing()) + .ForMember(x => x.ControlId, expression => expression.Ignore()) + .ForMember(x => x.CreatorId, expression => expression.Ignore()) + .ForMember(x => x.Level, expression => expression.Ignore()) + .ForMember(x => x.SortOrder, expression => expression.Ignore()) + .ForMember(x => x.CreateDate, expression => expression.Ignore()) + .ForMember(x => x.UpdateDate, expression => expression.Ignore()); //Converts a property editor to a new list of pre-value fields - used when creating a new data type or changing a data type with new pre-vals config.CreateMap>() diff --git a/src/Umbraco.Web/Models/Mapping/EntityModelMapper.cs b/src/Umbraco.Web/Models/Mapping/EntityModelMapper.cs index 0d5f0f8be4..c3699b545f 100644 --- a/src/Umbraco.Web/Models/Mapping/EntityModelMapper.cs +++ b/src/Umbraco.Web/Models/Mapping/EntityModelMapper.cs @@ -16,30 +16,40 @@ namespace Umbraco.Web.Models.Mapping public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext) { config.CreateMap() - .ForMember(basic => basic.Icon, expression => expression.MapFrom(entity => entity.ContentTypeIcon)); + .ForMember(basic => basic.Icon, expression => expression.MapFrom(entity => entity.ContentTypeIcon)) + .ForMember(x => x.Alias, expression => expression.Ignore()); config.CreateMap() - .ForMember(basic => basic.Icon, expression => expression.UseValue("icon-box")) - .ForMember(basic => basic.Path, expression => expression.UseValue("")) - .ForMember(basic => basic.ParentId, expression => expression.UseValue(-1)); + .ForMember(basic => basic.Icon, expression => expression.UseValue("icon-box")) + .ForMember(basic => basic.Path, expression => expression.UseValue("")) + .ForMember(basic => basic.ParentId, expression => expression.UseValue(-1)) + .ForMember(x => x.AdditionalData, expression => expression.Ignore()); config.CreateMap() - .ForMember(basic => basic.Icon, expression => expression.UseValue("icon-tab")) - .ForMember(basic => basic.Path, expression => expression.UseValue("")) - .ForMember(basic => basic.ParentId, expression => expression.UseValue(-1)) - //in v6 the 'alias' is it's lower cased name so we'll stick to that. - .ForMember(basic => basic.Alias, expression => expression.MapFrom(group => group.Name.ToLowerInvariant())); + .ForMember(basic => basic.Icon, expression => expression.UseValue("icon-tab")) + .ForMember(basic => basic.Path, expression => expression.UseValue("")) + .ForMember(basic => basic.ParentId, expression => expression.UseValue(-1)) + //in v6 the 'alias' is it's lower cased name so we'll stick to that. + .ForMember(basic => basic.Alias, expression => expression.MapFrom(group => group.Name.ToLowerInvariant())) + .ForMember(x => x.AdditionalData, expression => expression.Ignore()); config.CreateMap() - .ForMember(basic => basic.Icon, expression => expression.UseValue("icon-user")) - .ForMember(basic => basic.Path, expression => expression.UseValue("")) - .ForMember(basic => basic.ParentId, expression => expression.UseValue(-1)) - .ForMember(basic => basic.Alias, expression => expression.MapFrom(user => user.Username)); + .ForMember(basic => basic.Icon, expression => expression.UseValue("icon-user")) + .ForMember(basic => basic.Path, expression => expression.UseValue("")) + .ForMember(basic => basic.ParentId, expression => expression.UseValue(-1)) + .ForMember(basic => basic.Alias, expression => expression.MapFrom(user => user.Username)) + .ForMember(x => x.AdditionalData, expression => expression.Ignore()); config.CreateMap() //default to document icon .ForMember(x => x.Icon, expression => expression.UseValue("icon-document")) .ForMember(x => x.Id, expression => expression.MapFrom(result => result.Id)) + .ForMember(x => x.Name, expression => expression.Ignore()) + .ForMember(x => x.Key, expression => expression.Ignore()) + .ForMember(x => x.ParentId, expression => expression.Ignore()) + .ForMember(x => x.Alias, expression => expression.Ignore()) + .ForMember(x => x.Path, expression => expression.Ignore()) + .ForMember(x => x.AdditionalData, expression => expression.Ignore()) .AfterMap((result, basic) => { basic.Name = result.Fields.ContainsKey("nodeName") ? result.Fields["nodeName"] : "[no name]"; diff --git a/src/Umbraco.Web/Models/Mapping/MacroModelMapper.cs b/src/Umbraco.Web/Models/Mapping/MacroModelMapper.cs index 4122cdd422..35db17654d 100644 --- a/src/Umbraco.Web/Models/Mapping/MacroModelMapper.cs +++ b/src/Umbraco.Web/Models/Mapping/MacroModelMapper.cs @@ -22,29 +22,33 @@ namespace Umbraco.Web.Models.Mapping config.CreateMap() .ForMember(entityBasic => entityBasic.Icon, expression => expression.UseValue("icon-settings-alt")) .ForMember(dto => dto.ParentId, expression => expression.UseValue(-1)) - .ForMember(dto => dto.Path, expression => expression.ResolveUsing(macro => "-1," + macro.Id)); + .ForMember(dto => dto.Path, expression => expression.ResolveUsing(macro => "-1," + macro.Id)) + .ForMember(dto => dto.AdditionalData, expression => expression.Ignore()); config.CreateMap>() .ConvertUsing(macro => macro.Properties.Select(Mapper.Map).ToList()); config.CreateMap() - .AfterMap((property, parameter) => - { - //map the view and the config + .ForMember(x => x.View, expression => expression.Ignore()) + .ForMember(x => x.Configuration, expression => expression.Ignore()) + .ForMember(x => x.Value, expression => expression.Ignore()) + .AfterMap((property, parameter) => + { + //map the view and the config - var paramEditor = ParameterEditorResolver.Current.GetByAlias(property.EditorAlias); - if (paramEditor == null) - { - //we'll just map this to a text box - paramEditor = ParameterEditorResolver.Current.GetByAlias(Constants.PropertyEditors.TextboxAlias); - LogHelper.Warn("Could not resolve a parameter editor with alias " + property.EditorAlias + ", a textbox will be rendered in it's place"); - } + var paramEditor = ParameterEditorResolver.Current.GetByAlias(property.EditorAlias); + if (paramEditor == null) + { + //we'll just map this to a text box + paramEditor = ParameterEditorResolver.Current.GetByAlias(Constants.PropertyEditors.TextboxAlias); + LogHelper.Warn("Could not resolve a parameter editor with alias " + property.EditorAlias + ", a textbox will be rendered in it's place"); + } - parameter.View = paramEditor.ValueEditor.View; - //set the config - parameter.Configuration = paramEditor.Configuration; - - }); + parameter.View = paramEditor.ValueEditor.View; + //set the config + parameter.Configuration = paramEditor.Configuration; + + }); } diff --git a/src/Umbraco.Web/Models/Mapping/MediaModelMapper.cs b/src/Umbraco.Web/Models/Mapping/MediaModelMapper.cs index 7255da4b24..3fc9c1de39 100644 --- a/src/Umbraco.Web/Models/Mapping/MediaModelMapper.cs +++ b/src/Umbraco.Web/Models/Mapping/MediaModelMapper.cs @@ -41,26 +41,39 @@ namespace Umbraco.Web.Models.Mapping dto => dto.ContentTypeName, expression => expression.MapFrom(content => content.ContentType.Name)) .ForMember(display => display.Properties, expression => expression.Ignore()) + .ForMember(display => display.TreeNodeUrl, expression => expression.Ignore()) + .ForMember(display => display.Notifications, expression => expression.Ignore()) + .ForMember(display => display.Errors, expression => expression.Ignore()) + .ForMember(display => display.Published, expression => expression.Ignore()) + .ForMember(display => display.Updator, expression => expression.Ignore()) + .ForMember(display => display.Alias, expression => expression.Ignore()) .ForMember(display => display.Tabs, expression => expression.ResolveUsing()) .AfterMap(AfterMap); //FROM IMedia TO ContentItemBasic config.CreateMap>() - .ForMember( - dto => dto.Owner, - expression => expression.ResolveUsing>()) - .ForMember( - dto => dto.Icon, - expression => expression.MapFrom(content => content.ContentType.Icon)) - .ForMember( - dto => dto.ContentTypeAlias, - expression => expression.MapFrom(content => content.ContentType.Alias)); + .ForMember( + dto => dto.Owner, + expression => expression.ResolveUsing>()) + .ForMember( + dto => dto.Icon, + expression => expression.MapFrom(content => content.ContentType.Icon)) + .ForMember( + dto => dto.ContentTypeAlias, + expression => expression.MapFrom(content => content.ContentType.Alias)) + .ForMember(x => x.Published, expression => expression.Ignore()) + .ForMember(x => x.Updator, expression => expression.Ignore()) + .ForMember(x => x.Alias, expression => expression.Ignore()); //FROM IMedia TO ContentItemDto config.CreateMap>() - .ForMember( - dto => dto.Owner, - expression => expression.ResolveUsing>()); + .ForMember( + dto => dto.Owner, + expression => expression.ResolveUsing>()) + .ForMember(x => x.Published, expression => expression.Ignore()) + .ForMember(x => x.Updator, expression => expression.Ignore()) + .ForMember(x => x.Icon, expression => expression.Ignore()) + .ForMember(x => x.Alias, expression => expression.Ignore()); } private static void AfterMap(IMedia media, MediaItemDisplay display) diff --git a/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs b/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs index 1f09e38720..d5f5f8a64e 100644 --- a/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs +++ b/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs @@ -31,63 +31,84 @@ namespace Umbraco.Web.Models.Mapping //FROM MembershipUser TO IMember - used when using a non-umbraco membership provider config.CreateMap() - .ConstructUsing(user => MemberService.CreateGenericMembershipProviderMember(user.UserName, user.Email, user.UserName, "")) - //we're giving this entity an ID - we cannot really map it but it needs an id so the system knows it's not a new entity - .ForMember(member => member.Id, expression => expression.MapFrom(user => int.MaxValue)) - .ForMember(member => member.Comments, expression => expression.MapFrom(user => user.Comment)) - .ForMember(member => member.CreateDate, expression => expression.MapFrom(user => user.CreationDate)) - .ForMember(member => member.UpdateDate, expression => expression.MapFrom(user => user.LastActivityDate)) - .ForMember(member => member.LastPasswordChangeDate, expression => expression.MapFrom(user => user.LastPasswordChangedDate)) - .ForMember(member => member.Key, expression => expression.MapFrom(user => user.ProviderUserKey.TryConvertTo().Result.ToString("N"))) - //This is a special case for password - we don't actually care what the password is but it either needs to be something or nothing - // so we'll set it to something if the member is actually created, otherwise nothing if it is a new member. - .ForMember(member => member.RawPasswordValue, expression => expression.MapFrom(user => user.CreationDate > DateTime.MinValue ? Guid.NewGuid().ToString("N") : "")) - //TODO: Support these eventually - .ForMember(member => member.PasswordQuestion, expression => expression.Ignore()) - .ForMember(member => member.RawPasswordAnswerValue, expression => expression.Ignore()); + .ConstructUsing(user => MemberService.CreateGenericMembershipProviderMember(user.UserName, user.Email, user.UserName, "")) + //we're giving this entity an ID - we cannot really map it but it needs an id so the system knows it's not a new entity + .ForMember(member => member.Id, expression => expression.MapFrom(user => int.MaxValue)) + .ForMember(member => member.Comments, expression => expression.MapFrom(user => user.Comment)) + .ForMember(member => member.CreateDate, expression => expression.MapFrom(user => user.CreationDate)) + .ForMember(member => member.UpdateDate, expression => expression.MapFrom(user => user.LastActivityDate)) + .ForMember(member => member.LastPasswordChangeDate, expression => expression.MapFrom(user => user.LastPasswordChangedDate)) + .ForMember(member => member.Key, expression => expression.MapFrom(user => user.ProviderUserKey.TryConvertTo().Result.ToString("N"))) + //This is a special case for password - we don't actually care what the password is but it either needs to be something or nothing + // so we'll set it to something if the member is actually created, otherwise nothing if it is a new member. + .ForMember(member => member.RawPasswordValue, expression => expression.MapFrom(user => user.CreationDate > DateTime.MinValue ? Guid.NewGuid().ToString("N") : "")) + .ForMember(member => member.Properties, expression => expression.Ignore()) + .ForMember(member => member.CreatorId, expression => expression.Ignore()) + .ForMember(member => member.Level, expression => expression.Ignore()) + .ForMember(member => member.Name, expression => expression.Ignore()) + .ForMember(member => member.ParentId, expression => expression.Ignore()) + .ForMember(member => member.Path, expression => expression.Ignore()) + .ForMember(member => member.SortOrder, expression => expression.Ignore()) + .ForMember(member => member.AdditionalData, expression => expression.Ignore()) + .ForMember(member => member.FailedPasswordAttempts, expression => expression.Ignore()) + //TODO: Support these eventually + .ForMember(member => member.PasswordQuestion, expression => expression.Ignore()) + .ForMember(member => member.RawPasswordAnswerValue, expression => expression.Ignore()); //FROM IMember TO MediaItemDisplay config.CreateMap() - .ForMember( - dto => dto.Owner, - expression => expression.ResolveUsing>()) - .ForMember( - dto => dto.Icon, - expression => expression.MapFrom(content => content.ContentType.Icon)) - .ForMember( - dto => dto.ContentTypeAlias, - expression => expression.MapFrom(content => content.ContentType.Alias)) - .ForMember( - dto => dto.ContentTypeName, - expression => expression.MapFrom(content => content.ContentType.Name)) - .ForMember(display => display.Properties, expression => expression.Ignore()) - .ForMember(display => display.Tabs, - expression => expression.ResolveUsing()) - .ForMember(display => display.MemberProviderFieldMapping, - expression => expression.ResolveUsing()) - .ForMember(display => display.MembershipScenario, - expression => expression.ResolveUsing(new MembershipScenarioMappingResolver(new Lazy(() => applicationContext.Services.MemberTypeService)))) - .AfterMap((member, display) => MapGenericCustomProperties(applicationContext.Services.MemberService, member, display)); + .ForMember( + dto => dto.Owner, + expression => expression.ResolveUsing>()) + .ForMember( + dto => dto.Icon, + expression => expression.MapFrom(content => content.ContentType.Icon)) + .ForMember( + dto => dto.ContentTypeAlias, + expression => expression.MapFrom(content => content.ContentType.Alias)) + .ForMember( + dto => dto.ContentTypeName, + expression => expression.MapFrom(content => content.ContentType.Name)) + .ForMember(display => display.Properties, expression => expression.Ignore()) + .ForMember(display => display.Tabs, + expression => expression.ResolveUsing()) + .ForMember(display => display.MemberProviderFieldMapping, + expression => expression.ResolveUsing()) + .ForMember(display => display.MembershipScenario, + expression => expression.ResolveUsing(new MembershipScenarioMappingResolver(new Lazy(() => applicationContext.Services.MemberTypeService)))) + .ForMember(display => display.Notifications, expression => expression.Ignore()) + .ForMember(display => display.Errors, expression => expression.Ignore()) + .ForMember(display => display.Published, expression => expression.Ignore()) + .ForMember(display => display.Updator, expression => expression.Ignore()) + .ForMember(display => display.Alias, expression => expression.Ignore()) + .AfterMap((member, display) => MapGenericCustomProperties(applicationContext.Services.MemberService, member, display)); //FROM IMember TO ContentItemBasic config.CreateMap>() - .ForMember( - dto => dto.Owner, - expression => expression.ResolveUsing>()) - .ForMember( - dto => dto.Icon, - expression => expression.MapFrom(content => content.ContentType.Icon)) - .ForMember( - dto => dto.ContentTypeAlias, - expression => expression.MapFrom(content => content.ContentType.Alias)); + .ForMember( + dto => dto.Owner, + expression => expression.ResolveUsing>()) + .ForMember( + dto => dto.Icon, + expression => expression.MapFrom(content => content.ContentType.Icon)) + .ForMember( + dto => dto.ContentTypeAlias, + expression => expression.MapFrom(content => content.ContentType.Alias)) + .ForMember(x => x.Published, expression => expression.Ignore()) + .ForMember(x => x.Updator, expression => expression.Ignore()) + .ForMember(x => x.Alias, expression => expression.Ignore()); //FROM IMember TO ContentItemDto config.CreateMap>() - .ForMember( - dto => dto.Owner, - expression => expression.ResolveUsing>()) + .ForMember( + dto => dto.Owner, + expression => expression.ResolveUsing>()) + .ForMember(x => x.Published, expression => expression.Ignore()) + .ForMember(x => x.Updator, expression => expression.Ignore()) + .ForMember(x => x.Icon, expression => expression.Ignore()) + .ForMember(x => x.Alias, expression => expression.Ignore()) //do no map the custom member properties (currently anyways, they were never there in 6.x) - .ForMember(dto => dto.Properties, expression => expression.ResolveUsing()); + .ForMember(dto => dto.Properties, expression => expression.ResolveUsing()); } /// diff --git a/src/Umbraco.Web/Models/Mapping/UserModelMapper.cs b/src/Umbraco.Web/Models/Mapping/UserModelMapper.cs index a3a3fa1a80..3ee3e80098 100644 --- a/src/Umbraco.Web/Models/Mapping/UserModelMapper.cs +++ b/src/Umbraco.Web/Models/Mapping/UserModelMapper.cs @@ -13,12 +13,13 @@ namespace Umbraco.Web.Models.Mapping public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext) { config.CreateMap() - .ForMember(detail => detail.UserId, opt => opt.MapFrom(user => GetIntId(user.Id))) - .ForMember(detail => detail.UserType, opt => opt.MapFrom(user => user.UserType.Alias)) - .ForMember(detail => detail.Culture, opt => opt.MapFrom(user => ui.Culture(user))) - .ForMember( - detail => detail.EmailHash, - opt => opt.MapFrom(user => user.Email.ToLowerInvariant().Trim().ToMd5())); + .ForMember(detail => detail.UserId, opt => opt.MapFrom(user => GetIntId(user.Id))) + .ForMember(detail => detail.UserType, opt => opt.MapFrom(user => user.UserType.Alias)) + .ForMember(detail => detail.Culture, opt => opt.MapFrom(user => ui.Culture(user))) + .ForMember( + detail => detail.EmailHash, + opt => opt.MapFrom(user => user.Email.ToLowerInvariant().Trim().ToMd5())) + .ForMember(detail => detail.SecondsUntilTimeout, opt => opt.Ignore()); config.CreateMap() .ForMember(detail => detail.UserId, opt => opt.MapFrom(profile => GetIntId(profile.Id))); diff --git a/src/umbraco.businesslogic/ApplicationTreeRegistrar.cs b/src/umbraco.businesslogic/ApplicationTreeRegistrar.cs index d7cee66c82..32945301ec 100644 --- a/src/umbraco.businesslogic/ApplicationTreeRegistrar.cs +++ b/src/umbraco.businesslogic/ApplicationTreeRegistrar.cs @@ -24,7 +24,13 @@ namespace umbraco.BusinessLogic public void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext) { config.CreateMap() - .ReverseMap(); //two way + .ForMember(x => x.Silent, opt => opt.Ignore()) + .ForMember(x => x.AssemblyName, opt => opt.Ignore()) + .ForMember(x => x.Action, opt => opt.Ignore()); + + config.CreateMap(); + + //.ReverseMap(); //two way } }