public void Validate_GivenAllPropertiesAreValid_ExpectValidationSuccess()
        {
            var request = new DisableAccountRequest
            {
                UserId = TestVariables.UserId,
            };
            var validator = new DisableAccountRequest.Validator();
            var result    = validator.Validate(request);

            Assert.True(result.IsValid);
        }
        public void Validate_GivenNameIsEmpty_ExpectValidationFailure()
        {
            var request = new DisableAccountRequest
            {
                UserId = Guid.Empty,
            };
            var validator = new DisableAccountRequest.Validator();
            var result    = validator.Validate(request);

            Assert.False(result.IsValid);
            Assert.Contains(
                result.Errors,
                failure => failure.PropertyName == "UserId");
        }
        public async Task <IActionResult> DisableAccount([FromBody] DisableAccountRequest request)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.Json(new DisableAccountResponse(false)));
            }

            var maybe = this._currentAuthenticatedUserProvider.CurrentAuthenticatedUser;

            if (maybe.HasNoValue)
            {
                return(this.Json(new DisableAccountResponse(false)));
            }

            if (maybe.Value.UserId == request.UserId)
            {
                return(this.Json(new DisableAccountResponse(false)));
            }

            var result = await this._mediator.Send(new DisableAccountCommand(request.UserId));

            return(this.Json(new DisableAccountResponse(result.IsSuccess)));
        }