public async Task <ActionResult> Confirm(
            string hashedAccountId, string name, string code, string address, DateTime?incorporated,
            string legalEntityStatus, OrganisationType organisationType, short?publicSectorDataSource, string sector)
        {
            var request = new CreateNewLegalEntityViewModel
            {
                HashedAccountId        = hashedAccountId,
                Name                   = name,
                Code                   = code,
                Address                = address,
                IncorporatedDate       = incorporated,
                ExternalUserId         = OwinWrapper.GetClaimValue(@"sub"),
                LegalEntityStatus      = string.IsNullOrWhiteSpace(legalEntityStatus) ? null : legalEntityStatus,
                Source                 = (short)organisationType,
                PublicSectorDataSource = publicSectorDataSource,
                Sector                 = sector
            };

            var response = await _orchestrator.CreateLegalEntity(request);

            var flashMessage = new FlashMessageViewModel
            {
                HiddenFlashMessageInformation = "page-organisations-added",
                Headline = $"{response.Data.EmployerAgreement.LegalEntityName} has been added",
                Severity = FlashMessageSeverityLevel.Success
            };

            AddFlashMessageToCookie(flashMessage);

            return(RedirectToAction("Index", "EmployerAgreement", new { hashedAccountId }));
        }
Пример #2
0
        public virtual async Task <OrchestratorResponse <EmployerAgreementViewModel> > CreateLegalEntity(
            CreateNewLegalEntityViewModel request)
        {
            var createLegalEntityResponse = await _mediator.SendAsync(new CreateLegalEntityCommand
            {
                HashedAccountId = request.HashedAccountId,
                LegalEntity     = new LegalEntity
                {
                    Name = request.Name,
                    Code = request.Code,
                    RegisteredAddress   = request.Address,
                    DateOfIncorporation = request.IncorporatedDate,
                    CompanyStatus       = request.LegalEntityStatus,
                    Source = request.Source,
                    PublicSectorDataSource = request.PublicSectorDataSource,
                    Sector = request.Sector
                },
                ExternalUserId = request.ExternalUserId
            });

            return(new OrchestratorResponse <EmployerAgreementViewModel>
            {
                Data = new EmployerAgreementViewModel
                {
                    EmployerAgreement = createLegalEntityResponse.AgreementView
                },
                Status = HttpStatusCode.OK
            });
        }
