示例#1
0
        public ForecastSummaryResponse GetSummary(string forecastId, string periods)
        {
            var response = new ForecastSummaryResponse();

            try {
                var sheetId     = new Guid(forecastId);
                var sheet       = SheetRepository.GetSheet(sheetId);
                var periodInfos = PeriodRepository.GetForecastPeriods(
                    ConvertStringIdentifiersToGuidList(periods),
                    sheet.PeriodTypeId);
                var summaryCells = ForecastSummary.GetSummary(sheetId, periodInfos.Select(p => p.Id)).ToList();
                var cellsToCalc  = GetCellsToCalc(summaryCells, periodInfos);
                if (UserConnection.GetIsFeatureEnabled("CalcTotalByFormula"))
                {
                    var formulaSummaryCells = FormulaSummaryCalculator.CalcFormulaSummary(
                        new FormulaSummaryParams {
                        ForecastId = sheetId,
                        Cells      = cellsToCalc
                    });
                    summaryCells.AddRange(formulaSummaryCells);
                }
                response.Summary = ConvertCellsToSummary(summaryCells);
            } catch (Exception ex) {
                response.Exception = ex;
            }
            return(response);
        }
        private ForecastSummaryResponse ProcessGetForecastSummary(ForecastSummaryRequestData requestData)
        {
            var response = new ForecastSummaryResponse();

            try {
                var sheet        = SheetRepository.GetSheet(requestData.ForecastId);
                var summaryCells = ForecastSummaryProvider.GetSummary(sheet, new FilterConfig {
                    PeriodIds = requestData.Periods
                });
                var record = new TreeTableDataItem {
                    ColumnValues = summaryCells.ToList()
                };
                if (UserConnection.GetIsFeatureEnabled("ForecastSummaryFormula"))
                {
                    SummaryColumnCalculator.ApplySummaryData(UserConnection, requestData.ForecastId,
                                                             new [] { record });
                }
                response.Summary = ConvertCellsToSummary(record.ColumnValues);
            } catch (Exception ex) {
                response.Exception = ex;
            }
            return(response);
        }