Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }
Пример #4
0
 /// <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);
 }
Пример #5
0
        /// <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);
        }