private ConditionState Check()
        {
            if (_startValueProvider == null || _endValueProvider == null)
            {
                return ConditionState.NotFulfilled;
            }

            TimeSpan startValue = _startValueProvider();
            TimeSpan endValue = _endValueProvider();

            if (_startAdjustment.HasValue)
            {
                startValue += _startAdjustment.Value;
            }

            if (_endAdjustment.HasValue)
            {
                endValue += _endAdjustment.Value;
            }

            var timeRangeChecker = new TimeRangeChecker();
            if (timeRangeChecker.IsTimeInRange(_timer.CurrentTime, startValue, endValue))
            {
                return ConditionState.Fulfilled;
            }
            
            return ConditionState.NotFulfilled;
        }
Exemplo n.º 2
0
        private ConditionState Check()
        {
            if (_startValueProvider == null || _endValueProvider == null)
            {
                return(ConditionState.NotFulfilled);
            }

            TimeSpan startValue = _startValueProvider();
            TimeSpan endValue   = _endValueProvider();

            if (StartAdjustment.HasValue)
            {
                startValue += StartAdjustment.Value;
            }

            if (EndAdjustment.HasValue)
            {
                endValue += EndAdjustment.Value;
            }

            var timeRangeChecker = new TimeRangeChecker();

            if (timeRangeChecker.IsTimeInRange(_timer.CurrentTime, startValue, endValue))
            {
                return(ConditionState.Fulfilled);
            }

            return(ConditionState.NotFulfilled);
        }
        private void Check()
        {
            if (!IsEnabled)
            {
                return;
            }

            if (_maxOutsideTemperature.HasValue && !_maxOutsideTemperatureApplied)
            {
                if (_weatherStation.Temperature.Value > _maxOutsideTemperature.Value)
                {
                    _maxOutsideTemperatureApplied = true;
                    StartMoveDown();

                    return;
                }
            }

            Daylight daylightNow = _weatherStation.Daylight;

            bool daylightInformationIsAvailable = daylightNow.Sunrise != TimeSpan.Zero && daylightNow.Sunset != TimeSpan.Zero;
            if (!daylightInformationIsAvailable)
            {
                return;
            }

            daylightNow = daylightNow.Move(SunriseDiff, SunsetDiff);
            var timeRangeChecker = new TimeRangeChecker();
            if (timeRangeChecker.IsTimeInRange(_timer.CurrentTime, daylightNow.Sunrise, daylightNow.Sunset))
            {
                TimeSpan time = DateTime.Now.TimeOfDay;
                if (DoNotOpenBefore.HasValue && DoNotOpenBefore.Value > time)
                {
                    return;
                }

                if (!_sunriseApplied)
                {
                    _sunriseApplied = true;
                    _sunsetApplied = false;
                    _maxOutsideTemperatureApplied = false;

                    StartMoveUp();
                }
            }
            else
            {
                if (!_sunsetApplied)
                {
                    _sunriseApplied = false;
                    _sunsetApplied = true;

                    StartMoveDown();
                }
            }
        }