public void LoadComparisonData(AllDistrictComparisonsDto response)
        {
            BudgetsService.Prime();

            foreach (var districtContainer in response.DistrictFiscalYearMetrics)
            {
                //for each fiscal year
                foreach (var fyMetric in districtContainer.MetricsByFiscalYear)
                {
                    var budget         = BudgetsService.Find(districtContainer.District.DistrictId, fyMetric.Key);
                    var previousBudget = BudgetsService.FindPreviousYear(budget);

                    //we need current and previous to calculate any increases...
                    if (budget == null || previousBudget == null)
                    {
                        Logger.LogDebug($"Skipping for district {districtContainer.District.Name}. Budget Null?:{budget == null}. Previous Budget Null?:({previousBudget == null}");
                        continue;
                    }

                    var fyEnrollment = EnrollmentService.Find(districtContainer.District.DistrictId, budget.FiscalYearId);


                    //add the metric
                    fyMetric.Value.Metrics.Add(ComparisonType.Enrollment, fyEnrollment.Enrollment);
                }
            }
        }
        public void LoadComparisonData(AllDistrictComparisonsDto response)
        {
            BudgetsService.Prime();

            foreach (var districtContainer in response.DistrictFiscalYearMetrics)
            {
                //for each fiscal year
                foreach (var fyMetric in districtContainer.MetricsByFiscalYear)
                {
                    var budget         = BudgetsService.Find(districtContainer.District.DistrictId, fyMetric.Key);
                    var previousBudget = BudgetsService.FindPreviousYear(budget);

                    //we need current and previous to calculate any increases...
                    if (budget == null || previousBudget == null)
                    {
                        continue;
                    }

                    if (!budget.Millage.HasValue || !previousBudget.Millage.HasValue)
                    {
                        continue;
                    }

                    var millageChange   = budget.Millage - previousBudget.Millage;
                    var taxRateIncrease = millageChange / previousBudget.Millage;


                    //add the metric
                    fyMetric.Value.Metrics.Add(ComparisonType.TaxRateIncrease, taxRateIncrease);
                }
            }
        }
Exemple #3
0
        public void LoadComparisonData(AllDistrictComparisonsDto response)
        {
            BudgetsService.Prime();

            var enrollments = EnrollmentsService.GetAll().ToDictionary(x => x.DistrictId);

            foreach (var districtContainer in response.DistrictFiscalYearMetrics)
            {
                //for each fiscal year
                foreach (var fyMetric in districtContainer.MetricsByFiscalYear)
                {
                    //only proceed if we have a budget
                    var budget = BudgetsService.Find(districtContainer.District.DistrictId, fyMetric.Key);
                    if (budget == null || budget.Assessed.HasValue == false)
                    {
                        continue;
                    }

                    //add assessment
                    fyMetric.Value.Metrics.Add(ComparisonType.Assessed, budget.Assessed);

                    //if we have enrollment, calculate assessment per student
                    if (enrollments.TryGetValue(districtContainer.District.DistrictId, out var enrollment))
                    {
                        var assessedPerStudent = budget.Assessed.Value / enrollment.Enrollment;
                        fyMetric.Value.Metrics.Add(ComparisonType.AssessedPerStudent, assessedPerStudent);
                    }

                    //we can't do comparisons to previous w/out a previous budget
                    var previousBudget = BudgetsService.FindPreviousYear(budget);
                    if (previousBudget == null || previousBudget.Assessed.HasValue == false)
                    {
                        continue;
                    }

                    var assessedChanged    = budget.Assessed - previousBudget.Assessed;
                    var assessedNewRevenue = (assessedChanged * budget.Millage) / 1000;

                    //add the metric
                    fyMetric.Value.Metrics.Add(ComparisonType.AssessedIncrease, assessedChanged);
                    fyMetric.Value.Metrics.Add(ComparisonType.AssessedNewRevenue, assessedNewRevenue);

                    if (enrollment == null)
                    {
                        continue;
                    }

                    var assessedNewRevenuePerStudent = assessedNewRevenue / enrollment.Enrollment;
                    fyMetric.Value.Metrics.Add(ComparisonType.AssessedNewRevenuePerStudent, assessedNewRevenuePerStudent);
                }
            }
        }
