public async Task Consume(ConsumeContext <IChangeUserPasswordCommand> context)
        {
            var changePasswordArguments = context.Message;
            var user = await _userService.GetUserAsync(changePasswordArguments.UserId);

            var sendEmailEndpoint = context.GetSendEndpoint(NotificationServiceConstants.SendEmailNotificationUri);

            if (changePasswordArguments.PasswordSetupMethod == Enums.User.PasswordSetupMethod.GeneratePasswordViaLink)
            {
                var tempResetLink = await _passwordService.GetPasswordResetLink(user.Id, user.Email);

                await sendEmailEndpoint.Result.Send <ISendEmailCommand>(
                    new
                {
                    UserName          = user.Email,
                    TempResetLink     = tempResetLink,
                    To                = changePasswordArguments.PasswordSetupEmail,
                    EmailTemplateType = EmailTemplateType.ChangePassword,
                });
            }
            else
            {
                _activeDirectoryService.UpdateUserPassword(user.Email, changePasswordArguments.Password);

                if (changePasswordArguments.SendPlainPasswordViaEmail)
                {
                    await sendEmailEndpoint.Result.Send <ISendEmailCommand>(
                        new
                    {
                        UserName          = user.Email,
                        To                = changePasswordArguments.PasswordSetupEmail,
                        EmailTemplateType = EmailTemplateType.PasswordChangedSendPlainPasswordViaEmail,
                        changePasswordArguments.Password
                    });
                }
                else
                {
                    await sendEmailEndpoint.Result.Send <ISendEmailCommand>(
                        new
                    {
                        UserName          = user.Email,
                        To                = user.Email,
                        EmailTemplateType = EmailTemplateType.PasswordChanged,
                    });
                }
            }
        }
        public async Task <IHttpActionResult> UpdatePassword(UpdatePasswordViewModel model)
        {
            var user = await _userService.GetUserAsync(model.UserId);

            if (user == null)
            {
                return(NotFound());
            }


            var confirmationTokenResponse = await _passwordService.IsConfirmationTokenValid(user.Email, model.Token);

            if (!confirmationTokenResponse)
            {
                return(BadRequest("Confirmation token is invalid"));
            }

            await _activeDirectoryService.UpdateUserPassword(user.Email, model.Password);

            _userService.ResetSecurityStamp(user.UserName);

            return(Ok(true));
        }