Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 3
0
        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());
            }
        }
Exemplo n.º 4
0
        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());
            }
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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));
            }
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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());
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 15
0
        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());
            }
        }