public static BudgetVsActualLineItem GetTotalBudgetVsActualLineItem(this GrantAllocation grantAllocation) { var budget = grantAllocation.GrantAllocationBudgetLineItems.Select(bli => bli.GrantAllocationBudgetLineItemAmount).Sum(); var expendituresFromDatamart = grantAllocation.GrantAllocationExpenditures.Select(gae => gae.ExpenditureAmount).Sum(); var invoicedToDate = grantAllocation.GrantAllocationAwards.Sum(grantAllocationAward => grantAllocationAward.GetTotalInvoicedToDate()); var budgetVsActualLineItem = new BudgetVsActualLineItem(budget, expendituresFromDatamart, invoicedToDate); return(budgetVsActualLineItem); }
public static List <BudgetVsActualLineItem> GetAllBudgetVsActualLineItemsByCostType(this GrantAllocation grantAllocation) { var budgetVsActualsLineItemList = new List <BudgetVsActualLineItem>(); foreach (var costType in CostType.GetLineItemCostTypes()) { var budget = grantAllocation.GrantAllocationBudgetLineItems.Where(bli => bli.CostTypeID == costType.CostTypeID).Select(bli => bli.GrantAllocationBudgetLineItemAmount).Sum(); var expendituresFromDatamart = grantAllocation.GrantAllocationExpenditures .Where(gae => gae.CostTypeID == costType.CostTypeID).Select(gae => gae.ExpenditureAmount).Sum(); var invoicedToDate = grantAllocation.GrantAllocationAwards.Sum(grantAllocationAward => grantAllocationAward.GetInvoicedToDateByCostType(costType)); var budgetVsActualLineItem = new BudgetVsActualLineItem(costType, budget, expendituresFromDatamart, invoicedToDate); budgetVsActualsLineItemList.Add(budgetVsActualLineItem); } return(budgetVsActualsLineItemList); }