/// <summary> /// Check if the value is a string and if the length is between Min and Max length /// </summary> /// <param name="column"></param> /// <param name="value"></param> /// <param name="errors"></param> /// <returns>true if the check is ok</returns> public override bool Check(DSColumn column, object value, Errors errors) { bool validity = base.Check(column, value, errors); if (value == null) { if (Min > 0) { errors.AddField(column.Property.Name, ErrorMin, new[] { $"{{{column.Field}}}", $"{Min}" }); validity = false; } } else if (value as string != null) { string strValue = (value as string).Trim(); if (strValue.Length < Min) { errors.AddField(column.Property.Name, ErrorMin, new[] { $"{{{column.Field}}}", $"{Min}" }); validity = false; } if (strValue.Length > Max) { errors.AddField(column.Property.Name, ErrorMax, new[] { $"{{{column.Field}}}", $"{Max}" }); validity = false; } } else { errors.AddField(column.Property.Name, Error, new[] { $"{{{column.Field}}}", value.ToString() }); } return(validity); }
/// <summary> /// Check if the value describes an email address /// </summary> /// <param name="column"></param> /// <param name="value"></param> /// <param name="errors"></param> /// <returns>true if the check is ok</returns> public override bool Check(DSColumn column, object value, Errors errors) { bool validity = base.Check(column, value, errors); if (value == null) { return(validity); } if (!(value is string strValue)) { errors.AddField(column.Property.Name, Error, new[] { $"{{{column.Field}}}", value.ToString() }); return(false); } try { new MailAddress(strValue); return(validity); } catch { errors.AddField(column.Property.Name, Error, new[] { $"{{{column.Field}}}", strValue }); return(false); } }
/// <summary> /// Check if the value is not null and not empty /// </summary> /// <param name="column"></param> /// <param name="value"></param> /// <param name="errors"></param> /// <returns>true if the check is ok</returns> public override bool Check(DSColumn column, object value, Errors errors) { bool validity = base.Check(column, value, errors); if (value == null) { errors.AddField(column.Property.Name, Error, new[] { $"{{{column.Field}}}" }); return(false); } if (value is string strValue && String.IsNullOrWhiteSpace(strValue)) { errors.AddField(column.Property.Name, Error, new[] { $"{{{column.Field}}}" }); return(false); } return(validity); }
/// <summary> /// Check if the value respects the control /// </summary> /// <param name="column"></param> /// <param name="value"></param> /// <param name="errors"></param> /// <returns>true if the check is ok</returns> public virtual bool Check(DSColumn column, object value, Errors errors) { return(true); }
/// <summary> /// Check if the value is a decimal within expected digits /// </summary> /// <param name="column"></param> /// <param name="value"></param> /// <param name="errors"></param> /// <returns>true if the check is ok</returns> public override bool Check(DSColumn column, object value, Errors errors) { Decimal valueToCheck = 0; bool validity = base.Check(column, value, errors); if (value == null) { return(validity); } if (_maxValue == 0 && Digit > Precision) { _maxValue = 10; for (int i = Precision + 1; i < Digit; i++) { _maxValue *= 10; } _minValue = -_maxValue; } if (value as string != null) { if (!Decimal.TryParse(value as string, out valueToCheck)) { errors.AddField(column.Property.Name, Error, new[] { $"{{{column.Field}}}", $"{Digit}", $"{Precision}", $"{value}" }); return(false); } } else if (value.GetType() == typeof(double) || value.GetType() == typeof(decimal) || value.GetType() == typeof(int) || value.GetType() == typeof(float)) { valueToCheck = Convert.ToDecimal(value); } else if (value.GetType() == typeof(bool)) { valueToCheck = (bool)value ? 1 : 0; } else { errors.AddField(column.Property.Name, Error, new[] { $"{{{column.Field}}}", $"{Digit}", $"{Precision}", $"{value}" }); validity = false; } if (validity) { Decimal valueRounded = Math.Round(valueToCheck, Precision); if (valueRounded != valueToCheck) { errors.AddField(column.Property.Name, Error, new[] { $"{{{column.Field}}}", $"{Digit}", $"{Precision}", $"{value}" }); return(false); } if (valueToCheck >= _maxValue || valueToCheck <= _minValue) { errors.AddField(column.Property.Name, Error, new[] { $"{{{column.Field}}}", $"{Digit}", $"{Precision}", $"{value}" }); return(false); } } return(validity); }