private static bool IsValidDateTimeRule(DateTimeDataUnit validDateTimeDataUnit, DateTimeValueRule dateTimeValueRule) { RuleToApply ruleToApply = RuleToApply.NOTEQUALTO; if (dateTimeValueRule.GreaterThan.HasValue || dateTimeValueRule.LesserThan.HasValue) { ruleToApply = RuleToApply.GREATERORLESSER; } else if (dateTimeValueRule.EqualTo.HasValue) { ruleToApply = RuleToApply.EQUALTO; } else if (dateTimeValueRule.NotEqualTo.HasValue) { ruleToApply = RuleToApply.NOTEQUALTO; } else { throw new Exception($"DateTime Value rule needs to have a proper value"); } switch (ruleToApply) { case RuleToApply.GREATERORLESSER: if (dateTimeValueRule.GreaterThan.HasValue && dateTimeValueRule.LesserThan.HasValue) { if (validDateTimeDataUnit.Value.CompareTo(dateTimeValueRule.GreaterThan.Value) >= 0 && validDateTimeDataUnit.Value.CompareTo(dateTimeValueRule.LesserThan.Value) <= 0) { return(true); } return(false); } else if (dateTimeValueRule.GreaterThan.HasValue && validDateTimeDataUnit.Value.CompareTo(dateTimeValueRule.GreaterThan.Value) >= 0) { return(true); } else if (dateTimeValueRule.LesserThan.HasValue && validDateTimeDataUnit.Value.CompareTo(dateTimeValueRule.LesserThan.Value) <= 0) { return(true); } return(false); case RuleToApply.EQUALTO: return(validDateTimeDataUnit.Value == dateTimeValueRule.EqualTo); case RuleToApply.NOTEQUALTO: return(validDateTimeDataUnit.Value != dateTimeValueRule.NotEqualTo); default: throw new NotSupportedException("The given type is not valid"); } }
private static DateTimeDataUnit GetDateTimeDataUnit(InputDataUnit dataUnit) { if (!DateTime.TryParse(dataUnit.Value, out DateTime dateTime)) { throw new Exception($"{dataUnit.Signal} : {dataUnit.Value} is not valid"); } if (DateTimeDataUnit == null) { DateTimeDataUnit = new DateTimeDataUnit(dataUnit.Signal, dateTime); } else { DateTimeDataUnit.Signal = dataUnit.Signal; DateTimeDataUnit.Value = dateTime; } return(DateTimeDataUnit); }