private async Task <FederationViewModel> BuildFullFederationViewModelAsync(long fuid, TabType tab, ChartGroupType chartGroup, UnitType unitType) { var vm = new FederationViewModel(fuid, _benchmarkBasketService.GetSchoolBenchmarkList()); vm.HistoricalCharts.AddRange(_historicalChartBuilder.Build(tab, chartGroup, vm.EstablishmentType, unitType)); vm.HistoricalCharts.AddRange(_historicalChartBuilder.Build(TabType.Workforce, DetectDefaultChartGroupFromTabType(TabType.Workforce), vm.EstablishmentType, UnitType.AbsoluteCount)); vm.ChartGroups = _historicalChartBuilder.Build(tab, vm.EstablishmentType).DistinctBy(c => c.ChartGroup).ToList(); vm.LatestTerm = await LatestFederationTermAsync(); vm.Tab = tab; vm.ContextData = await _contextDataService.GetSchoolDataObjectByUrnAsync(fuid); vm.HistoricalFinancialDataModels = await GetFinancialDataHistoricallyAsync(fuid); _fcService.PopulateHistoricalChartsWithFinancialData(vm.HistoricalCharts, vm.HistoricalFinancialDataModels, vm.LatestTerm, vm.Tab, unitType, vm.EstablishmentType); _fcService.PopulateHistoricalChartsWithFinancialData(vm.HistoricalCharts, vm.HistoricalFinancialDataModels, vm.LatestTerm, TabType.Workforce, UnitType.AbsoluteCount, vm.EstablishmentType); vm.SchoolsInFederation = await _contextDataService.GetMultipleSchoolDataObjectsByUrnsAsync(vm.FederationMembersURNs.ToList()); vm.LaName = _laService.GetLaName(vm.La.ToString()); return(vm); }
public async Task AddHistoricalChartsAsync(TabType tabType, ChartGroupType chartGroup, CentralFinancingType cFinance, UnitType unitType) { SchoolVM.HistoricalCharts.AddRange(_historicalChartBuilder.Build(tabType, chartGroup, SchoolVM.EstablishmentType, unitType)); SchoolVM.HistoricalFinancialDataModels.AddRange(await this.GetFinancialDataHistoricallyAsync(SchoolVM.Id, SchoolVM.EstablishmentType, SchoolVM.Tab == TabType.Workforce ? CentralFinancingType.Exclude : cFinance)); _fcService.PopulateHistoricalChartsWithFinancialData(SchoolVM.HistoricalCharts, SchoolVM.HistoricalFinancialDataModels, SchoolVM.LatestTerm, tabType, unitType, SchoolVM.EstablishmentType); }
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)); }