public Document GetMATDataDocument(string matNo, string term, MatFinancingType matFinance) { var collectionName = _dataCollectionManager.GetCollectionIdByTermByDataGroup(term, matFinance == MatFinancingType.TrustOnly ? DataGroups.MATCentral : DataGroups.MATOverview); if (collectionName == null) { return(null); } var res = _client.CreateDocumentQuery <Document>( UriFactory.CreateDocumentCollectionUri(DatabaseId, collectionName), $"SELECT * FROM c WHERE c['MATNumber']='{matNo}'"); try { var result = res.ToList().FirstOrDefault(); if (result != null && result.GetPropertyValue <bool>("DNS")) { var emptyDoc = new Document(); emptyDoc.SetPropertyValue("DNS", true); return(emptyDoc); } return(result); } catch (Exception) { return(new Document()); } }
public static string ToDataGroup(this EstablishmentType estabType, MatFinancingType mFinance) { switch (estabType) { case EstablishmentType.MAT: switch (mFinance) { case MatFinancingType.TrustOnly: return(DataGroups.MATCentral); case MatFinancingType.TrustAndAcademies: return(DataGroups.MATOverview); case MatFinancingType.AcademiesOnly: return(DataGroups.MATTotals); default: return(DataGroups.MATCentral); } default: return(estabType.ToDataGroup()); } }
public async Task <IEnumerable <Document> > GetMATDataDocumentAsync(string matNo, string term, MatFinancingType matFinance) { return(await _financialDataRepository.GetMATDataDocumentAsync(matNo, term, matFinance)); }
public Document GetMATDataDocument(string matNo, string term, MatFinancingType matFinance) { return(_financialDataRepository.GetMATDataDocument(matNo, term, matFinance)); }
public async Task <IEnumerable <Document> > GetMATDataDocumentAsync(string matNo, string term, MatFinancingType matFinance) { var collectionName = _dataCollectionManager.GetCollectionIdByTermByDataGroup(term, matFinance == MatFinancingType.TrustOnly ? DataGroups.MATCentral : DataGroups.MATOverview); try { var query = _client.CreateDocumentQuery <Document>( UriFactory.CreateDocumentCollectionUri(DatabaseId, collectionName), $"SELECT * FROM c WHERE c['MATNumber']='{matNo}'"); return(await query.QueryAsync()); } catch (Exception) { return(null); } }
private async Task <SponsorViewModel> BuildSponsorVMAsync(string matNo, string name, dynamic response, RevenueGroupType tab, ChartGroupType chartGroup, MatFinancingType matFinancing) { var schoolListVM = new List <SchoolViewModel>(); foreach (var result in response.Results) { schoolListVM.Add(new SchoolViewModel(result, null)); } var comparisonListVM = base.ExtractSchoolComparisonListFromCookie(); var sponsorVM = new SponsorViewModel(matNo, name, new SchoolListViewModel(schoolListVM, comparisonListVM), comparisonListVM); sponsorVM.HistoricalCharts = _historicalChartBuilder.Build(tab, chartGroup, sponsorVM.FinancialType); sponsorVM.ChartGroups = _historicalChartBuilder.Build(tab, sponsorVM.FinancialType).DistinctBy(c => c.ChartGroup).ToList(); sponsorVM.Terms = _financialDataService.GetActiveTermsForAcademies(); sponsorVM.HistoricalSchoolFinancialDataModels = await this.GetFinancialDataHistoricallyAsync(sponsorVM.MatNo, matFinancing); if (sponsorVM.HistoricalSchoolFinancialDataModels.Count > 0) { sponsorVM.TotalRevenueIncome = sponsorVM.HistoricalSchoolFinancialDataModels.Last().TotalIncome; sponsorVM.TotalRevenueExpenditure = sponsorVM.HistoricalSchoolFinancialDataModels.Last().TotalExpenditure; sponsorVM.InYearBalance = sponsorVM.HistoricalSchoolFinancialDataModels.Last().InYearBalance; } return(sponsorVM); }
private List <ChartViewModel> BuildTrustBenchmarkCharts(RevenueGroupType revGroup, ChartGroupType chartGroup, UnitType showValue, MatFinancingType mFinancing) { var cookie = Request.Cookies[CookieNames.COMPARISON_LIST_MAT]; var comparisonList = JsonConvert.DeserializeObject <TrustComparisonViewModel>(cookie.Value); var benchmarkCharts = _benchmarkChartBuilder.Build(revGroup, chartGroup, EstablishmentType.MAT); var financialDataModels = this.GetFinancialDataForTrusts(comparisonList.Trusts, mFinancing); var trimSchoolNames = Request.Browser.IsMobileDevice; _fcService.PopulateBenchmarkChartsWithFinancialData(benchmarkCharts, financialDataModels, comparisonList.Trusts, comparisonList.DefaultTrustMatNo, showValue, trimSchoolNames); return(benchmarkCharts); }
public async Task <PartialViewResult> TabChange(EstablishmentType type, UnitType showValue, RevenueGroupType tab = RevenueGroupType.Expenditure, CentralFinancingType financing = CentralFinancingType.Include, MatFinancingType trustFinancing = MatFinancingType.TrustAndAcademies, ChartFormat format = ChartFormat.Charts) { ChartGroupType chartGroup; switch (tab) { case RevenueGroupType.Expenditure: chartGroup = ChartGroupType.TotalExpenditure; break; case RevenueGroupType.Income: chartGroup = ChartGroupType.TotalIncome; break; case RevenueGroupType.Balance: chartGroup = ChartGroupType.InYearBalance; break; case RevenueGroupType.Workforce: chartGroup = ChartGroupType.Workforce; break; default: chartGroup = ChartGroupType.All; break; } UnitType unitType; switch (tab) { case RevenueGroupType.Workforce: unitType = UnitType.AbsoluteCount; break; case RevenueGroupType.Balance: unitType = showValue == UnitType.AbsoluteMoney || showValue == UnitType.PerPupil || showValue == UnitType.PerTeacher ? showValue : UnitType.AbsoluteMoney; break; default: unitType = showValue; break; } List <ChartViewModel> benchmarkCharts; if (type == EstablishmentType.MAT) { benchmarkCharts = BuildTrustBenchmarkCharts(tab, chartGroup, unitType, trustFinancing); } else { benchmarkCharts = await BuildSchoolBenchmarkChartsAsync(tab, chartGroup, unitType, financing); } var chartGroups = _benchmarkChartBuilder.Build(tab, EstablishmentType.All).DistinctBy(c => c.ChartGroup).ToList(); var academiesTerm = FormatHelpers.FinancialTermFormatAcademies(_financialDataService.GetLatestDataYearPerSchoolType(SchoolFinancialType.Academies)); var maintainedTerm = FormatHelpers.FinancialTermFormatMaintained(_financialDataService.GetLatestDataYearPerSchoolType(SchoolFinancialType.Maintained)); var vm = new BenchmarkChartListViewModel(benchmarkCharts, base.ExtractSchoolComparisonListFromCookie(), chartGroups, ComparisonType.Manual, null, null, null, type, type, null, null, academiesTerm, maintainedTerm, ComparisonArea.All, null, null, ComparisonListLimit.DEFAULT, base.ExtractTrustComparisonListFromCookie()); ViewBag.Tab = tab; ViewBag.ChartGroup = chartGroup; ViewBag.UnitType = unitType; ViewBag.EstablishmentType = type; ViewBag.Financing = financing; ViewBag.TrustFinancing = trustFinancing; ViewBag.HomeSchoolId = (type == EstablishmentType.MAT) ? vm.TrustComparisonList.DefaultTrustMatNo : vm.SchoolComparisonList.HomeSchoolUrn; ViewBag.ChartFormat = format; return(PartialView("Partials/TabContent", vm)); }
private async Task <TrustViewModel> BuildFinancialTrustVMAsync(int companyNo, TabType tab, ChartGroupType chartGroup, MatFinancingType matFinancing) { var comparisonListVM = _benchmarkBasketService.GetSchoolBenchmarkList(); var trustVM = new TrustViewModel(companyNo, comparisonListVM); trustVM.HistoricalCharts = _historicalChartBuilder.Build(tab, chartGroup, trustVM.EstablishmentType); trustVM.ChartGroups = _historicalChartBuilder.Build(tab, trustVM.EstablishmentType).DistinctBy(c => c.ChartGroup).ToList(); trustVM.LatestTerm = await LatestMATTermAsync(); trustVM.HistoricalFinancialDataModels = await this.GetFinancialDataHistoricallyAsync(trustVM.CompanyNo, matFinancing); trustVM.AcademiesInFinanceList = (await _financialDataService.GetAcademiesByCompanyNumberAsync(await LatestMATTermAsync(), companyNo)).OrderBy(a => a.EstablishmentName).ToList(); return(trustVM); }
public async Task <PartialViewResult> GetCharts(int companyNo, TabType revGroup, ChartGroupType chartGroup, UnitType unit, MatFinancingType financing = MatFinancingType.TrustAndAcademies, ChartFormat format = ChartFormat.Charts) { var trustVM = await BuildFinancialTrustVMAsync(companyNo, revGroup, chartGroup, financing); _fcService.PopulateHistoricalChartsWithFinancialData(trustVM.HistoricalCharts, trustVM.HistoricalFinancialDataModels, await LatestMATTermAsync(), revGroup, unit, EstablishmentType.MAT); ViewBag.ChartFormat = format; ViewBag.EstablishmentType = EstablishmentType.MAT; ViewBag.UnitType = unit; ViewBag.Financing = financing; return(PartialView("Partials/Chart", trustVM)); }
public async Task <SchoolTrustFinancialDataObject> GetTrustFinancialDataObjectByMatNameAsync(string matName, string term, MatFinancingType matFinance) { var dataGroup = EstablishmentType.MAT.ToDataGroup(matFinance); var collectionName = await _dataCollectionManager.GetCollectionIdByTermByDataGroupAsync(term, dataGroup); if (collectionName == null) { return(null); } var container = _client.GetContainer(_databaseId, collectionName); var queryString = $"SELECT * FROM c WHERE c['{SchoolTrustFinanceDataFieldNames.TRUST_COMPANY_NAME}']=@matName"; var queryDefinition = new QueryDefinition(queryString) .WithParameter($"@matName", matName); var feedIterator = container.GetItemQueryIterator <SchoolTrustFinancialDataObject>(queryDefinition, null); try { var result = (await feedIterator.ReadNextAsync()).FirstOrDefault(); if (result != null && result.DidNotSubmit) { var emptyObj = new SchoolTrustFinancialDataObject(); emptyObj.DidNotSubmit = true; return(emptyObj); } return(result); } catch (Exception ex) { if (term.Contains(_dataCollectionManager.GetLatestFinancialDataYearPerEstabTypeAsync(EstablishmentType.MAT).ToString())) { var errorMessage = $"{collectionName} could not be loaded! : {ex.Message} : {queryDefinition.QueryText}"; base.LogException(ex, errorMessage); } return(null); } }
public async Task <List <SchoolTrustFinancialDataObject> > GetMultipleTrustFinancialDataObjectsAsync(List <int> companyNoList, string term, MatFinancingType matFinance) { var dataGroup = EstablishmentType.MAT.ToDataGroup(matFinance); var collectionName = await _dataCollectionManager.GetCollectionIdByTermByDataGroupAsync(term, dataGroup); if (collectionName == null) { return(null); } var container = _client.GetContainer(_databaseId, collectionName); var queryString = $"SELECT * FROM c WHERE c['{SchoolTrustFinanceDataFieldNames.COMPANY_NUMBER}'] in ({string.Join(",", companyNoList)})"; var queryDefinition = new QueryDefinition(queryString); var feedIterator = container.GetItemQueryIterator <SchoolTrustFinancialDataObject>(queryDefinition, null); var resultsList = new List <SchoolTrustFinancialDataObject>(); while (feedIterator.HasMoreResults) { foreach (var item in await feedIterator.ReadNextAsync()) { resultsList.Add(item); } } try { resultsList.ForEach(result => { if (result.DidNotSubmit) { var emptyObj = new SchoolTrustFinancialDataObject(); emptyObj.DidNotSubmit = true; result = emptyObj; } }); } catch (Exception ex) { var errorMessage = $"{collectionName} could not be loaded! : {ex.Message} : URNs = {string.Join(",", companyNoList)}"; base.LogException(ex, errorMessage); throw new ApplicationException($"One or more documents could not be loaded from {collectionName} : URNs = {string.Join(",", companyNoList)}"); } return(resultsList); }
public async Task <ActionResult> Index(string matNo, string name, UnitType unit = UnitType.AbsoluteMoney, RevenueGroupType tab = RevenueGroupType.Expenditure, MatFinancingType financing = MatFinancingType.TrustAndAcademies, ChartFormat format = ChartFormat.Charts) { ChartGroupType chartGroup; switch (tab) { case RevenueGroupType.Expenditure: chartGroup = ChartGroupType.TotalExpenditure; break; case RevenueGroupType.Income: chartGroup = ChartGroupType.TotalIncome; break; case RevenueGroupType.Balance: chartGroup = ChartGroupType.InYearBalance; break; default: chartGroup = ChartGroupType.All; break; } var latestYear = _financialDataService.GetLatestDataYearForTrusts(); var term = FormatHelpers.FinancialTermFormatAcademies(latestYear); var dataResponse = _financialDataService.GetAcademiesByMatNumber(term, matNo); var sponsorVM = await BuildSponsorVMAsync(matNo, name, dataResponse, tab, chartGroup, financing); List <string> terms = _financialDataService.GetActiveTermsForMatCentral(); var latestTerm = terms.First(); UnitType unitType; switch (tab) { case RevenueGroupType.Workforce: unitType = UnitType.AbsoluteCount; break; case RevenueGroupType.Balance: unitType = unit == UnitType.AbsoluteMoney || unit == UnitType.PerPupil || unit == UnitType.PerTeacher ? unit : UnitType.AbsoluteMoney; break; default: unitType = unit; break; } _fcService.PopulateHistoricalChartsWithSchoolData(sponsorVM.HistoricalCharts, sponsorVM.HistoricalSchoolFinancialDataModels, latestTerm, tab, unitType, SchoolFinancialType.Academies); ViewBag.Tab = tab; ViewBag.ChartGroup = chartGroup; ViewBag.UnitType = unitType; ViewBag.Financing = financing; ViewBag.ChartFormat = format; return(View(sponsorVM)); }
private async Task <List <SchoolFinancialDataModel> > GetFinancialDataHistoricallyAsync(string matCode, MatFinancingType matFinancing) { var models = new List <SchoolFinancialDataModel>(); var latestYear = _financialDataService.GetLatestDataYearForTrusts(); var taskList = new List <Task <IEnumerable <Document> > >(); for (int i = ChartHistory.YEARS_OF_HISTORY - 1; i >= 0; i--) { var term = FormatHelpers.FinancialTermFormatAcademies(latestYear - i); var task = _financialDataService.GetMATDataDocumentAsync(matCode, term, matFinancing); taskList.Add(task); } for (int i = ChartHistory.YEARS_OF_HISTORY - 1; i >= 0; i--) { var term = FormatHelpers.FinancialTermFormatAcademies(latestYear - i); var taskResult = await taskList[ChartHistory.YEARS_OF_HISTORY - 1 - i]; var resultDocument = taskResult?.FirstOrDefault(); if (resultDocument != null && resultDocument.GetPropertyValue <bool>("DNS")) { var emptyDoc = new Document(); emptyDoc.SetPropertyValue("DNS", true); resultDocument = emptyDoc; } models.Add(new SchoolFinancialDataModel(matCode, term, resultDocument, SchoolFinancialType.Academies)); } return(models); }
private async Task <TrustViewModel> BuildFullTrustVMAsync(int companyNo, TabType tab, ChartGroupType chartGroup, MatFinancingType matFinancing) { var trustVM = await BuildFinancialTrustVMAsync(companyNo, tab, chartGroup, matFinancing); trustVM.AcademiesInContextList = (await _contexDataService.GetAcademiesByUidAsync(trustVM.UID.GetValueOrDefault())).OrderBy(a => a.EstablishmentName).ToList(); if (trustVM.UID != null) { try { trustVM.TrustHistory = await _trustHistoryService.GetTrustHistoryModelAsync(trustVM.UID.GetValueOrDefault()); } catch (NullReferenceException) { //Do not load trust history if missing } } return(trustVM); }
public ActionResult Mats(RevenueGroupType tab = RevenueGroupType.Expenditure, MatFinancingType financing = MatFinancingType.TrustAndAcademies) { ChartGroupType chartGroup; switch (tab) { case RevenueGroupType.Expenditure: chartGroup = ChartGroupType.TotalExpenditure; break; case RevenueGroupType.Income: chartGroup = ChartGroupType.TotalIncome; break; case RevenueGroupType.Balance: chartGroup = ChartGroupType.InYearBalance; break; default: chartGroup = ChartGroupType.All; break; } var defaultUnitType = tab == RevenueGroupType.Workforce ? UnitType.AbsoluteCount : UnitType.AbsoluteMoney; var benchmarkCharts = BuildTrustBenchmarkCharts(tab, chartGroup, UnitType.AbsoluteMoney, financing); var chartGroups = _benchmarkChartBuilder.Build(tab, EstablishmentType.MAT).DistinctBy(c => c.ChartGroup).ToList(); var academiesTerm = FormatHelpers.FinancialTermFormatAcademies(_financialDataService.GetLatestDataYearPerSchoolType(SchoolFinancialType.Academies)); var maintainedTerm = FormatHelpers.FinancialTermFormatMaintained(_financialDataService.GetLatestDataYearPerSchoolType(SchoolFinancialType.Maintained)); var vm = new BenchmarkChartListViewModel(benchmarkCharts, null, chartGroups, ComparisonType.Manual, null, null, null, EstablishmentType.MAT, EstablishmentType.MAT, null, null, academiesTerm, maintainedTerm, ComparisonArea.All, null, null, ComparisonListLimit.DEFAULT, base.ExtractTrustComparisonListFromCookie()); ViewBag.Tab = tab; ViewBag.ChartGroup = chartGroup; ViewBag.UnitType = defaultUnitType; ViewBag.HomeSchoolId = vm.TrustComparisonList.DefaultTrustMatNo; ViewBag.EstablishmentType = vm.EstablishmentType; ViewBag.TrustFinancing = financing; return(View("Index", vm)); }
private async Task <List <FinancialDataModel> > GetFinancialDataHistoricallyAsync(int companyNo, MatFinancingType matFinancing) { var models = new List <FinancialDataModel>(); var latestYear = await _financialDataService.GetLatestDataYearPerEstabTypeAsync(EstablishmentType.MAT); var taskList = new List <Task <SchoolTrustFinancialDataObject> >(); for (int i = ChartHistory.YEARS_OF_HISTORY - 1; i >= 0; i--) { var term = SchoolFormatHelpers.FinancialTermFormatAcademies(latestYear - i); var task = _financialDataService.GetTrustFinancialDataObjectByCompanyNoAsync(companyNo, term, matFinancing); taskList.Add(task); } for (int i = ChartHistory.YEARS_OF_HISTORY - 1; i >= 0; i--) { var term = SchoolFormatHelpers.FinancialTermFormatAcademies(latestYear - i); var taskResult = await taskList[ChartHistory.YEARS_OF_HISTORY - 1 - i]; var resultObject = taskResult; if (resultObject != null && resultObject.DidNotSubmit) { var emptyObj = new SchoolTrustFinancialDataObject(); emptyObj.DidNotSubmit = true; resultObject = emptyObj; } models.Add(new FinancialDataModel(companyNo.ToString(), term, resultObject, EstablishmentType.MAT)); } return(models); }
public async Task <PartialViewResult> GetCharts(RevenueGroupType revGroup, ChartGroupType chartGroup, UnitType showValue, CentralFinancingType centralFinancing = CentralFinancingType.Include, MatFinancingType trustCentralFinancing = MatFinancingType.TrustAndAcademies, EstablishmentType type = EstablishmentType.All, ChartFormat format = ChartFormat.Charts) { List <ChartViewModel> benchmarkCharts; if (type == EstablishmentType.MAT) { benchmarkCharts = BuildTrustBenchmarkCharts(revGroup, chartGroup, showValue, trustCentralFinancing); ViewBag.HomeSchoolId = this.ExtractTrustComparisonListFromCookie().DefaultTrustMatNo; } else { benchmarkCharts = await BuildSchoolBenchmarkChartsAsync(revGroup, chartGroup, showValue, centralFinancing); ViewBag.HomeSchoolId = this.ExtractSchoolComparisonListFromCookie().HomeSchoolUrn; } ViewBag.EstablishmentType = type; ViewBag.ChartFormat = format; return(PartialView("Partials/Chart", benchmarkCharts)); }
public async Task <ActionResult> Index(int?companyNo, int?uid = null, UnitType unit = UnitType.AbsoluteMoney, TabType tab = TabType.Expenditure, MatFinancingType financing = MatFinancingType.TrustAndAcademies, ChartFormat format = ChartFormat.Charts) { if (companyNo == null && uid.HasValue) { var trustFinance = await _financialDataService.GetTrustFinancialDataObjectByUidAsync(uid.GetValueOrDefault(), await LatestMATTermAsync()); companyNo = trustFinance.CompanyNumber; return(RedirectToActionPermanent("Index", "Trust", new RouteValueDictionary { { "companyNo", companyNo }, { "unit", unit }, { "tab", tab }, { "financing", financing }, { "format", format } })); } ChartGroupType chartGroup; switch (tab) { case TabType.Expenditure: chartGroup = ChartGroupType.TotalExpenditure; break; case TabType.Income: chartGroup = ChartGroupType.TotalIncome; break; case TabType.Balance: chartGroup = ChartGroupType.InYearBalance; break; default: chartGroup = ChartGroupType.All; break; } var trustVM = await BuildFullTrustVMAsync(companyNo.GetValueOrDefault(), tab, chartGroup, financing); if (!trustVM.HasLatestYearFinancialData) { if (trustVM.AcademiesInFinanceList.Count == 1) { return(RedirectToActionPermanent("Detail", "School", new RouteValueDictionary { { "urn", trustVM.AcademiesInFinanceList.First().URN } })); } return(RedirectToActionPermanent("SuggestTrust", "TrustSearch", new RouteValueDictionary { { "trustNameId", companyNo } })); } UnitType unitType; switch (tab) { case TabType.Workforce: unitType = UnitType.AbsoluteCount; break; case TabType.Balance: unitType = unit == UnitType.AbsoluteMoney || unit == UnitType.PerPupil || unit == UnitType.PerTeacher ? unit : UnitType.AbsoluteMoney; break; default: unitType = unit; break; } _fcService.PopulateHistoricalChartsWithFinancialData(trustVM.HistoricalCharts, trustVM.HistoricalFinancialDataModels, trustVM.LatestTerm, tab, unitType, EstablishmentType.Academies); ViewBag.Tab = tab; ViewBag.ChartGroup = chartGroup; ViewBag.UnitType = unitType; ViewBag.Financing = financing; ViewBag.ChartFormat = format; ViewBag.EstablishmentType = EstablishmentType.MAT; return(View(trustVM)); }
private List <SchoolFinancialDataModel> GetFinancialDataForTrusts(List <TrustToCompareViewModel> trusts, MatFinancingType matFinancing = MatFinancingType.TrustAndAcademies) { var models = new List <SchoolFinancialDataModel>(); var terms = _financialDataService.GetActiveTermsForMatCentral(); foreach (var trust in trusts) { var financialDataModel = _financialDataService.GetMATDataDocument(trust.MatNo, terms.First(), matFinancing); models.Add(new SchoolFinancialDataModel(trust.MatNo, terms.First(), financialDataModel, SchoolFinancialType.Academies)); } return(models); }
public async Task <PartialViewResult> GetCharts(string matNo, string name, string term, RevenueGroupType revGroup, ChartGroupType chartGroup, UnitType unit, MatFinancingType financing = MatFinancingType.TrustAndAcademies, ChartFormat format = ChartFormat.Charts) { var dataResponse = _financialDataService.GetAcademiesByMatNumber(term, matNo); var sponsorVM = await BuildSponsorVMAsync(matNo, name, dataResponse, revGroup, chartGroup, financing); _fcService.PopulateHistoricalChartsWithSchoolData(sponsorVM.HistoricalCharts, sponsorVM.HistoricalSchoolFinancialDataModels, term, revGroup, unit, SchoolFinancialType.Academies); ViewBag.ChartFormat = format; return(PartialView("Partials/Chart", sponsorVM)); }