Ejemplo n.º 1
0
        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()));
 }
Ejemplo n.º 4
0
        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))));
 }
Ejemplo n.º 7
0
        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);
        }