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