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); }