public async Task <ActionResult> Index(YourOrganisationsViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(await ShowOrganisations());
            }

            return(RedirectToAction("ChooseActivity", "Home", new { area = "Scheme", pcsId = model.SelectedOrganisationId.Value }));
        }
        public async Task<ActionResult> Index(YourOrganisationsViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return await ShowOrganisations();
            }

            return RedirectToAction("ChooseActivity", "Home", new { area = "Scheme", pcsId = model.SelectedOrganisationId.Value });
        }
        private async Task <ActionResult> ShowOrganisations()
        {
            IEnumerable <OrganisationUserData> organisations = await GetOrganisations();

            List <OrganisationUserData> accessibleOrganisations = organisations
                                                                  .Where(o => o.UserStatus == UserStatus.Active)
                                                                  .ToList();

            List <OrganisationUserData> inaccessibleOrganisations = organisations
                                                                    .Except(accessibleOrganisations)
                                                                    .ToList();

            if (accessibleOrganisations.Count == 1 && inaccessibleOrganisations.Count == 0)
            {
                Guid organisationId = accessibleOrganisations[0].OrganisationId;
                return(RedirectToAction("ChooseActivity", "Home", new { area = "Scheme", pcsId = organisationId }));
            }

            if (accessibleOrganisations.Count > 0)
            {
                YourOrganisationsViewModel model = new YourOrganisationsViewModel();
                model.Organisations = accessibleOrganisations;

                ViewBag.InaccessibleOrganisations = inaccessibleOrganisations.Where(o => o.UserStatus == UserStatus.Pending);
                return(View("YourOrganisations", model));
            }

            if (inaccessibleOrganisations.Count > 0)
            {
                PendingOrganisationsViewModel model = new PendingOrganisationsViewModel();

                model.InaccessibleOrganisations = FilterOutDuplicateOrganisations(inaccessibleOrganisations);

                return(View("PendingOrganisations", model));
            }

            return(RedirectToAction("Search", "OrganisationRegistration"));
        }
        private async Task<ActionResult> ShowOrganisations()
        {
            IEnumerable<OrganisationUserData> organisations = await GetOrganisations();

            List<OrganisationUserData> accessibleOrganisations = organisations
                .Where(o => o.UserStatus == UserStatus.Active)
                .ToList();

            List<OrganisationUserData> inaccessibleOrganisations = organisations
                .Except(accessibleOrganisations)
                .ToList();

            if (accessibleOrganisations.Count == 1 && inaccessibleOrganisations.Count == 0)
            {
                Guid organisationId = accessibleOrganisations[0].OrganisationId;
                return RedirectToAction("ChooseActivity", "Home", new { area = "Scheme", pcsId = organisationId });
            }

            if (accessibleOrganisations.Count > 0)
            {
                YourOrganisationsViewModel model = new YourOrganisationsViewModel();
                model.Organisations = accessibleOrganisations;

                ViewBag.InaccessibleOrganisations = inaccessibleOrganisations.Where(o => o.UserStatus == UserStatus.Pending);
                return View("YourOrganisations", model);
            }

            if (inaccessibleOrganisations.Count > 0)
            {
                PendingOrganisationsViewModel model = new PendingOrganisationsViewModel();

                model.InaccessibleOrganisations = FilterOutDuplicateOrganisations(inaccessibleOrganisations);

                return View("PendingOrganisations", model);
            }

            return RedirectToAction("Search", "OrganisationRegistration");
        }
Example #5
0
        public async void GetIndex_OneActiveOrg_And_OneInactiveOrg_ShowsYourOrganisationsView()
        {
            // Arrange
            Guid organisationId1 = new Guid("433DB128-12A1-44FB-B26A-8128F8E36598");
            Guid organisationId2 = new Guid("90F0D10D-BE4E-462C-A214-30B94C461F8B");

            IWeeeClient weeeClient = A.Fake <IWeeeClient>();

            A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <GetUserOrganisationsByStatus> ._))
            .Returns(new List <OrganisationUserData>
            {
                new OrganisationUserData
                {
                    OrganisationId = organisationId1,
                    UserStatus     = UserStatus.Active,
                    Organisation   = new OrganisationData
                    {
                        OrganisationName   = "Organisation Name 1",
                        OrganisationStatus = OrganisationStatus.Complete,
                    }
                },
                new OrganisationUserData
                {
                    OrganisationId = organisationId2,
                    UserStatus     = UserStatus.Pending,
                    Organisation   = new OrganisationData
                    {
                        OrganisationName   = "Organisation Name 2",
                        OrganisationStatus = OrganisationStatus.Complete,
                    }
                }
            });

            OrganisationController controller = new OrganisationController(() => weeeClient);

            // Act
            ActionResult result = await controller.Index();

            // Assert
            Assert.IsAssignableFrom <ViewResult>(result);

            ViewResult viewResult = result as ViewResult;

            Assert.Equal("YourOrganisations", viewResult.ViewName);

            Assert.IsAssignableFrom <YourOrganisationsViewModel>(viewResult.Model);

            YourOrganisationsViewModel model = viewResult.Model as YourOrganisationsViewModel;

            Assert.Equal(1, model.Organisations.Count);

            Assert.Equal(organisationId1, model.Organisations[0].OrganisationId);
            Assert.Equal("Organisation Name 1", model.Organisations[0].Organisation.OrganisationName);

            Assert.IsAssignableFrom <IEnumerable <OrganisationUserData> >(viewResult.ViewBag.InaccessibleOrganisations);

            IEnumerable <OrganisationUserData> inaccessibleOrganisations =
                viewResult.ViewBag.InaccessibleOrganisations as IEnumerable <OrganisationUserData>;

            Assert.Equal(1, inaccessibleOrganisations.Count());

            Assert.Equal(organisationId2, inaccessibleOrganisations.First().OrganisationId);
            Assert.Equal("Organisation Name 2", inaccessibleOrganisations.First().Organisation.OrganisationName);
        }