Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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());
        }