public async Task <ActionResult> Invite(InviteTeamMemberViewModel model)
        {
            var response = await _employerTeamOrchestrator.InviteTeamMember(model, OwinWrapper.GetClaimValue(@"sub"));

            if (response.Status == HttpStatusCode.OK)
            {
                var flashMessage = new FlashMessageViewModel
                {
                    HiddenFlashMessageInformation = "page-invite-team-member-sent",
                    Severity = FlashMessageSeverityLevel.Success,
                    Headline = "Invitation sent",
                    Message  = $"You've sent an invitation to <strong>{model.Email}</strong>"
                };
                AddFlashMessageToCookie(flashMessage);

                return(RedirectToAction("ViewTeam"));
            }


            model.ErrorDictionary = response.FlashMessage.ErrorMessages;
            var errorResponse = new OrchestratorResponse <InviteTeamMemberViewModel>
            {
                Data         = model,
                FlashMessage = response.FlashMessage,
            };

            return(View(errorResponse));
        }
Пример #2
0
        public async Task <ActionResult> Create(InviteTeamMemberViewModel model)
        {
            if (string.IsNullOrEmpty(OwinWrapper.GetClaimValue("sub")))
            {
                return(RedirectToAction("Index", "Home"));
            }

            await _invitationOrchestrator.CreateInvitation(model, OwinWrapper.GetClaimValue("sub"));

            return(RedirectToAction("Index", "Home"));
        }
        public async Task <ActionResult> Create(InviteTeamMemberViewModel model)
        {
            if (string.IsNullOrEmpty(OwinWrapper.GetClaimValue(ControllerConstants.UserRefClaimKeyName)))
            {
                return(RedirectToAction(ControllerConstants.IndexActionName, ControllerConstants.HomeControllerName));
            }

            await _invitationOrchestrator.CreateInvitation(model, OwinWrapper.GetClaimValue(ControllerConstants.UserRefClaimKeyName));

            return(RedirectToAction(ControllerConstants.IndexActionName, ControllerConstants.HomeControllerName));
        }
 public async Task CreateInvitation(InviteTeamMemberViewModel model, string externalUserId)
 {
     try
     {
         await _mediator.SendAsync(new CreateInvitationCommand
         {
             HashedAccountId = model.HashedAccountId,
             ExternalUserId  = externalUserId,
             Name            = model.Name,
             Email           = model.Email,
             RoleId          = model.Role
         });
     }
     catch (InvalidRequestException ex)
     {
         _logger.Info(ex);
     }
 }
Пример #5
0
        public async Task ThenIShouldGetBackAnUpdatedTeamMembersListWithTheCorrectSuccessMessage()
        {
            //Arrange
            var request = new InviteTeamMemberViewModel()
            {
                Email = "*****@*****.**"
            };
            var response = new GetAccountTeamMembersResponse();

            _mediator.Setup(x => x.SendAsync(It.IsAny <CreateInvitationCommand>())).ReturnsAsync(Unit.Value);
            _mediator.Setup(x => x.SendAsync(It.IsAny <GetAccountTeamMembersQuery>())).ReturnsAsync(response);

            //Act
            var result = await _orchestrator.InviteTeamMember(request, "37648");

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(HttpStatusCode.OK, result.Status);
        }
Пример #6
0
        public async Task <OrchestratorResponse <EmployerTeamMembersViewModel> > InviteTeamMember(
            InviteTeamMemberViewModel model, string externalUserId)
        {
            try
            {
                await _mediator.SendAsync(new CreateInvitationCommand
                {
                    ExternalUserId  = externalUserId,
                    HashedAccountId = model.HashedAccountId,
                    Name            = model.Name,
                    Email           = model.Email,
                    RoleId          = model.Role
                });
            }
            catch (InvalidRequestException e)
            {
                return(new OrchestratorResponse <EmployerTeamMembersViewModel>
                {
                    Status = HttpStatusCode.BadRequest,
                    FlashMessage = new FlashMessageViewModel
                    {
                        Headline = "Errors to fix",
                        Message = "Check the following details:",
                        ErrorMessages = e.ErrorMessages,
                        Severity = FlashMessageSeverityLevel.Error
                    },
                    Exception = e
                });
            }
            catch (UnauthorizedAccessException ex)
            {
                return(new OrchestratorResponse <EmployerTeamMembersViewModel>
                {
                    Status = HttpStatusCode.Unauthorized,
                    Exception = ex
                });
            }



            return(new OrchestratorResponse <EmployerTeamMembersViewModel>());
        }
Пример #7
0
        public async Task ThenIShouldGetBackAnUnauthorisedRequestIfOneIsRaiseForInvitingTeamMembers()
        {
            //Arrange
            var request = new InviteTeamMemberViewModel
            {
                Email = "*****@*****.**"
            };

            _mediator.Setup(x => x.SendAsync(It.IsAny <CreateInvitationCommand>()))
            .ThrowsAsync(new UnauthorizedAccessException());

            _mediator.Setup(x => x.SendAsync(It.IsAny <GetAccountTeamMembersQuery>()));

            //Act
            var result = await _orchestrator.InviteTeamMember(request, "37648");

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(HttpStatusCode.Unauthorized, result.Status);
            _mediator.Verify(x => x.SendAsync(It.IsAny <GetAccountTeamMembersQuery>()), Times.Never);
        }