public async Task <ActionResult> RegisteredCompanyDetails(RegisteredCompanyDetailsViewModel model)
        {
            SetBreadcrumb(InternalUserActivity.CreateOrganisation);

            if (!ModelState.IsValid)
            {
                var countries = await GetCountries();

                model.Address.Countries = countries;

                return(View(model));
            }

            using (var client = apiClient())
            {
                var request = new CreateOrganisationAdmin()
                {
                    Address            = model.Address,
                    BusinessName       = model.CompanyName,
                    OrganisationType   = model.OrganisationType.GetValueFromDisplayName <OrganisationType>(),
                    RegistrationNumber = model.CompaniesRegistrationNumber,
                    TradingName        = model.BusinessTradingName
                };

                var id = await client.SendAsync(User.GetAccessToken(), request);

                await cache.InvalidateOrganisationSearch();

                return(RedirectToAddAction(id, model.EntityType));
            }
        }
        public async Task HandleAsync_OrganisationTypeNotSet_ThrowsNotImplementedException()
        {
            CreateOrganisationAdmin request = new CreateOrganisationAdmin()
            {
                BusinessName = "Business",
                Address      = A.Dummy <AddressData>()
            };

            Guid organisationId = Guid.NewGuid();

            CreateOrganisationAdminHandler handler = new CreateOrganisationAdminHandler(authorization, this.dataAccess, this.context);

            Func <Task> action = async() => await handler.HandleAsync(request);

            await Assert.ThrowsAsync <NotImplementedException>(action);
        }
        public async Task HandleAsync_Partnership_CreatesOrganisation()
        {
            CreateOrganisationAdmin request = new CreateOrganisationAdmin()
            {
                BusinessName     = "Business",
                Address          = CreateAddress(),
                OrganisationType = Core.Organisations.OrganisationType.Partnership
            };

            Guid organisationId = Guid.NewGuid();

            CreateOrganisationAdminHandler handler = new CreateOrganisationAdminHandler(authorization, this.dataAccess, this.context);

            A.CallTo(() => dataAccess.Add <Organisation>(A <Organisation> .That.Matches(p => p.OrganisationName == request.BusinessName))).Returns(organisationId);

            Guid result = await handler.HandleAsync(request);

            A.CallTo(() => dataAccess.Add <Organisation>(A <Organisation> .That.Matches(p => p.OrganisationName == request.BusinessName))).MustHaveHappened(Repeated.Exactly.Once);
            A.CallTo(() => dataAccess.Add <Address>(A <Address> .That.Matches(p => p.Address1 == request.Address.Address1))).MustHaveHappened(Repeated.Exactly.Once);

            result.Should().Be(organisationId);
        }