Animatroller.Framework.LogicalDevice.OperatingHours2.EvaluateOpenHours C# (CSharp) Method

EvaluateOpenHours() private method

private EvaluateOpenHours ( ) : void
return void
        private void EvaluateOpenHours()
        {
            if (this.disabled)
                return;

            if (this.forced.HasValue)
            {
                IsOpen = this.forced.Value;
                return;
            }

            bool isOpenNow = false;
            if (!this.ranges.Any())
                isOpenNow = !this.noRangesMeansClosed;

            var now = DateTime.Now.TimeOfDay;
            foreach (var range in this.ranges)
            {
                if (range.From.TimeOfDay < range.To.TimeOfDay)
                {
                    if (now >= range.From.TimeOfDay &&
                        now <= range.To.TimeOfDay)
                    {
                        if (range.DayOfWeek.Count > 0 && !range.DayOfWeek.Contains(DateTime.Today.DayOfWeek))
                            continue;

                        isOpenNow = true;
                        break;
                    }
                }
                else
                {
                    // Assume the To timestamp is the following day
                    if (now >= range.From.TimeOfDay ||
                        now <= range.To.TimeOfDay)
                    {
                        if (range.DayOfWeek.Count > 0 && !range.DayOfWeek.Contains(DateTime.Today.DayOfWeek))
                            continue;

                        isOpenNow = true;
                        break;
                    }
                }
            }

            IsOpen = isOpenNow;
        }