Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace Nop.Core.Infrastructure.Mapper;
using Mapster;

namespace Nop.Core.Infrastructure.Mapper;

/// <summary>
/// Mapper profile registrar interface
Expand All @@ -9,4 +11,10 @@ public partial interface IOrderedMapperProfile
/// Gets order of this configuration implementation
/// </summary>
int Order { get; }

/// <summary>
/// Configure mappings for Mapster
/// </summary>
/// <param name="config">Type adapter configuration</param>
void Configure(TypeAdapterConfig config);
}
Original file line number Diff line number Diff line change
@@ -1,29 +1,30 @@
using AutoMapper;
using Mapster;
using MapsterMapper;

namespace Nop.Core.Infrastructure.Mapper;

/// <summary>
/// AutoMapper configuration
/// Mapster configuration
/// </summary>
public static class AutoMapperConfiguration
public static class MapsterConfiguration
{
/// <summary>
/// Mapper
/// </summary>
public static IMapper Mapper { get; private set; }

/// <summary>
/// Mapper configuration
/// TypeAdapterConfig
/// </summary>
public static MapperConfiguration MapperConfiguration { get; private set; }
public static TypeAdapterConfig Config { get; private set; }

/// <summary>
/// Initialize mapper
/// </summary>
/// <param name="config">Mapper configuration</param>
public static void Init(MapperConfiguration config)
public static void Init(TypeAdapterConfig config)
{
MapperConfiguration = config;
Mapper = config.CreateMapper();
Config = config;
Mapper = new MapsterMapper.Mapper(config);
}
}
22 changes: 11 additions & 11 deletions src/Libraries/Nop.Core/Infrastructure/NopEngine.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
using System.Reflection;
using AutoMapper;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Nop.Core.Infrastructure.Mapper;
using Mapster;

namespace Nop.Core.Infrastructure;

Expand Down Expand Up @@ -53,9 +53,9 @@ protected virtual void RunStartupTasks()
}

/// <summary>
/// Register and configure AutoMapper
/// Register and configure Mapster
/// </summary>
protected virtual void AddAutoMapper()
protected virtual void AddMapster()
{
//find mapper configurations provided by other assemblies
var typeFinder = Singleton<ITypeFinder>.Instance;
Expand All @@ -67,15 +67,15 @@ protected virtual void AddAutoMapper()
.Where(mapperConfiguration => mapperConfiguration != null)
.OrderBy(mapperConfiguration => mapperConfiguration.Order);

//create AutoMapper configuration
var config = new MapperConfiguration(cfg =>
{
foreach (var instance in instances)
cfg.AddProfile(instance.GetType());
});
//create Mapster configuration
var config = new TypeAdapterConfig();

foreach (var instance in instances)
instance.Configure(config);
config.Compile();

//register
AutoMapperConfiguration.Init(config);
MapsterConfiguration.Init(config);
}

protected virtual Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
Expand Down Expand Up @@ -124,7 +124,7 @@ public virtual void ConfigureServices(IServiceCollection services, IConfiguratio
services.AddSingleton(services);

//register mapper configurations
AddAutoMapper();
AddMapster();

//run startup tasks
RunStartupTasks();
Expand Down
1 change: 1 addition & 0 deletions src/Libraries/Nop.Core/Nop.Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
<!--Do not remove this reference. Azure.Identity library need for properly work some of the IThumbService implementation-->
<PackageReference Include="Azure.Identity" Version="1.13.2" />
<PackageReference Include="Humanizer" Version="2.14.1" />
<PackageReference Include="Mapster" Version="7.4.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="9.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="9.0.2" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,29 @@
using AutoMapper;
using Mapster;
using Nop.Core.Infrastructure.Mapper;
using Nop.Plugin.Widgets.AccessiBe.Models;

namespace Nop.Plugin.Widgets.AccessiBe.Infrastructure;

/// <summary>
/// Represents AutoMapper configuration for widget models
/// Represents Mapster configuration for widget models
/// </summary>
public class MapperConfiguration : Profile, IOrderedMapperProfile
public class MapperConfiguration : IOrderedMapperProfile
{
#region Ctor
#region Methods

public MapperConfiguration()
/// <summary>
/// Configure mappings for Mapster
/// </summary>
/// <param name="config">Type adapter configuration</param>
public void Configure(TypeAdapterConfig config)
{
CreateMap<AccessiBeMobileSettings, AccessiBeTriggerMobileModel>();
CreateMap<AccessiBeTriggerMobileModel, AccessiBeMobileSettings>();
config.NewConfig<AccessiBeMobileSettings, AccessiBeTriggerMobileModel>();
config.NewConfig<AccessiBeTriggerMobileModel, AccessiBeMobileSettings>();

CreateMap<AccessiBeSettings, AccessiBeTriggerModel>()
.ForMember(model => model.ShowMobile, options => options.MapFrom(src => !src.HideMobile)); //invert
CreateMap<AccessiBeTriggerModel, AccessiBeSettings>()
.ForMember(setting => setting.HideMobile, options => options.MapFrom(src => !src.ShowMobile)); //invert
config.NewConfig<AccessiBeSettings, AccessiBeTriggerModel>()
.Map(model => model.ShowMobile, src => !src.HideMobile); // invert
config.NewConfig<AccessiBeTriggerModel, AccessiBeSettings>()
.Map(setting => setting.HideMobile, src => !src.ShowMobile); // invert
}

#endregion
Expand Down
Original file line number Diff line number Diff line change
@@ -1,28 +1,32 @@
using AutoMapper;
using Mapster;
using Nop.Core.Infrastructure.Mapper;
using Nop.Plugin.Widgets.FacebookPixel.Domain;
using Nop.Plugin.Widgets.FacebookPixel.Models;

namespace Nop.Plugin.Widgets.FacebookPixel.Infrastructure.Mapper;

/// <summary>
/// Represents AutoMapper configuration for plugin models
/// Represents Mapster configuration for plugin models
/// </summary>
public class MapperConfiguration : Profile, IOrderedMapperProfile
public class MapperConfiguration : IOrderedMapperProfile
{
#region Ctor
#region Methods

public MapperConfiguration()
/// <summary>
/// Configure mappings for Mapster
/// </summary>
/// <param name="config">Type adapter configuration</param>
public void Configure(TypeAdapterConfig config)
{
CreateMap<FacebookPixelConfiguration, FacebookPixelModel>()
.ForMember(model => model.AvailableStores, options => options.Ignore())
.ForMember(model => model.CustomEventSearchModel, options => options.Ignore())
.ForMember(model => model.CustomProperties, options => options.Ignore())
.ForMember(model => model.HideCustomEventsSearch, options => options.Ignore())
.ForMember(model => model.HideStoresList, options => options.Ignore())
.ForMember(model => model.StoreName, options => options.Ignore());
CreateMap<FacebookPixelModel, FacebookPixelConfiguration>()
.ForMember(entity => entity.CustomEvents, options => options.Ignore());
config.NewConfig<FacebookPixelConfiguration, FacebookPixelModel>()
.Ignore(model => model.AvailableStores)
.Ignore(model => model.CustomEventSearchModel)
.Ignore(model => model.CustomProperties)
.Ignore(model => model.HideCustomEventsSearch)
.Ignore(model => model.HideStoresList)
.Ignore(model => model.StoreName);
config.NewConfig<FacebookPixelModel, FacebookPixelConfiguration>()
.Ignore(entity => entity.CustomEvents);
}

#endregion
Expand Down
Loading