Set<String> defaultGraphName, Map<LocalDate, EventStatsRow> periodToRowForAvgCalculation, EventStatsRow row, LocalDate today, CompanyGraphData resultRow, StatisticsResponseDto<EventStatsRow> statResult, LocalDate rowDate, GraphData calcData, BiFunction<LocalDate, Long, LocalDate> periodMinusFunc, Map<String, Integer> graphNameToPartialPeriods, int daysInPeriod, Set<String> otherGraphNamesToCheck, DateRangeOptionsDto dateRangeOptionsDto) { Set<PackKpiType> types = mainGraphs ? grd.getMainTypes() : grd.getOtherTypes(); for (PackType type : types) { switch (type) { case CPI -> processCpiColumn(grd, graphNames, defaultGraphName, row, today, resultRow, rowDate, calcData, periodMinusFunc, graphNameToPartialPeriods, kpiType); case RR -> processRrColumn(grd, graphNames, defaultGraphName, periodToRowForAvgCalculation, row, today, resultRow, statResult, rowDate, calcData, periodMinusFunc, graphNameToPartialPeriods, daysInPeriod, kpiType, appEventCohortDays, dateRangeOptionsDto); case ROAS -> processRoasColumn(grd, graphNames, defaultGraphName, periodToRowForAvgCalculation, row, today, resultRow, statResult, rowDate, calcData, periodMinusFunc, graphNameToPartialPeriods, daysInPeriod, kpiType, appEventCohortDays, dateRangeOptionsDto); case CVR -> processCvrColumn(grd, graphNames, defaultGraphName, periodToRowForAvgCalculation, row, today, resultRow, statResult, rowDate, calcData, periodMinusFunc, graphNameToPartialPeriods, daysInPeriod, kpiType, dynamicCohortDays, otherGraphNamesToCheck, dateRangeOptionsDto); case Cost -> processCostColumn(grd, graphNames, defaultGraphName, periodToRowForAvgCalculation, row, today, resultRow, statResult, rowDate, calcData, periodMinusFunc, graphNameToPartialPeriods, daysInPeriod, kpiType, dynamicCohortDays, otherGraphNamesToCheck, dateRangeOptionsDto); case CPA -> processCPAColumn(grd, graphNames, defaultGraphName, periodToRowForAvgCalculation, row, today, resultRow, statResult, rowDate, calcData, periodMinusFunc, graphNameToPartialPeriods, daysInPeriod, kpiType, dateRangeOptionsDto); } }