mirror of https://github.com/abpframework/abp.git
43 changed files with 723 additions and 320 deletions
@ -0,0 +1,81 @@ |
|||
using System; |
|||
using System.Collections.Concurrent; |
|||
using System.Collections.Generic; |
|||
using System.Collections.ObjectModel; |
|||
using System.Linq; |
|||
|
|||
namespace Volo.Abp.ObjectMapping; |
|||
|
|||
public static class ObjectMappingHelper |
|||
{ |
|||
private static readonly ConcurrentDictionary<(Type, Type), (Type sourceArgumentType, Type destinationArgumentType, Type definitionGenericType)?> Cache = new(); |
|||
|
|||
public static bool IsCollectionGenericType<TSource, TDestination>( |
|||
out Type sourceArgumentType, |
|||
out Type destinationArgumentType, |
|||
out Type definitionGenericType) |
|||
{ |
|||
var cached = Cache.GetOrAdd((typeof(TSource), typeof(TDestination)), _ => IsCollectionGenericTypeInternal<TSource, TDestination>()); |
|||
if (cached == null) |
|||
{ |
|||
sourceArgumentType = destinationArgumentType = definitionGenericType = null!; |
|||
return false; |
|||
} |
|||
|
|||
(sourceArgumentType, destinationArgumentType, definitionGenericType) = cached.Value; |
|||
return true; |
|||
} |
|||
|
|||
private static (Type, Type, Type)? IsCollectionGenericTypeInternal<TSource, TDestination>() |
|||
{ |
|||
if (!IsCollectionGenericTypeInternal(typeof(TSource), out var sourceArgumentType, out _) || |
|||
!IsCollectionGenericTypeInternal(typeof(TDestination), out var destinationArgumentType, out var definitionGenericType)) |
|||
{ |
|||
return null; |
|||
} |
|||
|
|||
return (sourceArgumentType, destinationArgumentType, definitionGenericType); |
|||
} |
|||
|
|||
private static bool IsCollectionGenericTypeInternal(Type type, out Type elementType, out Type definitionGenericType) |
|||
{ |
|||
var supportedCollectionTypes = new[] |
|||
{ |
|||
typeof(IEnumerable<>), |
|||
typeof(ICollection<>), |
|||
typeof(Collection<>), |
|||
typeof(IList<>), |
|||
typeof(List<>) |
|||
}; |
|||
|
|||
if (type.IsArray) |
|||
{ |
|||
elementType = type.GetElementType()!; |
|||
definitionGenericType = type; |
|||
return true; |
|||
} |
|||
|
|||
if (type.IsGenericType && |
|||
supportedCollectionTypes.Contains(type.GetGenericTypeDefinition()) || |
|||
type.GetInterfaces().Any(i => i.IsGenericType && supportedCollectionTypes.Contains(i.GetGenericTypeDefinition()))) |
|||
{ |
|||
elementType = type.GetGenericArguments()[0]; |
|||
definitionGenericType = type.GetGenericTypeDefinition(); |
|||
if (definitionGenericType == typeof(IEnumerable<>) || |
|||
definitionGenericType == typeof(IList<>)) |
|||
{ |
|||
definitionGenericType = typeof(List<>); |
|||
} |
|||
|
|||
if (definitionGenericType == typeof(ICollection<>)) |
|||
{ |
|||
definitionGenericType = typeof(Collection<>); |
|||
} |
|||
return true; |
|||
} |
|||
|
|||
elementType = null!; |
|||
definitionGenericType = null!; |
|||
return false; |
|||
} |
|||
} |
|||
@ -0,0 +1,21 @@ |
|||
using Riok.Mapperly.Abstractions; |
|||
using Volo.Abp.Identity; |
|||
using Volo.Abp.Mapperly; |
|||
|
|||
namespace Volo.Abp.Account; |
|||
|
|||
[Mapper] |
|||
[MapExtraProperties] |
|||
public partial class IdentityUserToProfileDtoMapper : MapperBase<IdentityUser, ProfileDto> |
|||
{ |
|||
[MapperIgnoreTarget(nameof(ProfileDto.HasPassword))] |
|||
public override partial ProfileDto Map(IdentityUser source); |
|||
|
|||
[MapperIgnoreTarget(nameof(ProfileDto.HasPassword))] |
|||
public override partial void Map(IdentityUser source, ProfileDto destination); |
|||
|
|||
public override void AfterMap(IdentityUser source, ProfileDto destination) |
|||
{ |
|||
destination.HasPassword = source.PasswordHash != null; |
|||
} |
|||
} |
|||
@ -1,15 +0,0 @@ |
|||
using AutoMapper; |
|||
using Volo.Abp.Identity; |
|||
|
|||
namespace Volo.Abp.Account; |
|||
|
|||
public class AbpAccountApplicationModuleAutoMapperProfile : Profile |
|||
{ |
|||
public AbpAccountApplicationModuleAutoMapperProfile() |
|||
{ |
|||
CreateMap<IdentityUser, ProfileDto>() |
|||
.ForMember(dest => dest.HasPassword, |
|||
op => op.MapFrom(src => src.PasswordHash != null)) |
|||
.MapExtraProperties(); |
|||
} |
|||
} |
|||
@ -1,20 +0,0 @@ |
|||
using AutoMapper; |
|||
using Volo.Abp.Account.Blazor.Pages.Account; |
|||
using Volo.Abp.AutoMapper; |
|||
using Volo.Abp.Identity; |
|||
|
|||
namespace Volo.Abp.Account.Blazor; |
|||
|
|||
public class AbpAccountBlazorAutoMapperProfile : Profile |
|||
{ |
|||
public AbpAccountBlazorAutoMapperProfile() |
|||
{ |
|||
CreateMap<ProfileDto, PersonalInfoModel>() |
|||
.MapExtraProperties() |
|||
.Ignore(x => x.PhoneNumberConfirmed) |
|||
.Ignore(x => x.EmailConfirmed); |
|||
|
|||
CreateMap<PersonalInfoModel, UpdateProfileDto>() |
|||
.MapExtraProperties(); |
|||
} |
|||
} |
|||
@ -0,0 +1,27 @@ |
|||
using Riok.Mapperly.Abstractions; |
|||
using Volo.Abp.Account.Blazor.Pages.Account; |
|||
using Volo.Abp.Mapperly; |
|||
using Volo.Abp.Identity; |
|||
|
|||
namespace Volo.Abp.Account.Blazor; |
|||
|
|||
[Mapper] |
|||
[MapExtraProperties] |
|||
public partial class ProfileDtoToPersonalInfoModelMapper : MapperBase<ProfileDto, PersonalInfoModel> |
|||
{ |
|||
[MapperIgnoreTarget(nameof(PersonalInfoModel.PhoneNumberConfirmed))] |
|||
[MapperIgnoreTarget(nameof(PersonalInfoModel.EmailConfirmed))] |
|||
public override partial PersonalInfoModel Map(ProfileDto source); |
|||
|
|||
[MapperIgnoreTarget(nameof(PersonalInfoModel.PhoneNumberConfirmed))] |
|||
[MapperIgnoreTarget(nameof(PersonalInfoModel.EmailConfirmed))] |
|||
public override partial void Map(ProfileDto source, PersonalInfoModel destination); |
|||
} |
|||
|
|||
[Mapper] |
|||
[MapExtraProperties] |
|||
public partial class PersonalInfoModelToUpdateProfileDtoMapper : MapperBase<PersonalInfoModel, UpdateProfileDto> |
|||
{ |
|||
public override partial UpdateProfileDto Map(PersonalInfoModel source); |
|||
public override partial void Map(PersonalInfoModel source, UpdateProfileDto destination); |
|||
} |
|||
@ -1,15 +0,0 @@ |
|||
using Volo.Abp.Account.Web.Pages.Account; |
|||
using Volo.Abp.Identity; |
|||
using AutoMapper; |
|||
using Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.PersonalInfo; |
|||
|
|||
namespace Volo.Abp.Account.Web; |
|||
|
|||
public class AbpAccountWebAutoMapperProfile : Profile |
|||
{ |
|||
public AbpAccountWebAutoMapperProfile() |
|||
{ |
|||
CreateMap<ProfileDto, AccountProfilePersonalInfoManagementGroupViewComponent.PersonalInfoModel>() |
|||
.MapExtraProperties(); |
|||
} |
|||
} |
|||
@ -0,0 +1,13 @@ |
|||
using Riok.Mapperly.Abstractions; |
|||
using Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.PersonalInfo; |
|||
using Volo.Abp.Mapperly; |
|||
|
|||
namespace Volo.Abp.Account.Web; |
|||
|
|||
[Mapper] |
|||
[MapExtraProperties] |
|||
public partial class ProfileDtoToPersonalInfoModelMapper : MapperBase<ProfileDto, AccountProfilePersonalInfoManagementGroupViewComponent.PersonalInfoModel> |
|||
{ |
|||
public override partial AccountProfilePersonalInfoManagementGroupViewComponent.PersonalInfoModel Map(ProfileDto source); |
|||
public override partial void Map(ProfileDto source, AccountProfilePersonalInfoManagementGroupViewComponent.PersonalInfoModel destination); |
|||
} |
|||
@ -0,0 +1,19 @@ |
|||
using Riok.Mapperly.Abstractions; |
|||
using Volo.Abp.Identity; |
|||
using Volo.Abp.Mapperly; |
|||
|
|||
[Mapper] |
|||
[MapExtraProperties] |
|||
public partial class IdentityUserToIdentityUserDtoMapper : MapperBase<IdentityUser, IdentityUserDto> |
|||
{ |
|||
public override partial IdentityUserDto Map(IdentityUser source); |
|||
public override partial void Map(IdentityUser source, IdentityUserDto destination); |
|||
} |
|||
|
|||
[Mapper] |
|||
[MapExtraProperties] |
|||
public partial class IdentityRoleToIdentityRoleDtoMapper : MapperBase<IdentityRole, IdentityRoleDto> |
|||
{ |
|||
public override partial IdentityRoleDto Map(IdentityRole source); |
|||
public override partial void Map(IdentityRole source, IdentityRoleDto destination); |
|||
} |
|||
@ -1,15 +0,0 @@ |
|||
using AutoMapper; |
|||
|
|||
namespace Volo.Abp.Identity; |
|||
|
|||
public class AbpIdentityApplicationModuleAutoMapperProfile : Profile |
|||
{ |
|||
public AbpIdentityApplicationModuleAutoMapperProfile() |
|||
{ |
|||
CreateMap<IdentityUser, IdentityUserDto>() |
|||
.MapExtraProperties(); |
|||
|
|||
CreateMap<IdentityRole, IdentityRoleDto>() |
|||
.MapExtraProperties(); |
|||
} |
|||
} |
|||
@ -1,18 +0,0 @@ |
|||
using AutoMapper; |
|||
using Volo.Abp.AutoMapper; |
|||
|
|||
namespace Volo.Abp.Identity.Blazor; |
|||
|
|||
public class AbpIdentityBlazorAutoMapperProfile : Profile |
|||
{ |
|||
public AbpIdentityBlazorAutoMapperProfile() |
|||
{ |
|||
CreateMap<IdentityUserDto, IdentityUserUpdateDto>() |
|||
.MapExtraProperties() |
|||
.Ignore(x => x.Password) |
|||
.Ignore(x => x.RoleNames); |
|||
|
|||
CreateMap<IdentityRoleDto, IdentityRoleUpdateDto>() |
|||
.MapExtraProperties(); |
|||
} |
|||
} |
|||
@ -0,0 +1,25 @@ |
|||
using Riok.Mapperly.Abstractions; |
|||
using Volo.Abp.Mapperly; |
|||
|
|||
namespace Volo.Abp.Identity.Blazor; |
|||
|
|||
[Mapper] |
|||
[MapExtraProperties] |
|||
public partial class IdentityUserDtoToIdentityUserUpdateDtoMapper : MapperBase<IdentityUserDto, IdentityUserUpdateDto> |
|||
{ |
|||
[MapperIgnoreTarget(nameof(IdentityUserUpdateDto.Password))] |
|||
[MapperIgnoreTarget(nameof(IdentityUserUpdateDto.RoleNames))] |
|||
public override partial IdentityUserUpdateDto Map(IdentityUserDto source); |
|||
|
|||
[MapperIgnoreTarget(nameof(IdentityUserUpdateDto.Password))] |
|||
[MapperIgnoreTarget(nameof(IdentityUserUpdateDto.RoleNames))] |
|||
public override partial void Map(IdentityUserDto source, IdentityUserUpdateDto destination); |
|||
} |
|||
|
|||
[Mapper] |
|||
[MapExtraProperties] |
|||
public partial class IdentityRoleDtoToIdentityRoleUpdateDtoMapper : MapperBase<IdentityRoleDto, IdentityRoleUpdateDto> |
|||
{ |
|||
public override partial IdentityRoleUpdateDto Map(IdentityRoleDto source); |
|||
public override partial void Map(IdentityRoleDto source, IdentityRoleUpdateDto destination); |
|||
} |
|||
@ -0,0 +1,33 @@ |
|||
using Riok.Mapperly.Abstractions; |
|||
using Volo.Abp.Mapperly; |
|||
using Volo.Abp.Users; |
|||
|
|||
namespace Volo.Abp.Identity; |
|||
|
|||
[Mapper] |
|||
public partial class IdentityUserToUserEtoMapper : MapperBase<IdentityUser, UserEto> |
|||
{ |
|||
public override partial UserEto Map(IdentityUser source); |
|||
public override partial void Map(IdentityUser source, UserEto destination); |
|||
} |
|||
|
|||
[Mapper] |
|||
public partial class IdentityClaimTypeToIdentityClaimTypeEtoMapper : MapperBase<IdentityClaimType, IdentityClaimTypeEto> |
|||
{ |
|||
public override partial IdentityClaimTypeEto Map(IdentityClaimType source); |
|||
public override partial void Map(IdentityClaimType source, IdentityClaimTypeEto destination); |
|||
} |
|||
|
|||
[Mapper] |
|||
public partial class IdentityRoleToIdentityRoleEtoMapper : MapperBase<IdentityRole, IdentityRoleEto> |
|||
{ |
|||
public override partial IdentityRoleEto Map(IdentityRole source); |
|||
public override partial void Map(IdentityRole source, IdentityRoleEto destination); |
|||
} |
|||
|
|||
[Mapper] |
|||
public partial class OrganizationUnitToOrganizationUnitEtoMapper : MapperBase<OrganizationUnit, OrganizationUnitEto> |
|||
{ |
|||
public override partial OrganizationUnitEto Map(OrganizationUnit source); |
|||
public override partial void Map(OrganizationUnit source, OrganizationUnitEto destination); |
|||
} |
|||
@ -1,15 +0,0 @@ |
|||
using AutoMapper; |
|||
using Volo.Abp.Users; |
|||
|
|||
namespace Volo.Abp.Identity; |
|||
|
|||
public class IdentityDomainMappingProfile : Profile |
|||
{ |
|||
public IdentityDomainMappingProfile() |
|||
{ |
|||
CreateMap<IdentityUser, UserEto>(); |
|||
CreateMap<IdentityClaimType, IdentityClaimTypeEto>(); |
|||
CreateMap<IdentityRole, IdentityRoleEto>(); |
|||
CreateMap<OrganizationUnit, OrganizationUnitEto>(); |
|||
} |
|||
} |
|||
@ -1,57 +0,0 @@ |
|||
using AutoMapper; |
|||
using Volo.Abp.AutoMapper; |
|||
using Volo.Abp.Identity.Web.Pages.Identity.Roles; |
|||
using CreateUserModalModel = Volo.Abp.Identity.Web.Pages.Identity.Users.CreateModalModel; |
|||
using EditUserModalModel = Volo.Abp.Identity.Web.Pages.Identity.Users.EditModalModel; |
|||
|
|||
namespace Volo.Abp.Identity.Web; |
|||
|
|||
public class AbpIdentityWebAutoMapperProfile : Profile |
|||
{ |
|||
public AbpIdentityWebAutoMapperProfile() |
|||
{ |
|||
CreateUserMappings(); |
|||
CreateRoleMappings(); |
|||
} |
|||
|
|||
protected virtual void CreateUserMappings() |
|||
{ |
|||
//List
|
|||
CreateMap<IdentityUserDto, EditUserModalModel.UserInfoViewModel>() |
|||
.Ignore(x => x.Password); |
|||
|
|||
//CreateModal
|
|||
CreateMap<CreateUserModalModel.UserInfoViewModel, IdentityUserCreateDto>() |
|||
.MapExtraProperties() |
|||
.ForMember(dest => dest.RoleNames, opt => opt.Ignore()); |
|||
|
|||
CreateMap<IdentityRoleDto, CreateUserModalModel.AssignedRoleViewModel>() |
|||
.ForMember(dest => dest.IsAssigned, opt => opt.Ignore()); |
|||
|
|||
//EditModal
|
|||
CreateMap<EditUserModalModel.UserInfoViewModel, IdentityUserUpdateDto>() |
|||
.MapExtraProperties() |
|||
.ForMember(dest => dest.RoleNames, opt => opt.Ignore()); |
|||
|
|||
CreateMap<IdentityRoleDto, EditUserModalModel.AssignedRoleViewModel>() |
|||
.ForMember(dest => dest.IsAssigned, opt => opt.Ignore()); |
|||
|
|||
CreateMap<IdentityUserDto, EditUserModalModel.DetailViewModel>() |
|||
.ForMember(dest => dest.CreatedBy, opt => opt.Ignore()) |
|||
.ForMember(dest => dest.ModifiedBy, opt => opt.Ignore()); |
|||
} |
|||
|
|||
protected virtual void CreateRoleMappings() |
|||
{ |
|||
//List
|
|||
CreateMap<IdentityRoleDto, EditModalModel.RoleInfoModel>(); |
|||
|
|||
//CreateModal
|
|||
CreateMap<CreateModalModel.RoleInfoModel, IdentityRoleCreateDto>() |
|||
.MapExtraProperties(); |
|||
|
|||
//EditModal
|
|||
CreateMap<EditModalModel.RoleInfoModel, IdentityRoleUpdateDto>() |
|||
.MapExtraProperties(); |
|||
} |
|||
} |
|||
@ -0,0 +1,94 @@ |
|||
using Riok.Mapperly.Abstractions; |
|||
using Volo.Abp.Mapperly; |
|||
using Volo.Abp.Identity.Web.Pages.Identity.Roles; |
|||
using CreateUserModalModel = Volo.Abp.Identity.Web.Pages.Identity.Users.CreateModalModel; |
|||
using EditUserModalModel = Volo.Abp.Identity.Web.Pages.Identity.Users.EditModalModel; |
|||
|
|||
namespace Volo.Abp.Identity.Web; |
|||
|
|||
[Mapper] |
|||
public partial class IdentityUserDtoToEditUserModalModelUserInfoViewModelMapper : MapperBase<IdentityUserDto, EditUserModalModel.UserInfoViewModel> |
|||
{ |
|||
[MapperIgnoreTarget(nameof(EditUserModalModel.UserInfoViewModel.Password))] |
|||
public override partial EditUserModalModel.UserInfoViewModel Map(IdentityUserDto source); |
|||
|
|||
[MapperIgnoreTarget(nameof(EditUserModalModel.UserInfoViewModel.Password))] |
|||
public override partial void Map(IdentityUserDto source, EditUserModalModel.UserInfoViewModel destination); |
|||
} |
|||
|
|||
[Mapper] |
|||
[MapExtraProperties] |
|||
public partial class CreateUserModalModelUserInfoViewModelToIdentityUserCreateDtoMapper : MapperBase<CreateUserModalModel.UserInfoViewModel, IdentityUserCreateDto> |
|||
{ |
|||
[MapperIgnoreTarget(nameof(IdentityUserCreateDto.RoleNames))] |
|||
public override partial IdentityUserCreateDto Map(CreateUserModalModel.UserInfoViewModel source); |
|||
|
|||
[MapperIgnoreTarget(nameof(IdentityUserCreateDto.RoleNames))] |
|||
public override partial void Map(CreateUserModalModel.UserInfoViewModel source, IdentityUserCreateDto destination); |
|||
} |
|||
|
|||
[Mapper] |
|||
[MapExtraProperties] |
|||
public partial class IdentityRoleDtoToCreateUserModalModelAssignedRoleViewModelMapper : MapperBase<IdentityRoleDto, CreateUserModalModel.AssignedRoleViewModel> |
|||
{ |
|||
[MapperIgnoreTarget(nameof(CreateUserModalModel.AssignedRoleViewModel.IsAssigned))] |
|||
public override partial CreateUserModalModel.AssignedRoleViewModel Map(IdentityRoleDto source); |
|||
|
|||
[MapperIgnoreTarget(nameof(CreateUserModalModel.AssignedRoleViewModel.IsAssigned))] |
|||
public override partial void Map(IdentityRoleDto source, CreateUserModalModel.AssignedRoleViewModel destination); |
|||
} |
|||
|
|||
[Mapper] |
|||
public partial class EditUserModalModelUserInfoViewModelToIdentityUserUpdateDtoMapper : MapperBase<EditUserModalModel.UserInfoViewModel, IdentityUserUpdateDto> |
|||
{ |
|||
[MapperIgnoreTarget(nameof(IdentityUserUpdateDto.RoleNames))] |
|||
public override partial IdentityUserUpdateDto Map(EditUserModalModel.UserInfoViewModel source); |
|||
|
|||
[MapperIgnoreTarget(nameof(IdentityUserUpdateDto.RoleNames))] |
|||
public override partial void Map(EditUserModalModel.UserInfoViewModel source, IdentityUserUpdateDto destination); |
|||
} |
|||
|
|||
[Mapper] |
|||
public partial class IdentityRoleDtoToEditUserModalModelAssignedRoleViewModelMapper : MapperBase<IdentityRoleDto, EditUserModalModel.AssignedRoleViewModel> |
|||
{ |
|||
[MapperIgnoreTarget(nameof(EditUserModalModel.AssignedRoleViewModel.IsAssigned))] |
|||
public override partial EditUserModalModel.AssignedRoleViewModel Map(IdentityRoleDto source); |
|||
|
|||
[MapperIgnoreTarget(nameof(EditUserModalModel.AssignedRoleViewModel.IsAssigned))] |
|||
public override partial void Map(IdentityRoleDto source, EditUserModalModel.AssignedRoleViewModel destination); |
|||
} |
|||
|
|||
[Mapper] |
|||
public partial class IdentityUserDtoToEditUserModalModelDetailViewModelMapper : MapperBase<IdentityUserDto, EditUserModalModel.DetailViewModel> |
|||
{ |
|||
[MapperIgnoreTarget(nameof(EditUserModalModel.DetailViewModel.CreatedBy))] |
|||
[MapperIgnoreTarget(nameof(EditUserModalModel.DetailViewModel.ModifiedBy))] |
|||
public override partial EditUserModalModel.DetailViewModel Map(IdentityUserDto source); |
|||
|
|||
[MapperIgnoreTarget(nameof(EditUserModalModel.DetailViewModel.CreatedBy))] |
|||
[MapperIgnoreTarget(nameof(EditUserModalModel.DetailViewModel.ModifiedBy))] |
|||
public override partial void Map(IdentityUserDto source, EditUserModalModel.DetailViewModel destination); |
|||
} |
|||
|
|||
[Mapper] |
|||
public partial class IdentityRoleDtoToEditModalModelRoleInfoModelMapper : MapperBase<IdentityRoleDto, EditModalModel.RoleInfoModel> |
|||
{ |
|||
public override partial EditModalModel.RoleInfoModel Map(IdentityRoleDto source); |
|||
public override partial void Map(IdentityRoleDto source, EditModalModel.RoleInfoModel destination); |
|||
} |
|||
|
|||
[Mapper] |
|||
[MapExtraProperties] |
|||
public partial class CreateModalModelRoleInfoModelToIdentityRoleCreateDtoMapper : MapperBase<CreateModalModel.RoleInfoModel, IdentityRoleCreateDto> |
|||
{ |
|||
public override partial IdentityRoleCreateDto Map(CreateModalModel.RoleInfoModel source); |
|||
public override partial void Map(CreateModalModel.RoleInfoModel source, IdentityRoleCreateDto destination); |
|||
} |
|||
|
|||
[Mapper] |
|||
[MapExtraProperties] |
|||
public partial class EditModalModelRoleInfoModelToIdentityRoleUpdateDtoMapper : MapperBase<EditModalModel.RoleInfoModel, IdentityRoleUpdateDto> |
|||
{ |
|||
public override partial IdentityRoleUpdateDto Map(EditModalModel.RoleInfoModel source); |
|||
public override partial void Map(EditModalModel.RoleInfoModel source, IdentityRoleUpdateDto destination); |
|||
} |
|||
Loading…
Reference in new issue