public async Task <ActionResult> RenameAccount(RenameEmployerAccountViewModel vm)
        {
            var userIdClaim = OwinWrapper.GetClaimValue(ControllerConstants.UserRefClaimKeyName);
            var response    = await _employerAccountOrchestrator.RenameEmployerAccount(vm, userIdClaim);

            if (response.Status == HttpStatusCode.OK)
            {
                var flashmessage = new FlashMessageViewModel
                {
                    Headline = "Account renamed",
                    Message  = "You successfully updated the account name",
                    Severity = FlashMessageSeverityLevel.Success
                };

                AddFlashMessageToCookie(flashmessage);

                return(RedirectToAction(ControllerConstants.IndexActionName, ControllerConstants.EmployerTeamControllerName));
            }

            var errorResponse = new OrchestratorResponse <RenameEmployerAccountViewModel>();

            if (response.Status == HttpStatusCode.BadRequest)
            {
                vm.ErrorDictionary = response.FlashMessage.ErrorMessages;
            }

            errorResponse.Data         = vm;
            errorResponse.FlashMessage = response.FlashMessage;
            errorResponse.Status       = response.Status;

            return(View(errorResponse));
        }
        public async Task ThenTheAccountIsRenamed()
        {
            //Arrange
            var model = new RenameEmployerAccountViewModel
            {
                CurrentName = "Test Account",
                NewName     = "New Account Name",
                HashedId    = "ABC123"
            };

            //Act
            await _employerAccountController.RenameAccount(model);

            //Assert
            _orchestrator.Verify(x => x.RenameEmployerAccount(It.Is <RenameEmployerAccountViewModel>(r =>
                                                                                                     r.CurrentName == "Test Account" &&
                                                                                                     r.NewName == "New Account Name"
                                                                                                     ), It.IsAny <string>()));
        }
コード例 #3
0
        public virtual async Task <OrchestratorResponse <RenameEmployerAccountViewModel> > RenameEmployerAccount(RenameEmployerAccountViewModel model, string userId)
        {
            var response = new OrchestratorResponse <RenameEmployerAccountViewModel> {
                Data = model
            };

            var userRoleResponse = await GetUserAccountRole(model.HashedId, userId);

            if (!userRoleResponse.UserRole.Equals(Role.Owner))
            {
                return(new OrchestratorResponse <RenameEmployerAccountViewModel>
                {
                    Status = HttpStatusCode.Unauthorized
                });
            }

            try
            {
                await _mediator.SendAsync(new RenameEmployerAccountCommand
                {
                    HashedAccountId = model.HashedId,
                    ExternalUserId  = userId,
                    NewName         = (model.NewName ?? string.Empty).Trim()
                });

                model.CurrentName = model.NewName;
                model.NewName     = string.Empty;
                response.Data     = model;
                response.Status   = HttpStatusCode.OK;
            }
            catch (InvalidRequestException ex)
            {
                response.Status = HttpStatusCode.BadRequest;
                response.Data.ErrorDictionary = ex.ErrorMessages;
                response.Exception            = ex;
                response.FlashMessage         = new FlashMessageViewModel
                {
                    Headline      = "Errors to fix",
                    Message       = "Check the following details:",
                    ErrorMessages = ex.ErrorMessages,
                    Severity      = FlashMessageSeverityLevel.Error
                };
            }

            return(response);
        }