Ejemplo n.º 1
0
 private void PopulateSelectList(EstablishmentSearchPayload payload)
 {
     payload.Select.Append(nameof(EM.Name))
     .Append(nameof(EM.Address_Line1))
     .Append(nameof(EM.Address_Line2))
     .Append(nameof(EM.Address_Line3))
     .Append(nameof(EM.Address_Locality))
     .Append(nameof(EM.Address_PostCode))
     .Append(nameof(EM.Address_CountryId))
     .Append(nameof(EM.Address_CountyId))
     .Append(nameof(EM.Address_CityOrTown))
     .Append(nameof(EM.Location))
     .Append(nameof(EM.EducationPhaseId))
     .Append(nameof(EM.TypeId))
     .Append(nameof(EM.Urn))
     .Append(nameof(EM.LocalAuthorityId))
     .Append(nameof(EM.EstablishmentNumber))
     .Append(nameof(EM.StatusId));
 }
Ejemplo n.º 2
0
        private async Task <Tuple <int, string> > TryGetEstablishment(ChangeHistoryViewModel viewModel)
        {
            if (viewModel.TextSearchType == ChangeHistoryViewModel.eTextSearchType.URN)
            {
                var urn = Int32.Parse(viewModel.TextSearchModel.Text);
                var establishmentName = (await _establishmentReadService.GetEstablishmentNameAsync(urn, User)) ?? "";
                return(new Tuple <int, string>(urn, establishmentName));
            }
            else
            {
                int?   urn  = null;
                string name = null;
                if (viewModel.TextSearchModel.AutoSuggestValueAsInt.HasValue)
                {
                    urn  = viewModel.TextSearchModel.AutoSuggestValueAsInt;
                    name = (await _establishmentReadService.GetEstablishmentNameAsync(urn.Value, User)) ?? "";
                }
                else
                {
                    var payload = new EstablishmentSearchPayload(viewModel.Skip, viewModel.Take);
                    var filters = payload.Filters;

                    if (viewModel.SearchType == eSearchType.Text || viewModel.SearchType == eSearchType.EstablishmentAll)
                    {
                        if (viewModel.TextSearchType == ChangeHistoryViewModel.eTextSearchType.UKPRN)
                        {
                            filters.UKPRN = viewModel.TextSearchModel.Text;
                        }
                        else if (viewModel.TextSearchType == ChangeHistoryViewModel.eTextSearchType.LAESTAB)
                        {
                            var laestab          = LAESTAB.TryParse(viewModel.TextSearchModel.Text).Value;
                            var localAuthorityId = (await _lookupService.LocalAuthorityGetAllAsync()).FirstOrDefault(x => x.Code == laestab.LocalAuthorityCode)?.Id;
                            if (localAuthorityId.HasValue)
                            {
                                filters.LocalAuthorityIds = new int[] { localAuthorityId.Value }
                            }
                            ;
                            filters.EstablishmentNumber = laestab.EstablishmentNumber;
                        }
                        else if (viewModel.TextSearchType == ChangeHistoryViewModel.eTextSearchType.EstablishmentName)
                        {
                            payload.Text = viewModel.TextSearchModel.Text;
                        }
                        else
                        {
                            return(null);
                        }
                    }

                    var results = await _establishmentReadService.SearchAsync(payload, User);

                    if (results != null && results.Items.Any())
                    {
                        urn  = results.Items.First().Urn;
                        name = results.Items.First().Name;
                    }
                }

                if (urn.HasValue)
                {
                    return(new Tuple <int, string>(urn.Value, name));
                }
            }

            return(null);
        }
Ejemplo n.º 3
0
 public async Task <ApiPagedResult <EstablishmentSearchResultModel> > SearchAsync(EstablishmentSearchPayload payload, IPrincipal principal)
 => (await _httpClient.PostAsync <ApiPagedResult <EstablishmentSearchResultModel> >("establishment/search", payload, principal)).GetResponse();
