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)); }
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); }
public async Task <ApiPagedResult <EstablishmentSearchResultModel> > SearchAsync(EstablishmentSearchPayload payload, IPrincipal principal) => (await _httpClient.PostAsync <ApiPagedResult <EstablishmentSearchResultModel> >("establishment/search", payload, principal)).GetResponse();
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)); } }
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)); }
public async Task <ApiPagedResult <EstablishmentSearchResultModel> > ProcessRequestAsync(EstablishmentSearchPayload payload) => await _establishmentReadService.SearchAsync(payload, User);