Exemplo n.º 1
0
        public async Task <IActionResult> EditEmail2(EditEmail2ViewModel model, CancellationToken cancellationToken)
        {
            if (!ModelState.IsValid)
            {
                return(PartialView(ViewNames.Manage._EditEmail2ModalPartial, model));
            }

            var userEntity = await _siteContext.AppDb.UserRepository.GetLoginUserByUserNameAsync(User.Identity.Name, cancellationToken);

            if (userEntity == null)
            {
                TempData.Put <ManageMessage>(nameof(ManageMessage), new ManageMessage {
                    AlertType = SiteAlertTagHelper.AlertType.Danger, MessageId = MessageId.ChangeEmail2Failure
                });
                return(JsonAjaxRedirectForModal(Url.Action(nameof(Index), nameof(Manage), new { Organization = _siteContext.UrlSegmentValue })));
            }

            if (_userManager.KeyNormalizer.NormalizeEmail(userEntity.Email2) == _userManager.KeyNormalizer.NormalizeEmail(model.Email2))
            {
                // do nothing and display success
                TempData.Put <ManageMessage>(nameof(ManageMessage), new ManageMessage {
                    AlertType = SiteAlertTagHelper.AlertType.Success, MessageId = MessageId.ChangeEmail2Success
                });
                return(JsonAjaxRedirectForModal(Url.Action(nameof(Index), nameof(Manage), new { Organization = _siteContext.UrlSegmentValue })));
            }

            if (_userManager.KeyNormalizer.NormalizeEmail(userEntity.Email) == _userManager.KeyNormalizer.NormalizeEmail(model.Email2))
            {
                _logger.LogInformation($"Primary and additional email are equal ('{userEntity.Email}').");
                ModelState.AddModelError(nameof(EditEmail2ViewModel.Email2), _localizer["'{0}' and '{1}' must be different", _metaData.GetDisplayName <EditEmail2ViewModel>(nameof(EditEmail2ViewModel.Email2)), _metaData.GetDisplayName <ChangeEmailViewModel>(nameof(ChangeEmailViewModel.Email))]);
                return(PartialView(ViewNames.Manage._EditEmail2ModalPartial, model));
            }

            userEntity.Email2 = model.Email2 ?? string.Empty;
            try
            {
                await _siteContext.AppDb.GenericRepository.SaveEntityAsync(userEntity, false, false, cancellationToken);

                TempData.Put <ManageMessage>(nameof(ManageMessage), new ManageMessage {
                    AlertType = SiteAlertTagHelper.AlertType.Success, MessageId = MessageId.ChangeEmail2Success
                });
                return(JsonAjaxRedirectForModal(Url.Action(nameof(Index), nameof(Manage), new { Organization = _siteContext.UrlSegmentValue })));
            }
            catch (Exception e)
            {
                _logger.LogError($"Save user name '{userEntity.UserName}' failed", e);
                return(PartialView(ViewNames.Manage._EditEmail2ModalPartial, model));
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> EditEmail2()
        {
            var model = new EditEmail2ViewModel();
            var user  = await GetCurrentUserAsync();

            if (user == null)
            {
                _logger.LogError($"User id '{GetCurrentUserId()}' not found in repository");
                ModelState.AddModelError(string.Empty, _localizer["'{0}' not found", _metaData.GetDisplayName <EditEmail2ViewModel>(nameof(EditEmail2ViewModel.Email2))]);
                return(PartialView(ViewNames.Manage._EditEmail2ModalPartial, model));
            }

            model.Email2 = user.Email2;
            return(PartialView(ViewNames.Manage._EditEmail2ModalPartial, model));
        }