/// <summary> /// Budget total by year /// </summary> /// <param name="programId"></param> /// <returns></returns> public async Task <SnapshotGraphDTO> GetProgramBudgetByYear(int programId) { var childPrograms = programService.GetAllChildProgramsWithParent(programId); var dto = await SnapshotQueries.CreateGetProgramBudgetByYearQuery(Context, childPrograms.Select(p => p.ProgramId).ToList()); SnapshotGraphDTO graphValues = new SnapshotGraphDTO { key = "Budget", values = dto.OrderBy(x => x.Key).ToList() }; return(graphValues); }
public void TestCreateGetProgramBudgetByYearQuery() { var sourceId = 1; var recipientId = 2; MoneyFlowSourceRecipientType programType; MoneyFlowSourceRecipientType projectType; MoneyFlowStatus actual; programType = new MoneyFlowSourceRecipientType { MoneyFlowSourceRecipientTypeId = MoneyFlowSourceRecipientType.Program.Id, TypeName = MoneyFlowSourceRecipientType.Program.Value }; projectType = new MoneyFlowSourceRecipientType { MoneyFlowSourceRecipientTypeId = MoneyFlowSourceRecipientType.Project.Id, TypeName = MoneyFlowSourceRecipientType.Project.Value }; actual = new MoneyFlowStatus { MoneyFlowStatusId = MoneyFlowStatus.Actual.Id, MoneyFlowStatusName = MoneyFlowStatus.Actual.Value }; var endDate = DateTime.UtcNow; var program = new Program { ProgramId = sourceId, Name = "program" }; var project = new Project { ProjectId = recipientId, Name = "project", ProgramId = program.ProgramId, EndDate = endDate }; var moneyFlow = new MoneyFlow { SourceProgramId = sourceId, RecipientProjectId = recipientId, SourceProgram = program, RecipientProject = project, SourceType = programType, SourceTypeId = programType.MoneyFlowSourceRecipientTypeId, RecipientType = projectType, RecipientTypeId = projectType.MoneyFlowSourceRecipientTypeId, MoneyFlowStatus = actual, MoneyFlowStatusId = actual.MoneyFlowStatusId, TransactionDate = DateTimeOffset.UtcNow, Value = 100.00m, Description = "desc", FiscalYear = 2013, MoneyFlowId = 10, ParentMoneyFlowId = 100 }; var moneyFlow2 = new MoneyFlow { SourceProgramId = sourceId, RecipientProjectId = recipientId, SourceProgram = program, RecipientProject = project, SourceType = programType, SourceTypeId = programType.MoneyFlowSourceRecipientTypeId, RecipientType = projectType, RecipientTypeId = projectType.MoneyFlowSourceRecipientTypeId, MoneyFlowStatus = actual, MoneyFlowStatusId = actual.MoneyFlowStatusId, TransactionDate = DateTimeOffset.UtcNow, Value = 150.00m, Description = "desc", FiscalYear = 2014, MoneyFlowId = 11, ParentMoneyFlowId = 110 }; project.RecipientProjectMoneyFlows.Add(moneyFlow); project.RecipientProjectMoneyFlows.Add(moneyFlow2); program.Projects.Add(project); context.Programs.Add(program); context.Projects.Add(project); context.MoneyFlows.Add(moneyFlow); context.MoneyFlows.Add(moneyFlow2); List <int> programIds = new List <int>(); programIds.Add(program.ProgramId); var results = SnapshotQueries.CreateGetProgramBudgetByYearQuery(context, programIds); Assert.AreEqual(0, results.Result.Sum(x => x.Value)); Assert.AreEqual(results.Result.Where(y => y.Key == 2013).Select(v => v.Value).FirstOrDefault(), 0); Assert.AreEqual(results.Result.Where(y => y.Key == 2014).Select(v => v.Value).FirstOrDefault(), 0); }