Exemple #4
0
        public void LoadComparisonData(AllDistrictComparisonsDto response)
        {
            var expendituresByDistrict = BudgetExpendituresService.GetAll().ToDictionary(x => x.DistrictId);
            var enrollmentsByDistrict  = EnrollmentsService.GetAll().ToDictionary(x => x.DistrictId);

            BudgetsService.Prime();

            foreach (var districtContainer in response.DistrictFiscalYearMetrics)
            {
                //if we don't have expenditures for this district... pass
                if (!expendituresByDistrict.ContainsKey(districtContainer.District.DistrictId))
                {
                    continue;
                }

                //if we don't have enrollment data for this district... pass
                if (!enrollmentsByDistrict.ContainsKey(districtContainer.District.DistrictId))
                {
                    continue;
                }

                //get expenditures for this district
                var districtExpenditures   = expendituresByDistrict[districtContainer.District.DistrictId];
                var fiscalYearExpenditures = districtExpenditures.FiscalYearAmounts.ToDictionary(x => x.FiscalYearId);

                //for each fiscal year
                foreach (var fyMetric in districtContainer.MetricsByFiscalYear)
                {
                    //if we don't have expenditures for this year... pass
                    if (!fiscalYearExpenditures.ContainsKey(fyMetric.Key))
                    {
                        continue;
                    }

                    //calculate the expenditure per student based on average enrollment...
                    var fyExpenditures = (decimal)fiscalYearExpenditures[fyMetric.Key].Total;
                    var enrollment     = (decimal)enrollmentsByDistrict[districtContainer.District.DistrictId].Enrollment;
                    var costPerStudent = fyExpenditures / enrollment;

                    //add the metric
                    fyMetric.Value.Metrics.Add(ComparisonType.TotalCost, fyExpenditures);
                    fyMetric.Value.Metrics.Add(ComparisonType.TotalCostPerStudent, costPerStudent);

                    //now make comparisons to previous year
                    var budget         = BudgetsService.Find(districtContainer.District.DistrictId, fyMetric.Key);
                    var previousBudget = BudgetsService.FindPreviousYear(budget);

                    //only make comparison if we have data
                    if (previousBudget == null)
                    {
                        continue;
                    }

                    if (!fiscalYearExpenditures.ContainsKey(previousBudget.FiscalYearId))
                    {
                        continue;
                    }

                    var previousYearExpenditures = (decimal)fiscalYearExpenditures[previousBudget.FiscalYearId].Total;

                    var costIncrease           = fyExpenditures - previousYearExpenditures;
                    var costPerStudentIncrease = costIncrease / enrollment;


                    fyMetric.Value.Metrics.Add(ComparisonType.TotalCostIncrease, costIncrease);
                    fyMetric.Value.Metrics.Add(ComparisonType.TotalCostIncreasePerStudent, costPerStudentIncrease);
                }
            }
        }
        public void LoadComparisonData(AllDistrictComparisonsDto response)
        {
            var revenueByDistrict     = BudgetRevenuesService.GetAll().ToDictionary(x => x.DistrictId);
            var enrollmentsByDistrict = EnrollmentsService.GetAll().ToDictionary(x => x.DistrictId);

            BudgetsService.Prime();

            foreach (var districtContainer in response.DistrictFiscalYearMetrics)
            {
                //if we don't have revenues for this district... pass
                if (!revenueByDistrict.ContainsKey(districtContainer.District.DistrictId))
                {
                    continue;
                }

                //if we don't have enrollment data for this district... pass
                if (!enrollmentsByDistrict.ContainsKey(districtContainer.District.DistrictId))
                {
                    continue;
                }

                //get revenues for this district
                var districtRevenues   = revenueByDistrict[districtContainer.District.DistrictId];
                var fiscalYearRevenues = districtRevenues.FiscalYearAmounts.ToDictionary(x => x.FiscalYearId);
                var levelAmounts       = districtRevenues.Sources.ToDictionary(x => x.LevelId);

                //for each fiscal year
                foreach (var fyMetric in districtContainer.MetricsByFiscalYear)
                {
                    //if we don't have revenue for this year... pass
                    if (!fiscalYearRevenues.ContainsKey(fyMetric.Key))
                    {
                        continue;
                    }

                    //calculate the revenue per student based on average enrollment...
                    var fyRevenue         = (decimal)fiscalYearRevenues[fyMetric.Key].Total;
                    var enrollment        = enrollmentsByDistrict[districtContainer.District.DistrictId];
                    var revenuePerStudent = fyRevenue / enrollment.Enrollment;

                    //add the metric
                    fyMetric.Value.Metrics.Add(ComparisonType.TotalRevenue, fyRevenue);
                    fyMetric.Value.Metrics.Add(ComparisonType.TotalRevenuePerStudent, revenuePerStudent);

                    //try to get state revenues
                    if (levelAmounts.TryGetValue("S", out var stateRevenues))
                    {
                        var currentYearStateRevenue = stateRevenues.FiscalYearAmounts.FirstOrDefault(x => x.FiscalYearId == fyMetric.Key);
                        if (currentYearStateRevenue != null)
                        {
                            var fyStateRevenue = currentYearStateRevenue.Total;
                            fyMetric.Value.Metrics.Add(ComparisonType.StateRevenue, fyStateRevenue);

                            var stateRevenuePerStudent = currentYearStateRevenue.Total / enrollment.Enrollment;
                            fyMetric.Value.Metrics.Add(ComparisonType.StateRevenuePerStudent, stateRevenuePerStudent);

                            fyMetric.Value.Metrics.Add(ComparisonType.StateRevenuePercent, fyStateRevenue / fyRevenue);
                        }
                    }



                    //now make comparisons to previous year
                    var budget         = BudgetsService.Find(districtContainer.District.DistrictId, fyMetric.Key);
                    var previousBudget = BudgetsService.FindPreviousYear(budget);

                    //only make comparison if we have data
                    if (previousBudget == null)
                    {
                        continue;
                    }

                    if (!fiscalYearRevenues.ContainsKey(previousBudget.FiscalYearId))
                    {
                        continue;
                    }

                    var previousYearsRevenue = (decimal)fiscalYearRevenues[previousBudget.FiscalYearId].Total;

                    var revenueIncrease           = fyRevenue - previousYearsRevenue;
                    var revenuePerStudentIncrease = revenueIncrease / enrollment.Enrollment;


                    fyMetric.Value.Metrics.Add(ComparisonType.RevenueIncrease, revenueIncrease);
                    fyMetric.Value.Metrics.Add(ComparisonType.RevenueIncreasePerStudent, revenuePerStudentIncrease);
                }
            }
        }