internal static List <GraphSeries> GetKpiDataNew(Dictionary <string, string> parameters, KpiCalculationType kpiType, FutureTrendDataType futureTrendDataType) { using (var dataContext = new MarsDBDataContext(MarsConnection.ConnectionString)) { //var rawData = GetRawKpiDataNew(dataContext, parameters, futureTrendDataType); var rawData = GenericSizingDataAccess.GetKpiRawData(dataContext, parameters, futureTrendDataType); var kpiGraphingData = from gd in rawData orderby gd.ReportDate ascending select new KpiGraphDataHolder { ReportDate = gd.ReportDate, Kpi = kpiType == KpiCalculationType.OperationalUtilization ? gd.ExpectedFleet == 0 ? 0 : gd.Forecast / gd.ExpectedFleet : kpiType == KpiCalculationType.IdleFleetPercentage ? gd.ExpectedFleet == 0 ? 0 : (gd.ExpectedFleet - gd.Forecast) / gd.ExpectedFleet : kpiType == KpiCalculationType.IdleFleet ? gd.ExpectedFleet - gd.Forecast : 0 }; return(GraphKpiData(kpiGraphingData)); } }
internal static string GetKpiCsvHeader(Dictionary <string, string> parameters, KpiCalculationType kpiType, FutureTrendDataType futureTrendDataType) { var csvHeader = new StringBuilder(); csvHeader.Append(string.Format("{0}, {1},", CsvExportHeaders.ReportDate, CsvExportHeaders.Country)); if (!string.IsNullOrEmpty(parameters[ParameterNames.Pool])) { csvHeader.Append(CsvExportHeaders.Pool + ","); } if (!string.IsNullOrEmpty(parameters[ParameterNames.LocationGroup])) { csvHeader.Append(CsvExportHeaders.LocationGroup + ","); } if (!string.IsNullOrEmpty(parameters[ParameterNames.CarSegment])) { csvHeader.Append(CsvExportHeaders.CarSegment + ","); } if (!string.IsNullOrEmpty(parameters[ParameterNames.CarClassGroup])) { csvHeader.Append(CsvExportHeaders.CarClassGroup + ","); } if (!string.IsNullOrEmpty(parameters[ParameterNames.CarClass])) { csvHeader.Append(CsvExportHeaders.CarClass + ","); } switch (kpiType) { case KpiCalculationType.OperationalUtilization: switch (futureTrendDataType) { case FutureTrendDataType.Constrained: csvHeader.Append(CsvExportHeaders.UltilizationConstrained); break; case FutureTrendDataType.Unconstrained: csvHeader.Append(CsvExportHeaders.UltilizationUnonstrained); break; case FutureTrendDataType.AlreadyBooked: csvHeader.Append(CsvExportHeaders.UltilizationAlreadyBooked); break; } break; case KpiCalculationType.IdleFleet: csvHeader.Append(CsvExportHeaders.IdleFleet); break; case KpiCalculationType.IdleFleetPercentage: csvHeader.Append(CsvExportHeaders.IdleFleetPercentage); break; } return(csvHeader.ToString()); }
internal static string GetKpiExcelData(Dictionary <string, string> parameters, KpiCalculationType kpiType, FutureTrendDataType futureTrendDataType) { var csvData = new StringBuilder(); using (var dataContext = new MarsDBDataContext(MarsConnection.ConnectionString)) { var additionalColumns = GenerateAdditionalColumns(parameters, dataContext); //var rawData = GetRawKpiDataNew(dataContext, parameters, futureTrendDataType, true); var rawData = GenericSizingDataAccess.GetKpiRawData(dataContext, parameters, futureTrendDataType); var groupedData = from rw in rawData select new KpiExcelDataHolder { ReportDate = rw.ReportDate, Country = rw.Country, Kpi = kpiType == KpiCalculationType.OperationalUtilization ? rw.ExpectedFleet == 0 ? 0 : (rw.Forecast / rw.ExpectedFleet) * 100 : kpiType == KpiCalculationType.IdleFleetPercentage ? rw.ExpectedFleet == 0 ? 0 : (rw.ExpectedFleet - rw.Forecast) * 100 / rw.ExpectedFleet : kpiType == KpiCalculationType.IdleFleet ? rw.ExpectedFleet - rw.Forecast : 0 }; var excelData = from gd in groupedData.OrderBy(d => d.ReportDate).ThenBy(d => d.Country) select string.Format("{0},{1},{2}{3}\n", gd.ReportDate.Value.ToShortDateString(), gd.Country, additionalColumns, Math.Round(gd.Kpi, 0, MidpointRounding.AwayFromZero)); excelData.ToList().ForEach(d => csvData.Append(d.ToString())); return(csvData.ToString()); } }
internal static string GetFrozenZoneKpiExcelData(Dictionary <string, string> parameters, KpiCalculationType kpiType, FutureTrendDataType futureTrendDataType) { var csvData = new StringBuilder(); using (var dataContext = new MarsDBDataContext(MarsConnection.ConnectionString)) { var additionalColumns = GenerateAdditionalColumns(parameters, dataContext); var rawData = GetFrozenZoneRawKpiData(dataContext, parameters); var groupedData = from rw in rawData group rw by new { rw.ReportDate, rw.Country } into gd join c in dataContext.COUNTRies on gd.Key.Country equals c.country1 select new KpiExcelDataHolder { ReportDate = gd.Key.ReportDate, Country = c.country_description, Kpi = kpiType == KpiCalculationType.OperationalUtilization ? gd.Sum(d => d.OperationalFleet) == 0 ? 0 : gd.Sum(d => d.OnRent) * 100 / gd.Sum(d => d.OperationalFleet) : kpiType == KpiCalculationType.IdleFleetPercentage ? gd.Sum(d => d.TotalFleet) == 0 ? 0 : gd.Sum(d => d.IdleFleet) * 100 / gd.Sum(d => d.TotalFleet) : kpiType == KpiCalculationType.IdleFleet ? gd.Sum(d => d.IdleFleet) : 0 }; var excelData = from gd in groupedData.OrderBy(d => d.ReportDate).ThenBy(d => d.Country) select string.Format("{0},{1},{2}{3}\n", gd.ReportDate.Value.ToShortDateString(), gd.Country, additionalColumns, Math.Round(gd.Kpi, 0, MidpointRounding.AwayFromZero)); excelData.ToList().ForEach(d => csvData.Append(d.ToString())); return(csvData.ToString()); } }
private static List <GraphSeries> GetFutureTrendSeriesData(IQueryable <FutureTrendGraphDataHolder> futureTrendDataFromDatabase, string forecastSeriesName, FutureTrendDataType dataType) { var dateTimes = new List <object>(); var expected = new List <double>(); var nessesary = new List <double>(); var forecast = new List <double>(); foreach (var ft in futureTrendDataFromDatabase) { dateTimes.Add(ft.ReportDate); if (ft.Expected > 0) { expected.Add((double)ft.Expected); } nessesary.Add((double)ft.Nessesary); forecast.Add((double)ft.Forecast); } Color forecastColour; switch (dataType) { case FutureTrendDataType.Constrained: forecastColour = Color.MidnightBlue; break; case FutureTrendDataType.Unconstrained: forecastColour = Color.CornflowerBlue; break; case FutureTrendDataType.AlreadyBooked: forecastColour = Color.YellowGreen; break; default: forecastColour = Color.Black; break; } var seriesInformation = new List <GraphSeries>() { new GraphSeries("Expected") { GraphColour = Color.DarkGreen, Xvalue = dateTimes, Yvalue = expected }, new GraphSeries("Necessary") { GraphColour = Color.Brown, Xvalue = dateTimes, Yvalue = nessesary }, new GraphSeries(forecastSeriesName) { GraphColour = forecastColour, Xvalue = dateTimes, Yvalue = forecast } }; return(seriesInformation); }
internal static List <GraphSeries> GetFutureTrendGraphingData(Dictionary <string, string> parameters, FutureTrendDataType dataType, int scenarioId, DataType timeZone) { _timeZone = timeZone; if (_timeZone == DataType.FrozenZone) { parameters[ParameterNames.ToDate] = SetFrozenZoneToDateLimit(DateTime.Parse(parameters[ParameterNames.ToDate])); } using (var dataContext = new MarsDBDataContext(MarsConnection.ConnectionString)) { dataContext.CommandTimeout = TIMEOUT; IQueryable <FutureTrendOrSupplyAnalysisRawDataHolder> groupedData; if (_timeZone == DataType.DailyChanging) { //groupedData = new FutureTrendRepository().GetData(parameters, scenarioId); groupedData = GenericSizingDataAccess.GetFutureTrendGroupyByDayData(dataContext, parameters, scenarioId).OrderBy(d => d.ReportDate); } else { var joinedData = GetRawFrozenZoneFutureTrendData(dataContext, parameters, (byte)scenarioId); groupedData = from fc in joinedData group fc by new { fc.ReportDate } into g orderby g.Key.ReportDate ascending select new FutureTrendOrSupplyAnalysisRawDataHolder { ReportDate = g.Key.ReportDate, Constrained = g.Sum(c => c.Constrained), Unconstrained = g.Sum(c => c.Unconstrained), Booked = g.Sum(c => c.Booked), NessesaryConstrained = g.Sum(c => c.NessesaryConstrained), NessesaryUnconstrained = g.Sum(c => c.NessesaryUnconstrained), NessesaryBooked = g.Sum(c => c.NessesaryBooked), Expected = g.Sum(c => c.Expected) }; } string foreCastSeriesName; IQueryable <FutureTrendGraphDataHolder> data; switch (dataType) { case FutureTrendDataType.Constrained: data = from gd in groupedData select new FutureTrendGraphDataHolder { ReportDate = gd.ReportDate, Forecast = gd.Constrained, Nessesary = gd.NessesaryConstrained, Expected = gd.Expected, }; foreCastSeriesName = "Constrained Forecast"; break; case FutureTrendDataType.Unconstrained: data = from gd in groupedData select new FutureTrendGraphDataHolder { ReportDate = gd.ReportDate, Forecast = gd.Unconstrained, Nessesary = gd.NessesaryUnconstrained, Expected = gd.Expected }; foreCastSeriesName = "Unconstrained Forecast"; break; case FutureTrendDataType.AlreadyBooked: data = from gd in groupedData select new FutureTrendGraphDataHolder { ReportDate = gd.ReportDate, Forecast = gd.Booked, Nessesary = gd.NessesaryBooked, Expected = gd.Expected }; foreCastSeriesName = "Already Booked Forecast"; break; default: throw new ArgumentException("Invalid Future Trend Datatype selected"); } return(GetFutureTrendSeriesData(data, foreCastSeriesName, dataType)); } }
private static IEnumerable <FutureTrendExcelDataHolder> GetJoinedExcelRawData(MarsDBDataContext dataContext , IQueryable <FutureTrendOrSupplyAnalysisRawDataHolder> joinedData, FutureTrendDataType dataType) { //var sss = joinedData.Where(d => d.LocationGroupId == 2).ToList(); var excelData = from jd in joinedData join lg in dataContext.CMS_LOCATION_GROUPs on jd.LocationGroupId equals lg.cms_location_group_id into lgs from locationGroups in lgs.DefaultIfEmpty() join cs in dataContext.CAR_GROUPs on jd.CarClassId equals cs.car_group_id into cgs from carGroups in cgs.DefaultIfEmpty() join ctr in dataContext.COUNTRies on jd.Country equals ctr.country1 select new FutureTrendExcelDataHolder { ReportDate = jd.ReportDate, CountryId = jd.Country, CountryName = ctr.country_description, Pool = locationGroups.CMS_POOL.cms_pool1 ?? UNKNOWN, PoolId = locationGroups.cms_pool_id, LocationGroupId = jd.LocationGroupId, LocationGroup = locationGroups.cms_location_group1 ?? UNKNOWN, CarSegment = carGroups.CAR_CLASS.CAR_SEGMENT.car_segment1 ?? UNKNOWN, CarSegmentId = carGroups.CAR_CLASS.car_segment_id, CarClassGroup = carGroups.CAR_CLASS.car_class1 ?? UNKNOWN, CarClassGroupId = carGroups.car_class_id, CarClass = carGroups.car_group1, CarClassId = jd.CarClassId, ExpectedFleet = jd.Expected, Forecast = dataType == FutureTrendDataType.Constrained ? jd.Constrained : dataType == FutureTrendDataType.Unconstrained ? jd.Unconstrained : jd.Booked, NessesaryFleet = dataType == FutureTrendDataType.Constrained ? jd.NessesaryConstrained : dataType == FutureTrendDataType.Unconstrained ? jd.NessesaryUnconstrained : jd.NessesaryBooked }; return(excelData); }
private static string GenerateExcelDataFromRaw(MarsDBDataContext dataContext, IQueryable <FutureTrendOrSupplyAnalysisRawDataHolder> joinedRawData, int siteGroup, int fleetGroup, FutureTrendDataType dataType) { var csvData = new StringBuilder(); var fullDataSet = GetJoinedExcelRawData(dataContext, joinedRawData, dataType); var forecastHeader = string.Empty; switch (dataType) { case FutureTrendDataType.Constrained: forecastHeader = CsvExportHeaders.Constrained; break; case FutureTrendDataType.Unconstrained: forecastHeader = CsvExportHeaders.Unconstrained; break; case FutureTrendDataType.AlreadyBooked: forecastHeader = CsvExportHeaders.AlreadyBooked; break; } csvData.Append(CsvExportMethods.GetExportHeaders(siteGroup, fleetGroup)); csvData.Append(string.Format("{0},{1},{2}\n", forecastHeader, CsvExportHeaders.NessesaryFleet, CsvExportHeaders.ExpectedFleet)); var orderedData = fullDataSet.GroupByMany(CsvExportMethods.GetGroupingColumns(siteGroup, fleetGroup)).OrderBy(d => d.Key); var keyList = new List <string>(); foreach (var gr in orderedData) { CheckSubGroup(gr, keyList, csvData); } return(csvData.ToString()); }
public static IQueryable <KpiRawDataHolder> GetKpiRawData(MarsDBDataContext dc, Dictionary <string, string> parameters , FutureTrendDataType futureTrendDataType, bool excelRequest = false) { var cmsData = GetRawSizingCmsAndNessFleetData(dc, parameters); var fleetData = GetFleetSizeFutureTrendData(dc, parameters); IQueryable <KpiRawDataHolder> cmsGroupedData; IQueryable <KpiRawDataHolder> fleetGroupedData; IQueryable <KpiRawDataHolder> combinedData; if (parameters[ParameterNames.Country] == string.Empty && excelRequest) { cmsGroupedData = from cd in cmsData group cd by new { cd.Date, cd.Country } into gd select new KpiRawDataHolder { ReportDate = gd.Key.Date, Forecast = gd.Sum(d => futureTrendDataType == FutureTrendDataType.Constrained ? d.Constrained ?? 0 : futureTrendDataType == FutureTrendDataType.Unconstrained ? d.Unconstrained ?? 0 : futureTrendDataType == FutureTrendDataType.AlreadyBooked ? d.AlreadyBooked ?? 0 : 0), Country = gd.Key.Country }; fleetGroupedData = from fd in cmsData group fd by new { fd.Date, fd.Country } into gd select new KpiRawDataHolder { ReportDate = gd.Key.Date, ExpectedFleet = gd.Sum(d => d.ExpectedFleet) ?? 0, Country = gd.Key.Country }; combinedData = from cd in cmsGroupedData join fd in fleetGroupedData on new { cd.ReportDate, cd.Country } equals new { fd.ReportDate, fd.Country } select new KpiRawDataHolder { ReportDate = cd.ReportDate, Forecast = cd.Forecast, ExpectedFleet = fd.ExpectedFleet, Country = cd.Country }; } else { cmsGroupedData = from cd in cmsData group cd by cd.Date into gd select new KpiRawDataHolder { ReportDate = gd.Key, Forecast = gd.Sum(d => futureTrendDataType == FutureTrendDataType.Constrained ? d.Constrained ?? 0 : futureTrendDataType == FutureTrendDataType.Unconstrained ? d.Unconstrained ?? 0 : futureTrendDataType == FutureTrendDataType.AlreadyBooked ? d.AlreadyBooked ?? 0 : 0), Country = gd.First().Country }; fleetGroupedData = from fd in fleetData group fd by fd.Date into gd select new KpiRawDataHolder { ReportDate = gd.Key, ExpectedFleet = gd.Sum(d => d.ExpectedFleet) ?? 0, Country = gd.First().Country }; combinedData = from cd in cmsGroupedData join fd in fleetGroupedData on cd.ReportDate equals fd.ReportDate select new KpiRawDataHolder { ReportDate = cd.ReportDate, Forecast = cd.Forecast, ExpectedFleet = fd.ExpectedFleet, Country = cd.Country }; } return(combinedData); }
internal static string GetFutureTrendExcelData(Dictionary <string, string> parameters, FutureTrendDataType dataType, int scenarioId, int siteGroup, int fleetGroup, DataType timeZone) { var toDate = timeZone == DataType.FrozenZone ? SetFrozenZoneToDateLimit(DateTime.Parse(parameters[ParameterNames.ToDate])) : parameters[ParameterNames.ToDate]; var newParameters = new Dictionary <string, string> { { ParameterNames.Country, parameters[ParameterNames.Country] }, { ParameterNames.ToDate, toDate }, { ParameterNames.FromDate, parameters[ParameterNames.FromDate] } }; using (var dataContext = new MarsDBDataContext(MarsConnection.ConnectionString)) { var joinedData = timeZone == DataType.DailyChanging ? GenericSizingDataAccess.GetFutureTrendRawData(dataContext, parameters, scenarioId) : GetRawFrozenZoneFutureTrendData(dataContext, newParameters, (byte)scenarioId); return(GenerateExcelDataFromRaw(dataContext, joinedData, siteGroup, fleetGroup, dataType)); } }
internal static List <GraphSeries> GetSupplyAnalysisData(Dictionary <string, string> parameters, FutureTrendDataType dataType, int scenarioId, DataType timeZone) { using (var dataContext = new MarsDBDataContext(MarsConnection.ConnectionString)) { if (timeZone == DataType.FrozenZone) { parameters[ParameterNames.ToDate] = FutureTrendDataAccess.SetFrozenZoneToDateLimit(DateTime.Parse(parameters[ParameterNames.ToDate])); } IQueryable <FutureTrendOrSupplyAnalysisRawDataHolder> groupedData; if (timeZone == DataType.DailyChanging) { //groupedData = new FutureTrendRepository().GetData(parameters, scenarioId); groupedData = GenericSizingDataAccess.GetFutureTrendGroupyByDayData(dataContext, parameters, scenarioId); } else { var joinedData = FutureTrendDataAccess.GetRawFrozenZoneFutureTrendData(dataContext, parameters, (byte)scenarioId); groupedData = from fc in joinedData group fc by new { fc.ReportDate } into g orderby g.Key.ReportDate ascending select new FutureTrendOrSupplyAnalysisRawDataHolder { ReportDate = g.Key.ReportDate, Constrained = g.Sum(c => c.Constrained), Unconstrained = g.Sum(c => c.Unconstrained), Booked = g.Sum(c => c.Booked), NessesaryConstrained = g.Sum(c => c.NessesaryConstrained), NessesaryUnconstrained = g.Sum(c => c.NessesaryUnconstrained), NessesaryBooked = g.Sum(c => c.NessesaryBooked), Expected = g.Sum(c => c.Expected) }; } IQueryable <SupplyAnalysisGraphDataHolder> data; switch (dataType) { case FutureTrendDataType.Constrained: data = from gd in groupedData select new SupplyAnalysisGraphDataHolder { ReportDate = gd.ReportDate, Expected = gd.Expected - gd.NessesaryConstrained, }; break; case FutureTrendDataType.Unconstrained: data = from gd in groupedData select new SupplyAnalysisGraphDataHolder { ReportDate = gd.ReportDate, Expected = gd.Expected - gd.NessesaryUnconstrained, }; break; case FutureTrendDataType.AlreadyBooked: data = from gd in groupedData select new SupplyAnalysisGraphDataHolder { ReportDate = gd.ReportDate, Expected = gd.Expected - gd.NessesaryBooked, }; break; default: throw new ArgumentException("Invalid Future Trend Datatype selected"); } var sw = new Stopwatch(); sw.Start(); var finalGraphingData = data.ToList(); sw.Stop(); var ell = sw.Elapsed; var graphData = GetSupplyAnalysisSeriesData(finalGraphingData); graphData.Add(GetSupplyAnalysisWeeklyData(finalGraphingData)); return(graphData); } }
private static string GenerateExcelDataFromRaw(MarsDBDataContext dataContext, IQueryable <FutureTrendOrSupplyAnalysisRawDataHolder> joinedRawData, int siteGroup, int fleetGroup, FutureTrendDataType dataType, bool weeklyGrouping) { var csvData = new StringBuilder(); var fullDataSet = GetJoinedExcelRawData(dataContext, joinedRawData, dataType); csvData.Append(CsvExportMethods.GetExportHeaders(siteGroup, fleetGroup, weeklyGrouping)); csvData.Append(weeklyGrouping ? string.Format("{0}\n", CsvExportHeaders.MinWeeklyDifference) : string.Format("{0},{1},{2}\n", CsvExportHeaders.NessesaryFleet, CsvExportHeaders.ExpectedFleet, CsvExportHeaders.Difference)); if (weeklyGrouping) { fullDataSet = fullDataSet.OrderBy(d => d.Week); } var groupedData = fullDataSet.GroupByMany(CsvExportMethods.GetGroupingColumns(siteGroup, fleetGroup, weeklyGrouping)); var orderedData = groupedData.OrderBy(d => d.Key); var keyList = new List <string>(); foreach (var gr in orderedData) { CheckSubGroup(gr, keyList, csvData, weeklyGrouping); } return(csvData.ToString()); }
private static IEnumerable <SupplyAnalysisExcelDataHolder> GetJoinedExcelRawData(MarsDBDataContext dataContext, IQueryable <FutureTrendOrSupplyAnalysisRawDataHolder> joinedData, FutureTrendDataType dataType) { var data = from jd in joinedData join lg in dataContext.CMS_LOCATION_GROUPs on jd.LocationGroupId equals lg.cms_location_group_id join cs in dataContext.CAR_GROUPs on jd.CarClassId equals cs.car_group_id select new SupplyAnalysisExcelDataHolder { ReportDate = jd.ReportDate, Week = jd.ReportDate.GetIso8061WeekOfYear(), Year = jd.ReportDate.Year, Country = lg.CMS_POOL.country, CountryName = lg.CMS_POOL.COUNTRy1.country_description, Pool = lg.CMS_POOL.cms_pool1, PoolId = lg.cms_pool_id, LocationGroupId = jd.LocationGroupId, LocationGroup = lg.cms_location_group1, CarSegment = cs.CAR_CLASS.CAR_SEGMENT.car_segment1, CarSegmentId = cs.CAR_CLASS.car_segment_id, CarClassGroup = cs.CAR_CLASS.car_class1, CarClassGroupId = cs.car_class_id, CarClass = cs.car_group1, CarClassId = jd.CarClassId, ExpectedFleet = jd.Expected, Difference = 0, NessesaryFleet = dataType == FutureTrendDataType.Constrained ? jd.NessesaryConstrained : dataType == FutureTrendDataType.Unconstrained ? jd.NessesaryUnconstrained : jd.NessesaryBooked }; return(data); }
internal static string GetSupplyAnalysisExcelData(Dictionary <string, string> parameters, FutureTrendDataType dataType, int scenarioId, int siteGroup, int fleetGroup, DataType timeZone, bool weeklyGrouping) { var toDate = timeZone == DataType.FrozenZone ? FutureTrendDataAccess.SetFrozenZoneToDateLimit(DateTime.Parse(parameters[ParameterNames.ToDate])) : parameters[ParameterNames.ToDate]; var newParameters = new Dictionary <string, string> { { ParameterNames.Country, parameters[ParameterNames.Country] }, { ParameterNames.ToDate, toDate }, { ParameterNames.FromDate, parameters[ParameterNames.FromDate] } }; if (timeZone == DataType.DailyChanging) { //return new FutureTrendRepository().GetSupplyAnalysisCsvData(newParameters, scenarioId, siteGroup, fleetGroup // , dataType, weeklyGrouping); using (var dataContext = new MarsDBDataContext(MarsConnection.ConnectionString)) { var joinedData = timeZone == DataType.DailyChanging ? GenericSizingDataAccess.GetFutureTrendRawData(dataContext, parameters, scenarioId) : FutureTrendDataAccess.GetRawFrozenZoneFutureTrendData(dataContext, newParameters, (byte)scenarioId); return(GenerateExcelDataFromRaw(dataContext, joinedData, siteGroup, fleetGroup, dataType, weeklyGrouping)); } } else { using (var dataContext = new MarsDBDataContext(MarsConnection.ConnectionString)) { var joinedData = FutureTrendDataAccess.GetRawFrozenZoneFutureTrendData(dataContext, newParameters, (byte)scenarioId); return(GenerateExcelDataFromRaw(dataContext, joinedData, siteGroup, fleetGroup, dataType, weeklyGrouping)); } } return(null); }
internal static string GetForecastExcelData(Dictionary <string, string> parameters, FutureTrendDataType dataType, int siteGroup, int fleetGroup, DataType timeZone) { using (var dataContext = new MarsDBDataContext(MarsConnection.ConnectionString)) { var csvData = new StringBuilder(); var rawData = timeZone == DataType.DailyChanging ? GenericSizingDataAccess.GetForecastRawData(parameters, dataContext) : GetFrozenZoneForecastRawData(parameters, dataContext); var fullDataSet = GetJoinedExcelData(dataContext, rawData); var orderedData = fullDataSet.GroupByMany(CsvExportMethods.GetGroupingColumns(siteGroup, fleetGroup)).OrderBy(d => d.Key); var keyList = new List <string>(); foreach (var gr in orderedData) { CheckSubGroup(gr, keyList, csvData); } return(csvData.ToString()); } }