Exemplo n.º 1
0
        public async Task <IActionResult> NextResults(string searchString, int?pageIndex)
        {
            var user = await GetUser();

            if (user is null)
            {
                return(RedirectToAction("Index", "Home"));
            }
            else if (user.OrganisationId != null && user.Status == ContactStatus.Live)
            {
                return(RedirectToAction("Index", "Dashboard"));
            }

            var viewModel = new OrganisationSearchViewModel
            {
                SearchString = searchString
            };

            if (string.IsNullOrEmpty(viewModel.SearchString) || viewModel.SearchString.Length < 2)
            {
                ModelState.AddModelError(nameof(viewModel.SearchString), "Enter a valid search string");
                TempData["ShowErrors"] = true;
                return(View(nameof(Results), viewModel));
            }

            viewModel.Organisations = await _organisationsApiClient.SearchForOrganisations(viewModel.SearchString, PageSize, SanitizePageIndex(pageIndex));

            return(View(nameof(Results), viewModel));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Confirm(OrganisationSearchViewModel viewModel)
        {
            var user = await GetUser();

            if (user is null)
            {
                return(RedirectToAction("Index", "Home"));
            }
            else if (user.OrganisationId != null && user.Status == ContactStatus.Live)
            {
                return(RedirectToAction("Index", "Dashboard"));
            }
            else if (string.IsNullOrEmpty(viewModel.Name) || viewModel.SearchString.Length < 2)
            {
                ModelState.AddModelError(nameof(viewModel.Name), "Enter a valid search string");
                TempData["ShowErrors"] = true;
                return(RedirectToAction(nameof(Index)));
            }
            else if (string.IsNullOrEmpty(viewModel.OrganisationType))
            {
                ModelState.AddModelError(nameof(viewModel.OrganisationType), "Select an organisation type");
                TempData["ShowErrors"]      = true;
                viewModel.OrganisationTypes = await _organisationsApiClient.GetOrganisationTypes();

                return(View("Type", viewModel));
            }

            if (!string.IsNullOrEmpty(viewModel.OrganisationType))
            {
                viewModel.OrganisationTypes = await _organisationsApiClient.GetOrganisationTypes();

                viewModel.OrganisationTypeId = viewModel.OrganisationTypes.Any()? viewModel.OrganisationTypes
                                               .First(x => viewModel.OrganisationType != null && x.Type == viewModel.OrganisationType).Id:0;
            }


            var organisationSearchResult = await GetOrganisation(viewModel.SearchString, viewModel.Name,
                                                                 viewModel.Ukprn, viewModel.OrganisationType, viewModel.Postcode, viewModel.PageIndex);

            if (organisationSearchResult != null)
            {
                if (organisationSearchResult.CompanyNumber != null)
                {
                    var isActivelyTrading = await _organisationsApiClient.IsCompanyActivelyTrading(organisationSearchResult.CompanyNumber);

                    if (!isActivelyTrading)
                    {
                        return(View("~/Views/OrganisationSearch/CompanyNotActive.cshtml", viewModel));
                    }
                }

                viewModel.Organisations = new PaginatedList <OrganisationSearchResult>(new List <OrganisationSearchResult> {
                    organisationSearchResult
                }, 1, 1, 1);
                viewModel.OrganisationTypes = await _organisationsApiClient.GetOrganisationTypes();
            }
            _sessionService.Set("OrganisationSearchViewModel", viewModel);
            return(View(viewModel));
        }
Exemplo n.º 3
0
        public async Task <IActionResult> Index(Guid requestId, string search)
        {
            var tempSupportRequest = await _mediator.Send(new GetTempSupportRequest(requestId));

            var vm = new OrganisationSearchViewModel(tempSupportRequest, search);

            return(View("~/Views/RequestSupport/OrganisationSearch.cshtml", vm));
        }
        public async Task <IActionResult> Search(OrganisationSearchViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("~/Views/Roatp/Index.cshtml", model));
            }

            return(await RefreshSearchResults(model.SearchTerm));
        }
Exemplo n.º 5
0
        public async Task <IActionResult> Search(Guid requestId, OrganisationSearchViewModel viewmodel)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction("Index", "OrganisationSearch", new { requestId = requestId }));
            }

            return(RedirectToAction("Index", "OrganisationResults", new { requestId = requestId, search = viewmodel.Search }));
        }
Exemplo n.º 6
0
        public async Task <IActionResult> OrganisationChosen(OrganisationSearchViewModel viewModel)
        {
            var user = await GetUser();

            if (user is null)
            {
                return(RedirectToAction("Index", "Home"));
            }
            else if (user.OrganisationId != null && user.Status == ContactStatus.Live)
            {
                return(RedirectToAction("Index", "Dashboard"));
            }

            var organisationSearchResult = await GetOrganisation(viewModel.SearchString, viewModel.Name,
                                                                 viewModel.Ukprn, viewModel.OrganisationType, viewModel.Postcode, viewModel.PageIndex);

            if (organisationSearchResult != null)
            {
                if (organisationSearchResult.OrganisationReferenceType == "RoEPAO")
                {
                    return(RequestAccess(viewModel, organisationSearchResult));
                }
                viewModel.Organisations = new PaginatedList <OrganisationSearchResult>(new List <OrganisationSearchResult> {
                    organisationSearchResult
                }, 1, 1, PageSize);
                viewModel.OrganisationTypes = await _organisationsApiClient.GetOrganisationTypes();

                // ON-1818 do not pre-select OrganisationType
                // NOTE: ModelState overrides viewModel
                viewModel.OrganisationType = null;
                var orgTypeModelState = ModelState[nameof(viewModel.OrganisationType)];
                if (orgTypeModelState != null)
                {
                    orgTypeModelState.RawValue = viewModel.OrganisationType;
                    orgTypeModelState.Errors.Clear();
                }

                return(View("Type", viewModel));
            }
            return(View(nameof(Confirm), viewModel));
        }
