Beispiel #1
0
        /// <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);
        }