Ejemplo n.º 4
0
        private async Task <ActionResult> ProcessEstablishmentsSearch(EstablishmentSearchViewModel model,
                                                                      EstablishmentSearchPayload payload)
        {
            if (model.HasError)
            {
                return(NoResults(model));
            }
            else
            {
                PopulateSelectList(payload); // select only fields we use in this context

                var results = await _establishmentReadService.SearchAsync(payload, User);

                if (payload.Skip == 0)
                {
                    model.Count = results.Count;
                }
                model.Results = results.Items;

                if (results.Count == 0)
                {
                    return(NoResults(model));
                }

                var localAuthorities = await _lookupService.LocalAuthorityGetAllAsync();

                foreach (var item in model.Results)
                {
                    model.Addresses.Add(item, await item.GetAddressAsync(_lookupService));
                    var laEstab = string.Empty;
                    if (item.LocalAuthorityId.HasValue && item.EstablishmentNumber.HasValue)
                    {
                        var code = localAuthorities.FirstOrDefault(x => x.Id == item.LocalAuthorityId)?.Code;
                        if (code != null)
                        {
                            laEstab = string.Concat(code, "/", item.EstablishmentNumber?.ToString("D4"));
                        }
                    }

                    model.LAESTABs.Add(item, laEstab);
                }
            }

            if (model.Count == 1 && model.GoToDetailPageOnOneResult)
            {
                return(RedirectToEstabDetail(model.Results.First().Urn.GetValueOrDefault()));
            }
            else
            {
                var permittedStatusIds = await _establishmentReadService.GetPermittedStatusIdsAsync(User);

                var establishmentTypes = await _lookupService.EstablishmentTypesGetAllAsync();

                var establishmentGroupTypes = await _lookupService.EstablishmentTypeGroupsGetAllAsync();


                model.EstablishmentTypes = establishmentGroupTypes.Select(groupType =>
                                                                          new HeirarchicalLookupItemViewModel
                {
                    Id         = groupType.Id,
                    Name       = groupType.Name,
                    ChildItems = establishmentTypes.Where(c => c.GroupIds.Contains(groupType.Id))
                                 .Select(e => new HeirarchicalLookupItemViewModel {
                        Id = e.Id, Name = e.Name
                    })
                                 .ToList()
                })
                                           .ToList();

                model.EstablishmentTypeLookup = establishmentTypes.ToDictionary(e => e.Id, e => e.Name);

                model.EstablishmentStatuses = (await _lookupService.EstablishmentStatusesGetAllAsync())
                                              .Where(x => permittedStatusIds == null || permittedStatusIds.Contains(x.Id))
                                              .Select(x => new LookupItemViewModel(x));

                model.EducationPhases =
                    (await _lookupService.EducationPhasesGetAllAsync()).Select(x => new LookupItemViewModel(x));

                model.ReligiousCharacters =
                    (await _lookupService.ReligiousCharactersGetAllAsync()).Select(x => new LookupItemViewModel(x));

                await PopulateLookups(model);


                return(View("Index", model));
            }
        }
