Пример #1
0
        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"));
            }
        }
Пример #2
0
        /// <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));
            }
        }
Пример #3
0
        /// <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));
        }
Пример #4
0
        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));
                }
            }
        }
Пример #5
0
        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"));
            }
        }