public async Task <ActionResult> OverwriteStrategy() { var comparisonList = _schoolBenchmarkListService.GetSchoolBenchmarkList(); var manualComparisonList = _manualBenchmarkListService.GetManualBenchmarkList(); if (comparisonList?.BenchmarkSchools?.Count > 0 && !comparisonList.BenchmarkSchools.All(s => s.Urn == comparisonList.HomeSchoolUrn)) { SchoolViewModel vm; if (comparisonList?.BenchmarkSchools?.Count + manualComparisonList.BenchmarkSchools.Count > ComparisonListLimit.LIMIT) { if (comparisonList.HomeSchoolUrn == null) { vm = new SchoolViewModelWithNoDefaultSchool(comparisonList, manualComparisonList); } else { var contextDataObject = await _contextDataService.GetSchoolDataObjectByUrnAsync(long.Parse(comparisonList.HomeSchoolUrn)); vm = new SchoolViewModel(contextDataObject, comparisonList, manualComparisonList); } ViewBag.referrer = Request?.UrlReferrer; return(View("OverwriteReplace", vm)); } else { if (comparisonList.HomeSchoolUrn == null) { vm = new SchoolViewModelWithNoDefaultSchool(comparisonList, manualComparisonList); } else { var contextDataObject = await _contextDataService.GetSchoolDataObjectByUrnAsync(long.Parse(comparisonList.HomeSchoolUrn)); vm = new SchoolViewModel(contextDataObject, comparisonList, manualComparisonList); } ViewBag.referrer = Request?.UrlReferrer; return(View(vm)); } } else { foreach (var school in manualComparisonList.BenchmarkSchools) { _schoolBenchmarkListService.TryAddSchoolToBenchmarkList(school); } return(Redirect("/BenchmarkCharts")); } }
/// <summary> /// Step 2 - Advanced /// </summary> /// <param name="urn"></param> /// <param name="comparisonType"></param> /// <param name="estType"></param> /// <returns></returns> public async Task <ViewResult> ChooseRegion(long?urn, ComparisonType comparisonType, EstablishmentType?estType, bool excludePartial = false) { ViewBag.URN = urn; ViewBag.ComparisonType = comparisonType; ViewBag.EstType = estType; //ViewBag.AreaType = ComparisonArea.All; ViewBag.Authorities = _laService.GetLocalAuthorities(); ViewBag.ExcludePartial = excludePartial.ToString(); if (urn.HasValue) { var benchmarkSchool = new SchoolViewModel(await _contextDataService.GetSchoolDataObjectByUrnAsync(urn.Value), _benchmarkBasketService.GetSchoolBenchmarkList()); if (estType.HasValue) { return(View("ChooseRegion", benchmarkSchool)); } benchmarkSchool.ErrorMessage = ErrorMessages.SelectSchoolType; ViewBag.URN = urn; ViewBag.ComparisonType = comparisonType; return(View("SelectSchoolType", benchmarkSchool)); } else { if (estType.HasValue) { return(View("ChooseRegion", new SchoolViewModelWithNoDefaultSchool())); } var bs = new SchoolViewModelWithNoDefaultSchool { ErrorMessage = ErrorMessages.SelectSchoolType }; return(View("SelectSchoolType", bs)); } }
/// <summary> /// Step 3 - Advanced /// </summary> /// <param name="urn"></param> /// <param name="estType"></param> /// <param name="comparisonType"></param> /// <param name="areaType"></param> /// <param name="laCodeName"></param> /// <returns></returns> public async Task <ActionResult> AdvancedCharacteristics( long?urn, ComparisonType comparisonType, EstablishmentType estType, ComparisonArea?areaType, string laCodeName, BenchmarkCriteria AdvancedCriteria, bool excludePartial = false, int?laCode = null) { if (!areaType.HasValue) { SchoolViewModel vm = null; if (urn.HasValue) { vm = new SchoolViewModel(await _contextDataService.GetSchoolDataObjectByUrnAsync(urn.Value), _benchmarkBasketService.GetSchoolBenchmarkList()); } else { vm = new SchoolViewModelWithNoDefaultSchool(); } vm.ErrorMessage = ErrorMessages.SelectAreaType; ViewBag.Authorities = _laService.GetLocalAuthorities(); ViewBag.URN = urn; ViewBag.ComparisonType = comparisonType; ViewBag.EstType = estType; ViewBag.AreaType = areaType; ViewBag.ExcludePartial = excludePartial.ToString(); return(View("ChooseRegion", vm)); } if (areaType == ComparisonArea.LaCodeName && laCode == null) { string errorMessage = _valService.ValidateLaCodeNameParameter(laCodeName); if (string.IsNullOrEmpty(errorMessage)) { if (IsNumeric(laCodeName)) { laCode = int.Parse(laCodeName); if (!_laSearchService.LaCodesContain(laCode.Value)) { errorMessage = SearchErrorMessages.NO_LA_RESULTS; } } else { var exactLaMatch = _laSearchService.SearchExactMatch(laCodeName); if (exactLaMatch == null) { errorMessage = SearchErrorMessages.NO_LA_RESULTS; } else { laCode = int.Parse(exactLaMatch.Id); } } } if (errorMessage != null) { SchoolViewModel vm = null; if (urn.HasValue) { vm = new SchoolViewModel(await _contextDataService.GetSchoolDataObjectByUrnAsync(urn.Value), _benchmarkBasketService.GetSchoolBenchmarkList()); } else { vm = new SchoolViewModelWithNoDefaultSchool(); } vm.ErrorMessage = errorMessage; ViewBag.Authorities = _laService.GetLocalAuthorities(); ViewBag.URN = urn; ViewBag.ComparisonType = comparisonType; ViewBag.EstType = estType; ViewBag.AreaType = areaType; ViewBag.ExcludePartial = excludePartial.ToString(); return(View("ChooseRegion", vm)); } } SchoolViewModel benchmarkSchoolVM; if (urn.HasValue) { benchmarkSchoolVM = new SchoolViewModel(await _contextDataService.GetSchoolDataObjectByUrnAsync(urn.Value), _benchmarkBasketService.GetSchoolBenchmarkList()); var schoolsLatestFinancialDataModel = await _financialDataService.GetSchoolsLatestFinancialDataModelAsync(benchmarkSchoolVM.Id, benchmarkSchoolVM.EstablishmentType); benchmarkSchoolVM.HistoricalFinancialDataModels = new List <FinancialDataModel> { schoolsLatestFinancialDataModel }; } else { benchmarkSchoolVM = new SchoolViewModelWithNoDefaultSchool(); } var schoolCharsVM = new SchoolCharacteristicsViewModel(benchmarkSchoolVM, _benchmarkBasketService.GetSchoolBenchmarkList(), AdvancedCriteria); ViewBag.URN = urn; ViewBag.ComparisonType = comparisonType; ViewBag.EstType = estType; ViewBag.EstTypeDescription = estType.GetDescription(); ViewBag.ExcludePartial = excludePartial.ToString(); ViewBag.AreaType = areaType; ViewBag.AreaTypeDescription = areaType == ComparisonArea.All ? "All of England" : _laService.GetLaName(laCode.ToString()); ViewBag.LaCode = laCode; return(View(schoolCharsVM)); }
public async Task <ActionResult> Search( string nameId, string searchType, string suggestionUrn, string locationorpostcode, string locationCoordinates, string laCodeName, decimal?radius, bool openOnly = false, string orderby = "", int page = 1, string tab = "list", string referrer = "home/index") { ViewBag.OpenOnly = openOnly; ViewBag.SearchMethod = "Manual"; ViewBag.LaCodeName = laCodeName; var comparisonList = _schoolBenchmarkListService.GetSchoolBenchmarkList(); var manualComparisonList = _manualBenchmarkListService.GetManualBenchmarkList(); EdubaseDataObject contextDataObject = null; if (!string.IsNullOrEmpty(comparisonList.HomeSchoolUrn)) { await _contextDataService.GetSchoolDataObjectByUrnAsync(int.Parse(comparisonList.HomeSchoolUrn)); } dynamic searchResp = null; string errorMessage; switch (searchType) { case SearchTypes.SEARCH_BY_NAME_ID: if (string.IsNullOrEmpty(comparisonList.HomeSchoolUrn)) { var vm = new SchoolViewModelWithNoDefaultSchool(manualComparisonList); return(View("AddSchoolsManually", vm)); } else { var vm = new SchoolViewModel(contextDataObject, comparisonList, manualComparisonList); return(View("AddSchoolsManually", vm)); } case SearchTypes.SEARCH_BY_LA_CODE_NAME: if (!IsNumeric(laCodeName)) { errorMessage = _valService.ValidateLaNameParameterForComparison(laCodeName); if (string.IsNullOrEmpty(errorMessage)) { var exactMatch = _laSearchService.SearchExactMatch(laCodeName); if (exactMatch != null) { laCodeName = exactMatch.Id; return(await Search(nameId, searchType, suggestionUrn, locationorpostcode, locationCoordinates, laCodeName, radius, openOnly, orderby, page, tab)); } var similarMatch = _laSearchService.SearchContains(laCodeName); if (similarMatch.Count == 0) { var svm = new SearchViewModel(comparisonList, searchType) { SearchType = searchType, Authorities = _laService.GetLocalAuthorities(), ErrorMessage = SearchErrorMessages.NO_LA_RESULTS }; return(View("Index", svm)); } TempData["SearchMethod"] = "Manual"; return(RedirectToAction("Search", "La", new { name = laCodeName, openOnly = openOnly })); } else { var svm = new SearchViewModel(comparisonList, searchType) { SearchType = searchType, Authorities = _laService.GetLocalAuthorities(), ErrorMessage = errorMessage }; return(View("Index", svm)); } } else { errorMessage = _valService.ValidateLaCodeParameterForComparison(laCodeName); if (string.IsNullOrEmpty(errorMessage)) { searchResp = await GetSearchResultsAsync(nameId, searchType, locationorpostcode, locationCoordinates, laCodeName, radius, openOnly, orderby, page); int resultCount = searchResp.NumberOfResults; if (resultCount == 0) { var svm = new SearchViewModel(comparisonList, searchType) { SearchType = searchType, Authorities = _laService.GetLocalAuthorities(), ErrorMessage = SearchErrorMessages.NO_LA_RESULTS }; return(View("Index", svm)); } else { ViewBag.manualCount = manualComparisonList?.BenchmarkSchools?.Count(); return(View("ManualSearchResults", GetSearchedSchoolViewModelList(searchResp, manualComparisonList, orderby, page, searchType, nameId, locationorpostcode, _laService.GetLaName(laCodeName)))); } } else { var svm = new SearchViewModel(comparisonList, searchType) { SearchType = searchType, Authorities = _laService.GetLocalAuthorities(), ErrorMessage = errorMessage }; return(View("Index", svm)); } } case SearchTypes.SEARCH_BY_LOCATION: default: errorMessage = _valService.ValidateLocationParameterForComparison(locationorpostcode); if (string.IsNullOrEmpty(errorMessage)) { if (string.IsNullOrEmpty(locationCoordinates)) { var result = _locationSearchService.SuggestLocationName(locationorpostcode); switch (result.Matches.Count) { case 0: var svm = new SearchViewModel(comparisonList, searchType) { SearchType = searchType, Authorities = _laService.GetLocalAuthorities(), ErrorMessage = SearchErrorMessages.NO_LOCATION_RESULTS }; return(View("Index", svm)); default: TempData["LocationResults"] = result; TempData["SearchMethod"] = "Manual"; return(RedirectToAction("Suggest", "Location", new { locationOrPostcode = locationorpostcode, openOnly = openOnly })); } } else { searchResp = await GetSearchResultsAsync(nameId, searchType, locationorpostcode, locationCoordinates, laCodeName, radius, openOnly, orderby, page); if (searchResp.NumberOfResults == 0) { var svm = new SearchViewModel(comparisonList, searchType) { SearchType = searchType, Authorities = _laService.GetLocalAuthorities(), ErrorMessage = SearchErrorMessages.NO_LOCATION_RESULTS }; return(View("Index", svm)); } ViewBag.manualCount = manualComparisonList?.BenchmarkSchools?.Count(); return(View("ManualSearchResults", GetSearchedSchoolViewModelList(searchResp, manualComparisonList, orderby, page, searchType, nameId, locationorpostcode, _laService.GetLaName(laCodeName)))); } } else { var svm = new SearchViewModel(comparisonList, searchType) { SearchType = searchType, Authorities = _laService.GetLocalAuthorities(), ErrorMessage = errorMessage }; return(View("Index", svm)); } } }
public async Task <ActionResult> ReplaceAdd(BenchmarkListOverwriteStrategy?overwriteStrategy, string referrer) { var comparisonList = _schoolBenchmarkListService.GetSchoolBenchmarkList(); var manualComparisonList = _manualBenchmarkListService.GetManualBenchmarkList(); switch (overwriteStrategy) { case null: SchoolViewModel vm = null; if (comparisonList.HomeSchoolUrn == null) { vm = new SchoolViewModelWithNoDefaultSchool(comparisonList, manualComparisonList); } else { var contextDataObject = await _contextDataService.GetSchoolDataObjectByUrnAsync(long.Parse(comparisonList.HomeSchoolUrn)); vm = new SchoolViewModel(contextDataObject, comparisonList, manualComparisonList); } vm.ErrorMessage = ErrorMessages.SelectOverwriteStrategy; ViewBag.referrer = referrer; return(View("OverwriteStrategy", vm)); case BenchmarkListOverwriteStrategy.Add: if (comparisonList.BenchmarkSchools.Count + manualComparisonList.BenchmarkSchools.Where(s => s.Urn != manualComparisonList.HomeSchoolUrn).Count() > ComparisonListLimit.LIMIT) { if (comparisonList.HomeSchoolUrn == null) { vm = new SchoolViewModelWithNoDefaultSchool(comparisonList, manualComparisonList); } else { var contextDataObject = await _contextDataService.GetSchoolDataObjectByUrnAsync(long.Parse(comparisonList.HomeSchoolUrn)); vm = new SchoolViewModel(contextDataObject, comparisonList, manualComparisonList); } vm.ErrorMessage = ErrorMessages.BMBasketLimitExceed; ViewBag.referrer = referrer; return(View("OverwriteStrategy", vm)); } else { foreach (var school in manualComparisonList.BenchmarkSchools.Where(s => s.Urn != manualComparisonList.HomeSchoolUrn)) { _schoolBenchmarkListService.TryAddSchoolToBenchmarkList(school); } return(Redirect("/BenchmarkCharts")); } case BenchmarkListOverwriteStrategy.Overwrite: default: _schoolBenchmarkListService.ClearSchoolBenchmarkList(); foreach (var school in manualComparisonList.BenchmarkSchools.Where(s => s.Urn != manualComparisonList.HomeSchoolUrn)) { _schoolBenchmarkListService.AddSchoolToBenchmarkList(school); } var benchmarkSchool = new BenchmarkSchoolModel(manualComparisonList); _schoolBenchmarkListService.SetSchoolAsDefault(benchmarkSchool); return(Redirect("/BenchmarkCharts")); } }