public async Task <IActionResult> EditPhoneNumber2(CancellationToken cancellationToken) { var model = new EditPhone2ViewModel(); var user = await _siteContext.AppDb.UserRepository.GetLoginUserByUserNameAsync(HttpContext.User.Identity.Name, cancellationToken); if (user == null) { _logger.LogError($"Username '{HttpContext.User.Identity.Name}' not found in repository"); TempData.Put <ManageMessage>(nameof(ManageMessage), new ManageMessage { AlertType = SiteAlertTagHelper.AlertType.Danger, MessageId = MessageId.ChangePhone2Failure }); ModelState.AddModelError(string.Empty, _localizer["'{0}' not found", _metaData.GetDisplayName <EditPhone2ViewModel>(nameof(EditPhone2ViewModel.PhoneNumber2))]); return(PartialView(ViewNames.Manage._EditPhone2ModalPartial, model)); } model.PhoneNumber2 = _phoneNumberService.Format(user.PhoneNumber2, _regionInfo.TwoLetterISORegionName); return(PartialView(ViewNames.Manage._EditPhone2ModalPartial, model)); }
public async Task <IActionResult> EditPhoneNumber2(EditPhone2ViewModel model, CancellationToken cancellationToken) { UserEntity userEntity = null; async Task <IActionResult> Save() { // Save in unformatted, international format userEntity.PhoneNumber2 = _phoneNumberService.FormatForStorage(model.PhoneNumber2, _regionInfo.TwoLetterISORegionName); try { await _siteContext.AppDb.GenericRepository.SaveEntityAsync(userEntity, false, false, cancellationToken); } catch (Exception e) { _logger.LogError($"Save user name '{userEntity.UserName}' failed", e); TempData.Put <ManageMessage>(nameof(ManageMessage), new ManageMessage { AlertType = SiteAlertTagHelper.AlertType.Danger, MessageId = MessageId.ChangePhone2Failure }); return(JsonAjaxRedirectForModal(Url.Action(nameof(Index), nameof(Manage), new { Organization = _siteContext.UrlSegmentValue }))); } TempData.Put <ManageMessage>(nameof(ManageMessage), new ManageMessage { AlertType = SiteAlertTagHelper.AlertType.Success, MessageId = MessageId.ChangePhone2Success }); return(JsonAjaxRedirectForModal(Url.Action(nameof(Index), nameof(Manage), new { Organization = _siteContext.UrlSegmentValue }))); } if (!ModelState.IsValid) { return(PartialView(ViewNames.Manage._EditPhone2ModalPartial, model)); } ModelState.Clear(); 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.ChangePhone2Failure }); return(JsonAjaxRedirectForModal(Url.Action(nameof(Index), nameof(Manage), new { Organization = _siteContext.UrlSegmentValue }))); } // Remove the phone number if (string.IsNullOrEmpty(model.PhoneNumber2)) { model.PhoneNumber2 = string.Empty; return(await Save()); } if (!string.IsNullOrWhiteSpace(model.PhoneNumber2)) { var validator = new TournamentManager.ModelValidators.PhoneNumberValidator(model.PhoneNumber2, (_phoneNumberService, _regionInfo)); await validator.CheckAsync(cancellationToken); validator.GetFailedFacts().ForEach(f => ModelState.AddModelError(nameof(model.PhoneNumber2), f.Message)); } if (!ModelState.IsValid) { return(PartialView(ViewNames.Manage._EditPhone2ModalPartial, model)); } if (_phoneNumberService.IsMatch(userEntity.PhoneNumber, model.PhoneNumber2, _regionInfo.TwoLetterISORegionName)) { _logger.LogInformation($"Primary and additional phone number are equal ('{userEntity.PhoneNumber}')."); ModelState.AddModelError(nameof(EditPhone2ViewModel.PhoneNumber2), _localizer["'{0}' and '{1}' must be different", _metaData.GetDisplayName <EditPhone2ViewModel>(nameof(EditPhone2ViewModel.PhoneNumber2)), _metaData.GetDisplayName <EditPhoneViewModel>(nameof(EditPhoneViewModel.PhoneNumber))]); return(PartialView(ViewNames.Manage._EditPhone2ModalPartial, model)); } return(await Save()); }