58 lines
2.0 KiB
C#
58 lines
2.0 KiB
C#
using AutoMapper;
|
|
using UserManagement.Application.Dtos.Incomming;
|
|
using UserManagement.Application.Dtos.Outgoing;
|
|
using UserManagement.Domain.Entities;
|
|
|
|
namespace UserManagement.Application.MappingProfiles
|
|
{
|
|
public class BasicDtoMappingProfile : Profile
|
|
{
|
|
public BasicDtoMappingProfile()
|
|
{
|
|
// ROLE
|
|
CreateMap<Role, CreatingRoleDto>().ReverseMap();
|
|
|
|
CreateMap<Role, ReadingRoleDto>().ReverseMap();
|
|
|
|
CreateMap<Role, UpdatingRoleDto>().ReverseMap();
|
|
|
|
// USER
|
|
CreateMap<User, CreatingUserDto>()
|
|
.ForMember(dest => dest.RoleIds, opt => opt.Ignore())
|
|
.ReverseMap()
|
|
.AfterMap((src, dest) =>
|
|
{
|
|
dest.UserRoles = src.RoleIds?.Select(roleId => new UserRole
|
|
{
|
|
RoleId = roleId,
|
|
User = dest
|
|
}).ToList();
|
|
|
|
dest.PasswordHash = BCrypt.Net.BCrypt.HashPassword(src.Password);
|
|
});
|
|
|
|
CreateMap<User, ReadingUserDto>()
|
|
.ForMember(dest => dest.UserRoles, opt => opt.MapFrom(src =>
|
|
src.UserRoles!.Select(ur => new ReadingRoleDto
|
|
{
|
|
Id = ur.Role!.Id,
|
|
Name = ur.Role.Name
|
|
}).ToList()));
|
|
|
|
CreateMap<User, UpdatingUserDto>()
|
|
.ForMember(dest => dest.RoleIds, opt => opt.Ignore())
|
|
.ReverseMap()
|
|
.AfterMap((src, dest) =>
|
|
{
|
|
dest.UserRoles = src.RoleIds?.Select(roleId => new UserRole
|
|
{
|
|
RoleId = roleId,
|
|
UserId = dest.Id
|
|
}).ToList();
|
|
|
|
dest.PasswordHash = BCrypt.Net.BCrypt.HashPassword(src.Password);
|
|
});
|
|
}
|
|
}
|
|
}
|