HA4IoT.Automations.TurnOnAndOffAutomation.WithEnablingCondition C# (CSharp) 메소드

WithEnablingCondition() 공개 메소드

public WithEnablingCondition ( ConditionRelation relation, ICondition condition ) : TurnOnAndOffAutomation
relation ConditionRelation
condition ICondition
리턴 TurnOnAndOffAutomation
        public TurnOnAndOffAutomation WithEnablingCondition(ConditionRelation relation, ICondition condition)
        {
            if (condition == null) throw new ArgumentNullException(nameof(condition));

            _enablingConditionsValidator.WithCondition(relation, condition);
            return this;
        }

Usage Example

        public static TurnOnAndOffAutomation WithTurnOnIfAllRollerShuttersClosed(this TurnOnAndOffAutomation automation, params IRollerShutter[] rollerShutters)
        {
            if (automation == null)
            {
                throw new ArgumentNullException(nameof(automation));
            }
            if (rollerShutters == null)
            {
                throw new ArgumentNullException(nameof(rollerShutters));
            }

            var condition = new Condition().WithExpression(() => rollerShutters.First().GetState().Extract <PositionTrackingState>().IsClosed);

            foreach (var otherRollerShutter in rollerShutters.Skip(1))
            {
                condition.WithRelatedCondition(ConditionRelation.And, new Condition().WithExpression(() => otherRollerShutter.GetState().Extract <PositionTrackingState>().IsClosed));
            }

            return(automation.WithEnablingCondition(ConditionRelation.Or, condition));
        }