private string GetBreakExclusionsCode(BreakExclusionModel item) { var dateFormat = "yyyy.MM.dd HH:mm:ss"; var startDate = item.StartTime.HasValue ? item.StartDate.Add(item.StartTime.Value) : item.StartDate; var endDate = item.EndTime.HasValue ? item.EndDate.Add(item.EndTime.Value) : item.EndDate; return($"BE {item.SalesArea} {GetDaysCode(item.SelectableDays)} {startDate.ToString(dateFormat, CultureInfo.InvariantCulture)} - {endDate.ToString(dateFormat, CultureInfo.InvariantCulture)}"); }
private static string StartimeIsAfterEndTimeMessage(SalesArea salesArea, BreakExclusionModel breakExclusion) { return(string.Format( CultureInfo.CurrentCulture , StartimeIsAfterEndTimeMessageFormat , SalesAreaDescription(salesArea) , breakExclusion.EndTime , breakExclusion.StartTime)); }
private static string EndDateBeforeStartDateMessage(SalesArea salesArea, BreakExclusionModel breakExclusion) { return(string.Format( CultureInfo.CurrentCulture , EndDateBeforeStartDateMessageFormat , SalesAreaDescription(salesArea) , breakExclusion.EndDate.ToShortDateString() , breakExclusion.StartDate.ToShortDateString())); }
private static BreakExclusion MapToBreakExclusion(BreakExclusionModel command) { var breakExclusion = new BreakExclusion() { SalesArea = command.SalesArea, EndDate = command.EndDate, EndTime = command.EndTime, SelectableDays = command.SelectableDays, StartDate = command.StartDate, StartTime = command.StartTime }; return(breakExclusion); }
private static string EndTimeIsBeforeBroadcastStartTimeMessage(SalesArea salesArea, BreakExclusionModel breakExclusion) { return(string.Format( CultureInfo.CurrentCulture , EndTimeIsBeforeBroadcastStartTimeMessageFormat , SalesAreaDescription(salesArea) , breakExclusion.EndTime , salesArea.StartOffset.ToTimeSpan())); }
private static string StartTimeIsAfterBroadcastEndTimeMessage(SalesArea salesArea, BreakExclusionModel breakExclusion) { return(string.Format( CultureInfo.CurrentCulture , StartTimeIsAfterBroadcastEndTimeMessageFormat , SalesAreaDescription(salesArea) , breakExclusion.StartTime , salesArea.StartOffset.ToTimeSpan().Add(salesArea.DayDuration.ToTimeSpan()).Subtract(new TimeSpan(0, 0, 1)))); }
public static bool DateTimeRangeIsValid(BreakExclusionModel breakExclusion, IEnumerable <SalesArea> salesAreas, out List <string> errorMessages) { errorMessages = new List <string>(); if (breakExclusion == null) { return(true); } if (salesAreas == null) { return(true); } var salesArea = salesAreas.FirstOrDefault(sa => string.Equals(sa.Name, breakExclusion.SalesArea)); if (salesArea == null) { return(true); } if (!(breakExclusion.StartTime.HasValue && breakExclusion.EndTime.HasValue)) { return(true); } var zero = new TimeSpan(0, 0, 0); var nextDay = new TimeSpan(1, 0, 0, 0); var startOffset = salesArea.StartOffset.ToTimeSpan(); var duration = salesArea.DayDuration.ToTimeSpan(); var startTime = breakExclusion.StartTime.Value; var endTime = breakExclusion.EndTime.Value; //Check if startTime needs to be on the next day if (startTime >= zero && startTime < startOffset && startTime.Add(nextDay) < startOffset.Add(duration)) { startTime = startTime.Add(nextDay); } //Check if endTime needs to be on the next day if (endTime >= zero && endTime < startTime && endTime.Add(nextDay) < startOffset.Add(duration)) { endTime = endTime.Add(nextDay); } //shift back start and end time to zero baseline startTime = startTime.Subtract(startOffset); endTime = endTime.Subtract(startOffset); if (breakExclusion.EndDate < breakExclusion.StartDate) { errorMessages.Add(EndDateBeforeStartDateMessage(salesArea, breakExclusion)); } //startTime Is Before Broadcast Time Range if (startTime < zero) { errorMessages.Add(StartTimeIsBeforeBroadcastStartTimeMessage(salesArea, breakExclusion)); } //startTime Is After Broadcast Time Range if (startTime >= duration) { errorMessages.Add(StartTimeIsAfterBroadcastEndTimeMessage(salesArea, breakExclusion)); } //endTime Is Before Broadcast Time Range if (endTime <= zero) { errorMessages.Add(EndTimeIsBeforeBroadcastStartTimeMessage(salesArea, breakExclusion)); } //endTime is not after startTime if (endTime <= startTime) { errorMessages.Add(StartimeIsAfterEndTimeMessage(salesArea, breakExclusion)); } //endTime Is After Broadcast Time Range if (endTime >= duration) { errorMessages.Add(EndTimeIsAfterBroadcastEndTimeMessage(salesArea, breakExclusion)); } return(errorMessages.Count == 0); }