/// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public List <DistrictExpendituresDto> GetAll()
        {
            //very tedious way of writing a sql pivot in C#

            var fiscalYears   = FiscalYearRepository.GetYearsBetween(FiscalYearStart, FiscalYearEnd);
            var budgetsLookup = BudgetsRepository.GetYearsBetween(FiscalYearStart, FiscalYearEnd).ToDictionary(x => x.BudgetId);

            var districtExpenditures = new List <DistrictExpendituresDto>();

            var allExpenditures = BudgetExpendituresRepository.GetAll();

            foreach (var districtGroup in allExpenditures.GroupBy(x => budgetsLookup[x.BudgetId].DistrictId).OrderBy(x => x.Key))
            {
                districtExpenditures.Add(GenerateYearlyDistrictExpenditures(
                                             districtGroup.Key,
                                             districtGroup.ToArray(),
                                             budgetsLookup, fiscalYears
                                             ));
            }

            return(districtExpenditures);
        }
 public void Prime()
 {
     All         = All ?? BudgetsRepository.GetYearsBetween(FiscalYearsService.GetMin(), FiscalYearsService.GetMax());
     FiscalYears = FiscalYearsService.GetSupportedYears();
 }