public bool Evaluate(Response response) { var validationMessages = new List <string>(); bool isValid = true; // Required | Range if (ValidatorId.ToLower() == "Required".ToLower()) { isValid = response.Obs.HasValue(response.Question.Concept.ConceptTypeId); if (!isValid) { validationMessages.Add($"Response is required"); } } if (isValid && ValidatorId.ToLower() == "Range".ToLower()) { bool isValidMin = true; bool isValidMax = true; if (ValidatorTypeId.ToLower() == "Numeric".ToLower()) { var obsValue = response.Obs.ValueNumeric; if (!string.IsNullOrWhiteSpace(MinLimit)) { isValidMin = obsValue >= Convert.ToDecimal(MinLimit); if (!isValidMin) { validationMessages.Add($"Response cannot be Less than {MinLimit}"); } } if (!string.IsNullOrWhiteSpace(MaxLimit)) { isValidMax = obsValue <= Convert.ToDecimal(MaxLimit); if (!isValidMax) { validationMessages.Add($"Response cannot be greater than {MaxLimit}"); } } isValid = isValidMin && isValidMax; } if (ValidatorTypeId.ToLower() == "Count".ToLower()) { var value = response.Obs.ValueMultiCoded; var obsValue = string.IsNullOrWhiteSpace(value) ? new string[0] : value.Split(','); if (!string.IsNullOrWhiteSpace(MinLimit)) { isValidMin = obsValue.Length > 0 && obsValue.Length >= Convert.ToDecimal(MinLimit); if (!isValidMin) { validationMessages.Add($"Response cannot be Less than {MinLimit}"); } } if (!string.IsNullOrWhiteSpace(MaxLimit)) { isValidMax = obsValue.Length > 0 && obsValue.Length <= Convert.ToDecimal(MaxLimit); if (!isValidMax) { validationMessages.Add($"Response cannot be greater than {MaxLimit}"); } } isValid = isValidMin && isValidMax; } } if (!isValid) { throw new ArgumentException(validationMessages.First()); } return(isValid); }
public override string ToString() { //$@"{ValidatorId}{ValidatorTypeId.ToLower().Equals("None".ToLower()) ? string.Empty : $",{ValidatorTypeId}")}"; var mainInfo = $@"{ValidatorId}{(ValidatorTypeId.ToLower().Equals("None".ToLower()) ? "": $" | {ValidatorTypeId}")}";