public async Task <IActionResult> BlockUser([FromRoute] int id)
        {
            LogBeginOfRequest();
            if (!ModelState.IsValid)
            {
                LogEndOfRequest("Failed Bad request", 400);
                return(BadRequest(ModelState));
            }

            if (VerifyIfUserIdEqualsTokenClaimName(id))
            {
                LogEndOfRequest($"User id {GetUserTypeFromToken()} {GetUserTypeFromToken()}, Trying to block himself", 400);
                return(BadRequest());
            }

            try
            {
                var command = new BlockUserCommand(id);
                await userService.BlockUserCommand.HandleAsync(command);

                LogEndOfRequest("Success", 200);
                return(Ok());
            } catch (KeyNotFoundException)
            {
                LogEndOfRequest($"Failed User with id {id} not found", 404);
                return(NotFound());
            }
        }
        public void UserIdIsValid_ShouldNotHaveError()
        {
            _command = new BlockUserCommand {
                UserId = "userId"
            };

            _sut.ShouldNotHaveValidationErrorFor(x => x.UserId, _command);
        }
        public void UserIdIsNullOrEmpty_ShouldHaveError(string userId)
        {
            _command = new BlockUserCommand {
                UserId = userId
            };

            _sut.ShouldHaveValidationErrorFor(x => x.UserId, _command);
        }
Пример #4
0
        public ActionResult BlockUser(BlockUserCommand command)
        {
            string error;
            User   user;

            if ((user = _repository.GetUserByToken(command.user_token)) != null)
            {
                var interlocutor = _repository.GetUserByPublicToken(command.opposide_public_token);
                if (interlocutor != null)
                {
                    if (command.blocked_reason.Length < 100)
                    {
                        var blockedUser = _repository.GetBlockedUser(user.Id, interlocutor.Id);
                        if (blockedUser == null)
                        {
                            blockedUser = new BlockedUser
                            {
                                UserId        = user.Id,
                                BlockedUserId = interlocutor.Id,
                                Reason        = command.blocked_reason,
                                Deleted       = false
                            };
                            _repository.CreateBlockedUser(blockedUser);
                            _logger.LogInformation($"Block user by user, id -> {user.Id}.");
                            return(Ok(new MessageResponse(true, "User was blocked.")));
                        }
                        else
                        {
                            error = "User blocked current user.";
                        }
                    }
                    else
                    {
                        error = "Reason message can't be longer than 100 characters.";
                    }
                }
                else
                {
                    error = "No user with that opposide_public_token.";
                }
            }
            else
            {
                error = "Server can't define user by token.";
            }

            _logger.LogWarning(error);
            var response = new MessageResponse(false, error);

            return(StatusCode(500, response));
        }
Пример #5
0
        public void SetUp()
        {
            _service    = new Mock <IBlockUserService>();
            _unitOfWork = new Mock <IUnitOfWork>();
            _sut        = new BlockUserCommandHandler(_service.Object, _unitOfWork.Object);

            _command = new BlockUserCommand {
                UserId = "userId",
            };

            _userToBlock = new User("email", "organizationId");
            _service.Setup(x => x.GetUser(_command.UserId, default))
            .ReturnsAsync(_userToBlock);
        }
Пример #6
0
        public async Task <ActionResult> BlockUser(BlockUserCommand command, CancellationToken token)
        {
            await Mediator.Send(command, token);

            return(NoContent());
        }