public Result <Guid> CreateUser([FromBody] UserDto userDto) { try { if (CanSaveUserValidation(userDto, out var failResult)) { return(failResult); } var user = userDto.CreateUser(); var roleName = ""; if (userDto.Role != null) { var roleNameResult = Executor.GetQuery <GetRoleByIdQuery>().Process(q => q.Execute(userDto.Role.Id)); if (roleNameResult.IsFailure) { return(Result <Guid> .Fail(Guid.Empty, "Выбранная роль не найдена")); } roleName = roleNameResult.Value.Name; } Executor.CommandChain() .AddCommand <CreateUserCommand>(c => c.Execute(user)) .AddCommand <CreateUserClaimCommand>(c => c.Execute(UserClaimDto.UserNameClaim(userDto, user.Id))) .AddCommand <CreateUserClaimCommand>(c => c.Execute(UserClaimDto.UserRoleClaim(roleName, user.Id))) .AddCommand <CreateUserClaimCommand>(c => c.Execute(UserClaimDto.UserGenderClaim(userDto, user.Id))) .ExecuteAllWithTransaction(); return(Result <Guid> .Ok(user.Id)); } catch (Exception exception) { return(Result <Guid> .Fail(Guid.Empty, $"{exception.Message}, {exception.StackTrace}")); } }
public void CreateUserCommand_UserCreated_Success() { var executor = GetExecutor(); var roleResult = executor.GetQuery <GetRoleByNameQuery>().Process(q => q.Execute(RoleDtoTestData.AdminisrationRoleDto.Name)); roleResult.Should().NotBeNull(); var role = roleResult.Value; var userDto = new UserDto { FirstName = "CreatedUser", Role = role, IsActive = true }; var createdUserIdResult = executor.GetCommand <CreateUserCommand>().Process(c => c.Execute(userDto.CreateUser())); createdUserIdResult.Should().NotBeNull($"{nameof(createdUserIdResult)} is null"); var createdUserDtoResult = executor.GetQuery <GetUserByIdQuery>().Process(q => q.Execute(createdUserIdResult.Value)); createdUserDtoResult.Should().NotBeNull(); createdUserDtoResult.IsFailure.Should().BeFalse(createdUserDtoResult.Error); createdUserDtoResult.Value.Should().NotBeNull(); createdUserDtoResult.Value.FirstName.Should().Be("CreatedUser"); }