public async Task <IHttpActionResult> RegisterUser([FromBody] RegisterViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (_administrationService.UserEmailExists(model.Email))
            {
                var user = await _userManager.FindByEmailAsync(model.Email);

                if (user != null && !user.EmailConfirmed && _administrationService.HasExistingExternalLogin(model.Email, AuthenticationConstants.InternalLoginProvider))
                {
                    await _userManager.RemovePasswordAsync(user.Id);

                    await _userManager.AddPasswordAsync(user.Id, model.Password);

                    await _administrationService.SendUserVerificationEmail(user, RequestedOrganization);

                    return(Ok());
                }

                return(BadRequest("User already exists"));
            }

            if (_administrationService.UserIsSoftDeleted(model.Email))
            {
                _administrationService.RestoreUser(model.Email);

                return(Ok());
            }

            var result = await _administrationService.CreateNewUser(_mapper.Map <ApplicationUser>(model), model.Password, RequestedOrganization);

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            return(Ok());
        }