Пример #1
0
        public async Task <bool> MeetConditions(IEntity source, IEnumerable <Condition> conditions)
        {
            // if there are no conditions to match, conditions are "meet"
            if (conditions == null || conditions.Count() == 0)
            {
                return(true);
            }

            List <bool> results = new(conditions.Count());

            foreach (var condition in conditions)
            {
                var  arguments = new ConditionExecutionArguments(source, serviceProvider);
                bool result    = await condition.Check(arguments);

                results.Add(result);
            }

            return(results.All(x => x));
        }
Пример #2
0
        public override Task <bool> Check(ConditionExecutionArguments arguments)
        {
            DateTime compareDateTime = DateTime.Today;

            if (Mode == ScheduleMode.Time)
            {
                compareDateTime = compareDateTime.Add(Time ?? new TimeSpan(0));
            }
            else
            {
                var service = arguments.GetService <ISunDataService>();
                var sunData = service.GetLatest();

                if (Mode == ScheduleMode.Sunrise)
                {
                    compareDateTime = compareDateTime.Add(sunData.Sunrise.TimeOfDay);
                }
                else
                {
                    compareDateTime = compareDateTime.Add(sunData.Sunset.TimeOfDay);
                }

                if (Time.HasValue)
                {
                    compareDateTime = compareDateTime.Add(Time.Value);
                }
            }

            bool result = false;

            if (Compare == CompareType.GreaterThan)
            {
                result = DateTime.Now > compareDateTime;
            }
            else if (Compare == CompareType.LesserThan)
            {
                result = compareDateTime > DateTime.Now;
            }

            return(Task.FromResult(result));
        }
Пример #3
0
 public abstract Task <bool> Check(ConditionExecutionArguments arguments);