Beispiel #1
0
 /// <summary>
 /// Проверка попадания времени в указанный период
 /// </summary>
 /// <param name="Period">Указанный период</param>
 /// <param name="dateTimeOffset">Проверяемой время</param>
 /// <returns></returns>
 public static bool InPeriod(TimeOfPlaying Period, DateTimeOffset dateTimeOffset)
 {
     if (TimeSpan.Compare(dateTimeOffset.DateTime.TimeOfDay, Period.From.TimeOfDay) >= 0 &&
         TimeSpan.Compare(dateTimeOffset.DateTime.TimeOfDay, Period.Before.TimeOfDay) <= 0)
     {
         return(true);
     }
     return(false);
 }
Beispiel #2
0
 /// <summary>
 /// Возвращает -1, если текущий объект идет раньше передаваемого, возвращает 0, если периоды пересекаются, и 1, если текущий период идет позже передаваемого.
 /// </summary>
 /// <param name="t">Сравниваемый объект класса TimeOfPlaying</param>
 /// <returns></returns>
 public int CompareTo(TimeOfPlaying t)
 {
     if (this.From.TimeOfDay < t.From.TimeOfDay && this.Before.TimeOfDay < t.From.TimeOfDay)
     {
         return(-1);
     }
     if (this.From.TimeOfDay > t.Before.TimeOfDay && this.Before.TimeOfDay > t.Before.TimeOfDay)
     {
         return(1);
     }
     return(0);
 }
Beispiel #3
0
 /// <summary>
 /// Объединение периодов в случае их пересечения на временном отрезке
 /// </summary>
 /// <param name="t2"></param>
 /// <returns></returns>
 public TimeOfPlaying Concat(TimeOfPlaying t)
 {
     if (this.CompareTo(t) == 0)
     { //Четыре ситуации: 1) внутри 2) снаружи) 3) Слева 4) справа
         if (this.From.TimeOfDay >= t.From.TimeOfDay && this.Before.TimeOfDay <= t.Before.TimeOfDay)
         {
             this.From   = t.From;
             this.Before = t.Before;
         }
         if (this.From.TimeOfDay < t.From.TimeOfDay && this.Before.TimeOfDay < t.From.TimeOfDay)
         {
             this.Before = t.Before;
         }
         if (this.From.TimeOfDay < t.From.TimeOfDay && this.Before.TimeOfDay < t.From.TimeOfDay)
         {
             this.From = t.From;
         }
     }
     return(this);
 }
Beispiel #4
0
        /// <summary>
        /// Объединение периодов времени проигрывания конента в разрезе дат.
        /// </summary>
        /// <param name="d1"></param>
        /// <param name="d2"></param>
        /// <returns></returns>
        public static IEnumerable <Dates> Union(IEnumerable <Dates> d1, IEnumerable <Dates> d2)
        {
            var _temp  = Enumerable.Union(d1, d2).ToList();
            var _temp2 = d1.Concat(d2);

            foreach (var d in _temp)
            {
                var i = _temp2.Where(t => t.Day.Date == d.Day.Date);
                if (i != null && i.Count() > 0)
                {
                    ObservableCollection <TimeOfPlaying> _Temp = new ObservableCollection <TimeOfPlaying>();
                    foreach (var t in i)
                    {
                        _Temp = (ObservableCollection <TimeOfPlaying>)TimeOfPlaying.Concat(_Temp, t.timeOfPlayings);
                    }
                    d.timeOfPlayings = _Temp;
                }
            }
            return(_temp);
        }