Пример #3
0
        public async Task <ActionResult> Confirm(
            string hashedAccountId, string name, string code, string address, DateTime?incorporated,
            string legalEntityStatus, OrganisationType organisationType, byte?publicSectorDataSource, string sector, bool newSearch)
        {
            var request = new CreateNewLegalEntityViewModel
            {
                HashedAccountId        = hashedAccountId,
                Name                   = name,
                Code                   = code,
                Address                = address,
                IncorporatedDate       = incorporated,
                ExternalUserId         = OwinWrapper.GetClaimValue(ControllerConstants.UserRefClaimKeyName),
                LegalEntityStatus      = string.IsNullOrWhiteSpace(legalEntityStatus) ? null : legalEntityStatus,
                Source                 = organisationType,
                PublicSectorDataSource = publicSectorDataSource,
                Sector                 = sector
            };

            var response = await _orchestrator.CreateLegalEntity(request);

            var flashMessage = new FlashMessageViewModel
            {
                HiddenFlashMessageInformation = "page-organisations-added",
                Headline = $"{response.Data.EmployerAgreement.LegalEntityName} has been added",
                Severity = FlashMessageSeverityLevel.Success
            };

            AddFlashMessageToCookie(flashMessage);
            if (newSearch)
            {
                return(RedirectToAction(ControllerConstants.OrganisationAddedNextStepsSearchActionName,
                                        new
                {
                    hashedAccountId,
                    organisationName = name,
                    hashedAgreementId = response.Data.EmployerAgreement.HashedAgreementId
                }));
            }

            return(RedirectToAction(ControllerConstants.OrganisationAddedNextStepsActionName,
                                    new
            {
                hashedAccountId,
                organisationName = name,
                hashedAgreementId = response.Data.EmployerAgreement.HashedAgreementId
            }));
        }
        public async Task ThenTheLegalEntityShouldBeCreated()
        {
            //Assign
            var request = new CreateNewLegalEntityViewModel
            {
                HashedAccountId   = "1",
                Name              = "Test Corp",
                Code              = "SD665734",
                Source            = OrganisationType.CompaniesHouse,
                Address           = "1, Test Street",
                IncorporatedDate  = DateTime.Now.AddYears(-20),
                ExternalUserId    = "2",
                LegalEntityStatus = "active"
            };

            const long legalEntityId     = 5;
            const long agreementEntityId = 6;

            _mediator.Setup(x => x.SendAsync(It.IsAny <CreateLegalEntityCommand>()))
            .ReturnsAsync(new CreateLegalEntityCommandResponse
            {
                AgreementView = new EmployerAgreementView
                {
                    Id                 = agreementEntityId,
                    LegalEntityId      = legalEntityId,
                    LegalEntityName    = request.Name,
                    LegalEntityCode    = request.Code,
                    LegalEntitySource  = request.Source,
                    LegalEntityAddress = request.Address,
                    LegalEntityStatus  = request.LegalEntityStatus,
                    Status             = EmployerAgreementStatus.Pending
                }
            });

            //Act
            await _orchestrator.CreateLegalEntity(request);

            //Assert
            _mediator.Verify(x => x.SendAsync(It.Is <CreateLegalEntityCommand>(command =>
                                                                               command.Name.Equals(request.Name) &&
                                                                               command.Address.Equals(request.Address) &&
                                                                               command.Code.Equals(request.Code) &&
                                                                               command.Source.Equals(request.Source) &&
                                                                               command.DateOfIncorporation.Equals(request.IncorporatedDate) &&
                                                                               command.Status.Equals(request.LegalEntityStatus))));
        }
        public async Task ThenTheLegalEntityShouldNotBeCreated()
        {
            //Assign
            var request = new CreateNewLegalEntityViewModel
            {
                HashedAccountId   = "1",
                Name              = "Test Corp",
                Code              = "SD665734",
                Source            = OrganisationType.CompaniesHouse,
                Address           = "1, Test Street",
                IncorporatedDate  = DateTime.Now.AddYears(-20),
                ExternalUserId    = "3", // ??????
                LegalEntityStatus = "active"
            };

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

            //Act & Assert
            Assert.ThrowsAsync <UnauthorizedAccessException>(async() => await _orchestrator.CreateLegalEntity(request));
        }
Пример #6
0
        public virtual async Task <OrchestratorResponse <EmployerAgreementViewModel> > CreateLegalEntity(CreateNewLegalEntityViewModel request)
        {
            try
            {
                var result = await _mediator.SendAsync(new CreateLegalEntityCommand
                {
                    HashedAccountId        = request.HashedAccountId,
                    Code                   = request.Code,
                    DateOfIncorporation    = request.IncorporatedDate,
                    Status                 = request.LegalEntityStatus,
                    Source                 = request.Source,
                    PublicSectorDataSource = request.PublicSectorDataSource,
                    Sector                 = request.Sector,
                    Name                   = request.Name,
                    Address                = request.Address,
                    ExternalUserId         = request.ExternalUserId
                });

                return(new OrchestratorResponse <EmployerAgreementViewModel>
                {
                    Data = new EmployerAgreementViewModel
                    {
                        EmployerAgreement = result.AgreementView
                    },
                    Status = HttpStatusCode.OK
                });
            }
            catch (UnauthorizedAccessException e)
            {
                return(new OrchestratorResponse <EmployerAgreementViewModel>
                {
                    Status = HttpStatusCode.Unauthorized,
                    Exception = e,
                });
            }
            catch (InvalidRequestException e)
            {
                return(new OrchestratorResponse <EmployerAgreementViewModel>
                {
                    Status = HttpStatusCode.BadRequest,
                    Exception = e,
                });
            }
        }