Exemplo n.º 7
0
        private ViewResult RequestAccess(OrganisationSearchViewModel viewModel, OrganisationSearchResult organisationSearchResult)
        {
            var newViewModel = Mapper.Map <RequestAccessOrgSearchViewModel>(viewModel);
            var addressArray = new[] { organisationSearchResult.Address?.Address1, organisationSearchResult.Address?.City, organisationSearchResult.Address.Postcode };

            newViewModel.Address            = string.Join(", ", addressArray.Where(s => !string.IsNullOrEmpty(s)));
            newViewModel.RoEPAOApproved     = organisationSearchResult.RoEPAOApproved;
            newViewModel.OrganisationIsLive = organisationSearchResult.OrganisationIsLive;

            if (!string.IsNullOrEmpty(organisationSearchResult.CompanyNumber))
            {
                newViewModel.CompanyOrCharityDisplayText = "Company number";
                newViewModel.CompanyNumber = organisationSearchResult.CompanyNumber;
            }
            else if (!string.IsNullOrEmpty(organisationSearchResult.CharityNumber))
            {
                newViewModel.CompanyOrCharityDisplayText = "Charity number";
                newViewModel.CompanyNumber = organisationSearchResult.CharityNumber;
            }
            return(View(nameof(NoAccess), newViewModel));
        }
Exemplo n.º 8
0
        public async Task <IActionResult> CreateOrganisation(AddOrganisationViewModel model)
        {
            model.LegalName   = TextSanitiser.SanitiseText(model?.LegalName);
            model.TradingName = TextSanitiser.SanitiseText(model?.TradingName);

            var request = CreateAddOrganisationRequestFromModel(model);

            var success = await _apiClient.CreateOrganisation(request);

            if (!success)
            {
                return(RedirectToAction("Error", "Home"));
            }

            string bannerMessage = string.Format(RoatpConfirmationMessages.AddOrganisationConfirmation,
                                                 model.LegalName.ToUpper());

            var bannerModel = new OrganisationSearchViewModel {
                BannerMessage = bannerMessage
            };

            _sessionService.ClearAddOrganisationDetails();
            return(View("~/Views/Roatp/Index.cshtml", bannerModel));
        }
Exemplo n.º 9
0
        public async Task <IActionResult> DealingWithRequest(OrganisationSearchViewModel viewModel)
        {
            var user = await GetUser();

            if (user is null)
            {
                return(RedirectToAction("Index", "Home"));
            }
            else if (user.OrganisationId != null && user.Status == ContactStatus.Live)
            {
                return(RedirectToAction("Index", "Dashboard"));
            }

            var sessionString = _sessionService.Get("OrganisationSearchViewModel");

            if (sessionString != null)
            {
                _sessionService.Remove("OrganisationSearchViewModel");
            }

            var organisationSearchResult = await GetOrganisation(viewModel.SearchString, viewModel.Name,
                                                                 viewModel.Ukprn, viewModel.OrganisationType, viewModel.Postcode, viewModel.PageIndex);

            if (organisationSearchResult != null)
            {
                if (organisationSearchResult.CompanyNumber != null)
                {
                    var isActivelyTrading = await _organisationsApiClient.IsCompanyActivelyTrading(organisationSearchResult.CompanyNumber);

                    if (!isActivelyTrading)
                    {
                        return(View("~/Views/OrganisationSearch/CompanyNotActive.cshtml", viewModel));
                    }
                }

                if (organisationSearchResult.OrganisationReferenceType == "RoEPAO")
                {
                    if (organisationSearchResult.OrganisationIsLive)
                    {
                        //Update assessor organisation status
                        await UpdateOrganisationStatusAndInvite(organisationSearchResult, user);
                    }
                }
                else
                {
                    var request = await CreateEpaOrganisationRequest(organisationSearchResult);

                    request.OrganisationTypeId = viewModel.OrganisationTypeId;
                    request.Status             = OrganisationStatus.Applying;

                    var epaoId = await _organisationsApiClient.CreateEpaOrganisation(request);

                    _logger.LogInformation($"Organisation with Organisation Id {epaoId.Details} created.");

                    var newOrg = await _organisationsApiClient.GetEpaOrganisation(epaoId.Details);

                    await _contactsApiClient.UpdateOrgAndStatus(new UpdateContactWithOrgAndStausRequest(user.Id.ToString(),
                                                                                                        newOrg.Id.ToString(), newOrg.OrganisationData?.EndPointAssessmentOrgId, ContactStatus.Live));

                    _logger.LogInformation($"Contact with display name {user.DisplayName} is associated with organisation {epaoId.Details}.");

                    _sessionService.Set("OrganisationName", newOrg.Name);

                    return(RedirectToAction("Applications", "Application"));
                }
            }
            return(View(viewModel));
        }
Exemplo n.º 10
0
 public IActionResult NoAccess(OrganisationSearchViewModel viewModel)
 {
     return(View(viewModel));
 }