public QuarterlyHeadcountComparisonRow Calculate(Group group, DateTime startDateTime, DateTime endDateTime, int comparisonYear) { var quarters = QuartersHelper.GetQuarterStartEndForYear(startDateTime.Year); var quarterResults = QuarterlyHeadcountComparisonRow.GetQuarteredStatistics(@group, startDateTime, endDateTime, quarters); var comparisonStartDateTime = new DateTime(comparisonYear, startDateTime.Month, startDateTime.Day); var comparisonEndDateTime = new DateTime(comparisonYear, endDateTime.Month, endDateTime.Day); var comparisonQuarters = QuartersHelper.GetQuarterStartEndForYear(comparisonYear).FilterQuartersToRange(comparisonStartDateTime, comparisonEndDateTime); var comparisonQuartersResults = QuarterlyHeadcountComparisonRow.GetQuarteredStatistics(group, comparisonStartDateTime, comparisonEndDateTime, comparisonQuarters); return(new QuarterlyHeadcountComparisonRow(group.Name, quarterResults, comparisonQuartersResults, comparisonYear)); }
private void CreateRowsForGroupType(GroupType groupType, List <QuarterlyHeadcountComparisonRow> rows) { int comparisonYear = ddlComparisonYear.SelectedValue.AsInteger(); var groups = new ChildCheckInGroupGenerator().Get(groupType); // Add row to mark group type var groupTypeTitleRow = new QuarterlyHeadcountComparisonRow(groupType.Name); rows.Add(groupTypeTitleRow); // Add row for each group in groupType var groupRows = new List <QuarterlyHeadcountComparisonRow>(); groupRows.AddRange( groups.Select( g => { return(_statisticCalculator.Calculate(g, _startDateTime, _endDateTime, comparisonYear)); })); // Generate total row var totalQuarter = new QuarterInformation(groupRows.Sum(qi => qi.Quarter.YearTotal), groupRows.Sum(qi => qi.Quarter.Q1Total), groupRows.Sum(qi => qi.Quarter.Q2Total), groupRows.Sum(qi => qi.Quarter.Q3Total), groupRows.Sum(qi => qi.Quarter.Q4Total), groupRows.Sum(qi => qi.Quarter.Average)); var comparisonQuarter = new QuarterInformation(groupRows.Sum(qi => qi.ComparisonQuarter.YearTotal), groupRows.Sum(qi => qi.ComparisonQuarter.Q1Total), groupRows.Sum(qi => qi.ComparisonQuarter.Q2Total), groupRows.Sum(qi => qi.ComparisonQuarter.Q3Total), groupRows.Sum(qi => qi.ComparisonQuarter.Q4Total), groupRows.Sum(qi => qi.ComparisonQuarter.Average)); var totalRow = new QuarterlyHeadcountComparisonRow(totalQuarter, comparisonQuarter, comparisonYear); // Add rows to the list of rows gStatistics will bind rows.AddRange(groupRows); rows.Add(totalRow); }