public void Execute( IList <FundingSummaryModel> reportOutput, FundingReportRow row, IEnumerable <SupplementaryDataYearlyModel> esfDataModels, IEnumerable <FM70PeriodisedValuesYearlyModel> ilrData) { reportOutput.Add(new FundingSummaryModel(row.Title, HeaderType.All, 2)); }
public void Execute( IList <FundingSummaryModel> reportOutput, FundingReportRow row, IEnumerable <SupplementaryDataYearlyModel> esfDataModels, IEnumerable <FM70PeriodisedValuesYearlyModel> ilrData) { List <string> deliverableCodes = row.DeliverableCode?.Split(',').Select(x => x.Trim()) .Where(x => !string.IsNullOrWhiteSpace(x)).ToList(); List <FundingSummaryModel> reportRowsToTotal = deliverableCodes == null? reportOutput.Where(r => r.ExcelRecordStyle == 2).ToList() : reportOutput.Where(r => deliverableCodes.Contains(r.DeliverableCode) && r.ExcelRecordStyle == 4).ToList(); if (!reportRowsToTotal.Any()) { return; } var rowModel = new FundingSummaryModel(row.Title, HeaderType.None, 2) { DeliverableCode = row.DeliverableCode, ExcelRecordStyle = 2 }; if (row.RowType == RowType.FinalTotal) { rowModel.ExcelHeaderStyle = 0; rowModel.ExcelRecordStyle = 0; } var yearlyValueTotals = new List <FundingSummaryReportYearlyValueModel>(); foreach (var yearlyValue in reportRowsToTotal.First().YearlyValues) { var yearlyModel = new FundingSummaryReportYearlyValueModel { FundingYear = yearlyValue.FundingYear }; List <FundingSummaryReportYearlyValueModel> periodValues = reportRowsToTotal.SelectMany(r => r.YearlyValues).ToList(); for (var i = 0; i < (periodValues.FirstOrDefault()?.Values.Length ?? 0); i++) { yearlyModel.Values[i] = GetPeriodTotals(periodValues, i); } yearlyValueTotals.Add(yearlyModel); } rowModel.YearlyValues = yearlyValueTotals; yearlyValueTotals.ForEach(v => { rowModel.Totals.Add(v.Values.Sum()); }); reportOutput.Add(rowModel); }
public void Execute( int endYear, IList <FundingSummaryModel> reportOutput, FundingReportRow row, IEnumerable <SupplementaryDataYearlyModel> esfDataModels, IEnumerable <FM70PeriodisedValuesYearly> ilrData) { reportOutput.Add(new FundingSummaryModel()); }
public void Execute( int endYear, IList <FundingSummaryModel> reportOutput, FundingReportRow row, IEnumerable <SupplementaryDataYearlyModel> esfDataModels, IEnumerable <FM70PeriodisedValuesYearly> ilrData) { FundingSummaryModel rowModel = new FundingSummaryModel(row.Title, HeaderType.None, 3); FundingSummaryModel grandTotalRow = reportOutput.FirstOrDefault(r => r.Title == "<ESF-1> Total (£)"); if (row.RowType == RowType.FinalCumulative) { rowModel.ExcelHeaderStyle = 6; rowModel.ExcelRecordStyle = 6; } if (grandTotalRow == null) { reportOutput.Add(rowModel); return; } var yearlyValues = InitialiseFundingYears(endYear, esfDataModels); var cumulativeTotal = 0M; foreach (var year in grandTotalRow.YearlyValues) { var yearValues = yearlyValues.FirstOrDefault(yv => yv.FundingYear == year.FundingYear); if (yearValues == null) { continue; } for (var i = 0; i < year.Values.Count; i++) { cumulativeTotal += year.Values[i]; yearValues.Values.Add(cumulativeTotal); } } decimal?yearEndCumulative = 0M; for (var index = 0; index < grandTotalRow.Totals.Count - 1; index++) { var total = grandTotalRow.Totals[index]; yearEndCumulative += total ?? 0M; rowModel.Totals.Add(yearEndCumulative); } rowModel.Totals.Add(yearEndCumulative); rowModel.YearlyValues = yearlyValues; reportOutput.Add(rowModel); }
public void Execute( IList <FundingSummaryModel> reportOutput, FundingReportRow row, IEnumerable <SupplementaryDataYearlyModel> esfDataModels, IEnumerable <FM70PeriodisedValuesYearlyModel> ilrData) { FundingSummaryModel rowModel = new FundingSummaryModel(row.Title, HeaderType.None, 3); FundingSummaryModel grandTotalRow = reportOutput.FirstOrDefault(r => r.Title == "<ESF-1> Total (£)"); if (row.RowType == RowType.FinalCumulative) { rowModel.ExcelHeaderStyle = 0; rowModel.ExcelRecordStyle = 0; } if (grandTotalRow == null) { reportOutput.Add(rowModel); return; } var yearlyValues = new List <FundingSummaryReportYearlyValueModel>(); var cumulativeTotal = 0M; foreach (var year in grandTotalRow.YearlyValues) { var yearValues = new FundingSummaryReportYearlyValueModel(); for (var i = 0; i < 12; i++) { cumulativeTotal += year.Values[i]; yearValues.Values[i] = cumulativeTotal; } yearlyValues.Add(yearValues); } rowModel.YearlyValues = yearlyValues; var yearEndCumulative = 0M; for (var index = 0; index < grandTotalRow.Totals.Count - 1; index++) { var total = grandTotalRow.Totals[index]; yearEndCumulative += total; rowModel.Totals.Add(yearEndCumulative); } reportOutput.Add(rowModel); }
public void Execute( int endYear, IList <FundingSummaryModel> reportOutput, FundingReportRow row, IEnumerable <SupplementaryDataYearlyModel> esfDataModels, IEnumerable <FM70PeriodisedValuesYearly> ilrData) { List <string> deliverableCodes = row.DeliverableCode?.Split(',').Select(x => x.Trim()) .Where(x => !string.IsNullOrWhiteSpace(x)).ToList(); List <FundingSummaryModel> reportRowsToTotal = deliverableCodes == null? reportOutput.Where(r => r.IsDataRow).ToList() : reportOutput.Where(r => deliverableCodes.Contains(r.DeliverableCode) && r.IsDataRow && (string.IsNullOrEmpty(row.CodeBase) || r.CodeBase == row.CodeBase)).ToList(); if (!reportRowsToTotal.Any()) { return; } var rowModel = new FundingSummaryModel(row.Title, HeaderType.None, 3) { DeliverableCode = row.DeliverableCode, ExcelRecordStyle = 3, ExcelHeaderStyle = 3 }; if (string.IsNullOrEmpty(row.CodeBase)) { rowModel.ExcelHeaderStyle = 2; rowModel.ExcelRecordStyle = 2; } if (row.RowType == RowType.FinalTotal) { rowModel.ExcelHeaderStyle = 6; rowModel.ExcelRecordStyle = 6; } var yearlyValueTotals = InitialiseFundingYears(endYear, esfDataModels); foreach (var year in reportRowsToTotal.First().YearlyValues) { var yearValues = yearlyValueTotals.FirstOrDefault(yv => yv.FundingYear == year.FundingYear); if (yearValues == null) { continue; } List <FundingSummaryReportYearlyValueModel> periodValues = reportRowsToTotal.SelectMany(r => r.YearlyValues) .Where(r => r.FundingYear == year.FundingYear).ToList(); if (!periodValues.Any()) { continue; } var periodValueCount = periodValues.First().Values.Count; for (var i = 0; i < periodValueCount; i++) { yearValues.Values.Add(periodValues.Sum(model => model.Values.ElementAtOrDefault(i))); } } yearlyValueTotals.ForEach(v => { rowModel.Totals.Add(v.Values.Sum()); }); rowModel.YearlyValues = yearlyValueTotals; rowModel.GrandTotal = rowModel.Totals.Sum() ?? 0M; reportOutput.Add(rowModel); }
public void Execute( int endYear, IList <FundingSummaryModel> reportOutput, FundingReportRow row, IEnumerable <SupplementaryDataYearlyModel> esfDataModels, IEnumerable <FM70PeriodisedValuesYearly> ilrData) { var reportRow = new FundingSummaryModel { Title = row.Title, DeliverableCode = row.DeliverableCode, CodeBase = row.CodeBase }; var supplementaryDataYearlyModels = esfDataModels.ToList(); var reportRowYearlyValues = InitialiseFundingYears(endYear, supplementaryDataYearlyModels); var codeBase = row.CodeBase; if (codeBase == EsfCodeBase) { foreach (var strategy in _esfStrategies) { if (row.CostType != null) { if (!strategy.IsMatch(row.DeliverableCode, row.CostType)) { continue; } } if (!strategy.IsMatch(row.DeliverableCode)) { continue; } strategy.Execute(supplementaryDataYearlyModels, reportRowYearlyValues); break; } } else { foreach (var strategy in _ilrStrategies) { if (row.AttributeNames != null) { if (!strategy.IsMatch(row.DeliverableCode, row.AttributeNames)) { continue; } } if (!strategy.IsMatch(row.DeliverableCode)) { continue; } strategy.Execute(ilrData, reportRowYearlyValues); break; } } reportRowYearlyValues.ForEach(v => { reportRow.Totals.Add(v.Values.Sum()); }); reportRow.YearlyValues = reportRowYearlyValues; reportRow.GrandTotal = reportRow.Totals.Sum() ?? 0M; reportRow.IsDataRow = true; reportOutput.Add(reportRow); }
public void Execute( IList <FundingSummaryModel> reportOutput, FundingReportRow row, IEnumerable <SupplementaryDataYearlyModel> esfDataModels, IEnumerable <FM70PeriodisedValuesYearlyModel> ilrData) { var reportRow = new FundingSummaryModel { Title = row.Title, DeliverableCode = row.DeliverableCode }; var reportRowYearlyValues = new List <FundingSummaryReportYearlyValueModel>(); var codeBase = row.CodeBase; if (codeBase == EsfCodeBase) { foreach (var strategy in _esfStrategies) { if (row.ReferenceType != null) { if (!strategy.IsMatch(row.DeliverableCode, row.ReferenceType)) { continue; } } if (!strategy.IsMatch(row.DeliverableCode)) { continue; } strategy.Execute(esfDataModels, reportRowYearlyValues); break; } } else { foreach (var strategy in _ilrStrategies) { if (row.AttributeNames != null) { if (!strategy.IsMatch(row.DeliverableCode, row.AttributeNames)) { continue; } } if (!strategy.IsMatch(row.DeliverableCode)) { continue; } strategy.Execute(ilrData, reportRowYearlyValues); break; } } reportRow.YearlyValues = reportRowYearlyValues; reportRowYearlyValues.ForEach(v => { reportRow.Totals.Add(v.Values.Sum()); }); reportOutput.Add(reportRow); }