2013-11-07 17:16:22 +01:00
using System ;
using System.Collections.Generic ;
using System.Linq ;
using AutoMapper ;
using Umbraco.Core ;
2013-11-21 18:10:47 +11:00
using Umbraco.Core.Logging ;
2013-11-07 17:16:22 +01:00
using Umbraco.Core.Models ;
using Umbraco.Core.Models.Mapping ;
using Umbraco.Core.PropertyEditors ;
using Umbraco.Web.Models.ContentEditing ;
namespace Umbraco.Web.Models.Mapping
{
/// <summary>
/// Declares model mappings for macros.
/// </summary>
2016-03-22 16:29:04 +01:00
internal class MacroModelMapper : ModelMapperConfiguration
2013-11-07 17:16:22 +01:00
{
2016-03-22 16:29:04 +01:00
public override void ConfigureMappings ( IMapperConfiguration config , ApplicationContext applicationContext )
2013-11-07 17:16:22 +01:00
{
//FROM IMacro TO EntityBasic
config . CreateMap < IMacro , EntityBasic > ( )
. ForMember ( entityBasic = > entityBasic . Icon , expression = > expression . UseValue ( "icon-settings-alt" ) )
. ForMember ( dto = > dto . ParentId , expression = > expression . UseValue ( - 1 ) )
2014-04-14 15:20:02 +10:00
. ForMember ( dto = > dto . Path , expression = > expression . ResolveUsing ( macro = > "-1," + macro . Id ) )
2014-10-03 17:07:27 +10:00
. ForMember ( dto = > dto . Trashed , expression = > expression . Ignore ( ) )
2014-04-14 15:20:02 +10:00
. ForMember ( dto = > dto . AdditionalData , expression = > expression . Ignore ( ) ) ;
2013-11-07 17:16:22 +01:00
config . CreateMap < IMacro , IEnumerable < MacroParameter > > ( )
. ConvertUsing ( macro = > macro . Properties . Select ( Mapper . Map < MacroParameter > ) . ToList ( ) ) ;
config . CreateMap < IMacroProperty , MacroParameter > ( )
2014-04-14 15:20:02 +10:00
. 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 < MacroModelMapper > ( "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 ;
} ) ;
2013-11-07 17:16:22 +01:00
}
}
2013-09-18 17:31:41 +10:00
}