Example #1
0
 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());
 }
Example #4
0
        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);
        }
Example #8
0
        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);
        }