private NotificationModel BuildResetPasswordNotificationModel(ResetPasswordNotificationModel resetPasswordNotificationModel)
        {
            var resetPasswordNotificationMessage = new ManufacturerPartialRegistrationMessage
            {
                From             = resetPasswordNotificationModel.FromEmail,
                EmailDisplayName = "Tssp Portal",
                To = new List <string> {
                    resetPasswordNotificationModel.ToEmail
                },
                ReceiverDisplayName = resetPasswordNotificationModel.ContactName,
                Subject             = "Reset Password",
                OrganizationName    = resetPasswordNotificationModel.OrgName,
                URL = resetPasswordNotificationModel.CallBackUrl
            };
            NotificationModel notificationModel = new NotificationModel();

            notificationModel.EmailContent          = resetPasswordNotificationMessage;
            notificationModel.EmailContentModelType = notificationModel.EmailContent.GetType().Name;
            notificationModel.NotificationType      = NotificationType.Email;
            return(notificationModel);
        }
        public async Task <IActionResult> ForgotPassword(ForgotPasswordModel forgotPasswordModel)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.FindByEmailAsync(forgotPasswordModel.Email);

                if (user == null || !(await _userManager.IsEmailConfirmedAsync(user)))
                {
                    // Don't reveal that the user does not exist or is not confirmed
                    return(View("ForgotPasswordEmailFailed"));
                }

                // For more information on how to enable account confirmation and password reset please
                // visit https://go.microsoft.com/fwlink/?LinkID=532713
                var userClaims = await _userManager.GetClaimsAsync(user);

                var fromEmail         = _configurationRoot.GetValue <string>("NotificationFromEmail");
                var resetPasswordCode = await _userManager.GeneratePasswordResetTokenAsync(user);

                resetPasswordCode = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(resetPasswordCode));

                var resetPasswordUrl = Url.Action("ResetPassword", "Account", new { code = resetPasswordCode }, Request.Scheme);

                var resetPasswordNotificationModel = new ResetPasswordNotificationModel();
                resetPasswordNotificationModel.CallBackUrl = resetPasswordUrl;
                resetPasswordNotificationModel.ContactName = userClaims.FirstOrDefault(x => x.Type == "GivenName")?.Value ?? string.Empty;
                resetPasswordNotificationModel.FromEmail   = fromEmail;
                resetPasswordNotificationModel.ToEmail     = user.Email;
                resetPasswordNotificationModel.OrgName     = userClaims.FirstOrDefault(x => x.Type == "OrgName")?.Value ?? string.Empty;
                await _notificationHelper.SendNotificationToQueue(BuildResetPasswordNotificationModel(resetPasswordNotificationModel));

                return(View("ForgotPasswordConfirmation"));
            }

            return(View(forgotPasswordModel));
        }