コード例 #1
0
        private static IEnumerable <AgExposure> ConvertToAgExposures(IEnumerable <AgUnformattedExposure> unformattedExposures)
        {
            var formattedExposures = new List <AgExposure>();

            foreach (var exposure in unformattedExposures)
            {
                var formattedExposure = new AgExposure
                {
                    BreakSalesAreaNo = exposure.BreakSalesAreaNo,
                    ClashCode        = exposure.ClashCode,
                    MasterClashCode  = exposure.MasterClashCode,
                    NoOfExposures    = exposure.NoOfExposures,
                    StartDate        = ConvertToAgDate(exposure.StartDate),
                    EndDate          = ConvertToAgDate(exposure.EndDate),
                    StartTime        = ConvertToAgTime(exposure.StartTime),
                    EndTime          = ConvertToAgTime(exposure.EndTime),
                    StartDay         = exposure.StartDay,
                    EndDay           = exposure.EndDay
                };

                formattedExposures.Add(formattedExposure);
            }

            return(formattedExposures);
        }
コード例 #2
0
        private static AgExposuresSerialization ToAgExposures(
            List <Clash> clashes,
            DateTime runStartDateTime,
            DateTime runEndDateTime,
            TimeSpan?peakStartTime,
            TimeSpan?peakEndTime,
            List <SalesArea> salesAreas,
            IMapper mapper,
            AgExposure agExposure)
        {
            var agExposures = mapper.Map <List <AgExposure> >(
                Tuple.Create(clashes, runStartDateTime, runEndDateTime, peakStartTime, peakEndTime, salesAreas, agExposure)
                );

            var serialization = new AgExposuresSerialization();

            return(serialization.MapFrom(agExposures));
        }
コード例 #3
0
 public void Serialise(
     List <Clash> allClashes,
     DateTime startDate,
     DateTime endDate,
     TimeSpan?peakStartTime,
     TimeSpan?peakEndTime,
     List <SalesArea> allSalesAreas,
     IMapper mapper,
     AgExposure agExposure)
 {
     ToAgExposures(
         allClashes,
         startDate,
         endDate,
         peakStartTime,
         peakEndTime,
         allSalesAreas,
         mapper,
         agExposure)
     .Serialize(Path.Combine(FolderName, Filename));
 }
コード例 #4
0
        private static List <AgExposure> LoadAgExposures(
            List <Clash> clashes,
            DateTime startDate,
            DateTime endDate,
            TimeSpan?peakStartTime,
            TimeSpan?peakEndTime,
            List <SalesArea> salesAreas,
            AgExposure agExposure)
        {
            #region Preset clashes data

            _salesAreas = salesAreas;

            _peakStartTime = peakStartTime;
            _peakEndTime   = peakEndTime;

            _breakTimes = new List <TimeSpan> {
                _defaultDayStartTime, _defaultDayEndTime
            };

            if (_peakStartTime.HasValue && _peakEndTime.HasValue)
            {
                _breakTimes.AddRange(new List <TimeSpan> {
                    _peakStartTime.Value, _peakEndTime.Value
                });
                _breakTimes = _breakTimes.OrderBy(r => r).ToList();
            }

            var exposures = new List <AgExposure>();

            #endregion Preset clashes data

            foreach (var clash in clashes)
            {
                var clashExposures = new List <AgUnformattedExposure>();

                var masterClashCode = clash.ParentExternalidentifier ?? clash.Externalref;

                clashExposures.AddRange(CreateExposures(AllSalesAreas, clash.Externalref, masterClashCode, clash.DefaultPeakExposureCount, clash.DefaultOffPeakExposureCount,
                                                        startDate, endDate, _defaultDayStartTime, _defaultDayEndTime, StartDay, EndDay));

                if (clash.Differences != null)
                {
                    var differencesForAllSalesAreas =
                        clash.Differences.Where(d => string.IsNullOrWhiteSpace(d.SalesArea)).ToList();

                    foreach (var difference in differencesForAllSalesAreas)
                    {
                        var differenceExposures = GenerateDifferenceExposures(difference, clash.Externalref, masterClashCode,
                                                                              clash.DefaultPeakExposureCount, clash.DefaultOffPeakExposureCount, startDate, endDate);

                        foreach (var differenceExposure in differenceExposures)
                        {
                            var exposuresForAllSalesAreas =
                                clashExposures.Where(e => e.BreakSalesAreaNo == AllSalesAreas).ToList();

                            var processResult = ProcessOverlappedExposure(exposuresForAllSalesAreas, differenceExposure);

                            if (processResult is null)
                            {
                                clashExposures.Add(differenceExposure);
                            }
                            else
                            {
                                _ = clashExposures.Remove(processResult.Item2);
                                clashExposures.AddRange(processResult.Item1);
                            }
                        }
                    }

                    var differencesForParticularSalesArea =
                        clash.Differences.Where(d => !string.IsNullOrWhiteSpace(d.SalesArea)).ToList();

                    foreach (var difference in differencesForParticularSalesArea)
                    {
                        var differenceExposures = GenerateDifferenceExposures(difference, clash.Externalref, masterClashCode,
                                                                              clash.DefaultPeakExposureCount, clash.DefaultOffPeakExposureCount, startDate, endDate);

                        clashExposures.AddRange(differenceExposures);
                    }
                }

                exposures.AddRange(ConvertToAgExposures(clashExposures));
            }

            return(exposures);
        }