Ejemplo n.º 5
0
        private async Task <Returns <EstablishmentSearchPayload> > GetEstablishmentSearchPayload(
            EstablishmentSearchViewModel model)
        {
            var retVal  = new Returns <EstablishmentSearchPayload>();
            var payload = new EstablishmentSearchPayload(model.StartIndex, model.PageSize);
            var filters = payload.Filters;

            if (model.SearchType == eSearchType.Text || model.SearchType == eSearchType.EstablishmentAll)
            {
                if (model.TextSearchType == EstablishmentSearchViewModel.eTextSearchType.UKPRN)
                {
                    filters.UKPRN = model.TextSearchModel.Text;
                }
                else if (model.TextSearchType == EstablishmentSearchViewModel.eTextSearchType.LAESTAB)
                {
                    var laestab          = LAESTAB.TryParse(model.TextSearchModel.Text).Value;
                    var localAuthorityId = (await _lookupService.LocalAuthorityGetAllAsync())
                                           .FirstOrDefault(x => x.Code == laestab.LocalAuthorityCode)?.Id;
                    if (localAuthorityId.HasValue)
                    {
                        filters.LocalAuthorityIds = new int[] { localAuthorityId.Value }
                    }
                    ;
                    filters.EstablishmentNumber = laestab.EstablishmentNumber;
                }
                else if ((model.TextSearchType == EstablishmentSearchViewModel.eTextSearchType.EstablishmentName &&
                          model.TextSearchModel.Text != null) || model.SearchType == eSearchType.EstablishmentAll)
                {
                    payload.Text = model.TextSearchModel.Text;
                }
                else
                {
                    retVal.ErrorMessage = "The LAESTAB, UKPRN or URN was invalid.";
                }
            }
            else if (model.SearchType == eSearchType.Location)
            {
                var coord = model.LocationSearchCoordinate;
                if (coord != null)
                {
                    payload.GeoSearchLocation = coord;
                    payload.RadiusInMiles     = model.GetRadiusOption();
                }
                else
                {
                    retVal.ErrorMessage = "The co-ordinate could not be parsed.";
                }
            }
            else if (model.SearchType == eSearchType.ByLocalAuthority)
            {
                if (!model.SelectedLocalAuthorityIds.Any())
                {
                    retVal.ErrorMessage = "No local authority was selected";
                }
            }

            filters.EducationPhaseIds = model.SelectedEducationPhaseIds.ToArray();
            filters.StatusIds         = model.SelectedEstablishmentStatusIds.ToArray();
            filters.TypeIds           = model.SelectedEstablishmentTypeIds.ToArray();
            if (!filters.LocalAuthorityIds.Any())
            {
                filters.LocalAuthorityIds = model.SelectedLocalAuthorityIds.ToArray();
            }
            filters.ReligiousCharacterIds = model.SelectedReligiousCharacterIds.ToArray();

            filters.AdmissionsPolicyIds       = model.SelectedAdmissionsPolicyIds.ToArray();
            filters.ProvisionBoardingIds      = model.SelectedBoardingProvisionIds.ToArray();
            filters.DioceseIds                = model.SelectedDioceseIds.ToArray();
            filters.AdministrativeDistrictIds = model.SelectedDistrictIds.ToArray();
            filters.FurtherEducationTypeIds   = model.SelectedFETypeIds.ToArray();
            filters.GenderIds = model.SelectedGenderIds.ToArray();
            filters.GovernmentOfficeRegionIds    = model.SelectedGORIds.ToArray();
            filters.ProvisionNurseryIds          = model.SelectedNurseryProvisionIds.ToArray();
            filters.ParliamentaryConstituencyIds = model.SelectedParliamentaryConstituencyIds.ToArray();
            filters.ReligiousEthosIds            = model.SelectedReligiousEthosIds.ToArray();
            filters.RSCRegionIds                  = model.SelectedRSCRegionIds.ToArray();
            filters.Section41ApprovedIds          = model.SelectedSection41Ids.ToArray();
            filters.ProvisionOfficialSixthFormIds = model.SelectedSixthFormProvisionIds.ToArray();
            filters.ProvisionSpecialClassesIds    = model.SelectedSpecialClassesProvisionIds.ToArray();
            filters.SENIds        = model.SelectedTypeOfSENProvisionIds.ToArray();
            filters.UrbanRuralIds = model.SelectedUrbanRuralIds.ToArray();

            filters.CloseDateMin        = model.CloseDateFrom?.ToDateTime();
            filters.CloseDateMax        = model.CloseDateTo?.ToDateTime();
            filters.OpenDateMin         = model.OpenDateFrom?.ToDateTime();
            filters.OpenDateMax         = model.OpenDateTo?.ToDateTime();
            filters.StatutoryLowAgeMin  = model.AgeRangeLow?.From;
            filters.StatutoryLowAgeMax  = model.AgeRangeLow?.To;
            filters.StatutoryHighAgeMin = model.AgeRangeHigh?.From;
            filters.StatutoryHighAgeMax = model.AgeRangeHigh?.To;
            filters.OfstedRatingIds     = model.SelectedOfstedRatingIds.ToArray();


            payload.SortBy = model.GetSortOption();

            return(retVal.Set(payload));
        }
Ejemplo n.º 6
0
 public async Task <ApiPagedResult <EstablishmentSearchResultModel> > ProcessRequestAsync(EstablishmentSearchPayload payload)
 => await _establishmentReadService.SearchAsync(payload, User);