Ejemplo n.º 1
0
        public static ValidatableField <string> Match(this ValidatableField <string> field, string expression)
        {
            if (field is null)
            {
                throw new ArgumentNullException(nameof(field));
            }

            if (!field.Continue)
            {
                return(field);
            }

            if (field.Field is null)
            {
                throw new ArgumentNullException(nameof(field));
            }
            if (expression is null)
            {
                throw new ArgumentNullException(nameof(field));
            }

            if (!Regex.IsMatch(field.Field, expression))
            {
                field.IsValid = false;
                field.AddError(new Error(Error.Types.Warning, nameof(Match), $"Field '{field.FieldName}' doesn't match to '{expression}'"));
            }

            return(field);
        }
Ejemplo n.º 2
0
        public static ValidatableField <F> Between <F>(this ValidatableField <F> field, F min, F max) where F : IComparable
        {
            if (field is null)
            {
                throw new ArgumentNullException(nameof(field));
            }

            if (!field.Continue)
            {
                return(field);
            }

            if (field.Field.CompareTo(min) < 0)
            {
                field.IsValid = false;
                field.AddError(new Error(Error.Types.Warning, nameof(Between), $"Field '{field.FieldName}' must be more than {min}"));
            }

            if (field.Field.CompareTo(max) > 0)
            {
                field.IsValid = false;
                field.AddError(new Error(Error.Types.Warning, nameof(Between), $"Field '{field.FieldName}' must be less than {max}"));
            }

            return(field);
        }
Ejemplo n.º 3
0
        public static ValidatableField <ushort> SliceForHundred(this ValidatableField <ushort> field)
        {
            if (field is null)
            {
                throw new ArgumentNullException(nameof(field));
            }

            if (!field.Continue)
            {
                return(field);
            }

            field.Field -= 100;

            return(field);
        }
Ejemplo n.º 4
0
        public static ValidatableField <ushort> AddThousand(this ValidatableField <ushort> field)
        {
            if (field is null)
            {
                throw new ArgumentNullException(nameof(field));
            }

            if (!field.Continue)
            {
                return(field);
            }

            field.Field += 1000;

            return(field);
        }
Ejemplo n.º 5
0
        public static ValidatableField <F> Required <F>(this ValidatableField <F> field) where F : class
        {
            if (field is null)
            {
                throw new ArgumentNullException(nameof(field));
            }

            if (!field.Continue)
            {
                return(field);
            }

            if (field.Field is null)
            {
                field.IsValid = false;
                field.AddError(new Error(Error.Types.Warning, nameof(Required), $"Field '{field.FieldName}' is required"));
            }

            return(field);
        }
Ejemplo n.º 6
0
        public static ValidatableField <F> If <F>(this ValidatableField <F> field, Func <ValidatableField <F>, bool> customCondition)
        {
            if (field is null)
            {
                throw new ArgumentNullException(nameof(field));
            }

            if (!field.Continue)
            {
                return(field);
            }

            if (customCondition is null)
            {
                throw new ArgumentNullException(nameof(customCondition));
            }

            field.Continue = customCondition.Invoke(field);

            return(field);
        }
Ejemplo n.º 7
0
        public static ValidatableField <F> Custom <F>(this ValidatableField <F> field, Action <ValidatableField <F> > customValidation)
        {
            if (field is null)
            {
                throw new ArgumentNullException(nameof(field));
            }

            if (!field.Continue)
            {
                return(field);
            }

            if (customValidation is null)
            {
                throw new ArgumentNullException(nameof(customValidation));
            }

            customValidation.Invoke(field);

            return(field);
        }
Ejemplo n.º 8
0
        public static ValidatableField <F> Else <F>(this ValidatableField <F> field, Action <ValidatableField <F> > customValidation)
        {
            if (field is null)
            {
                throw new ArgumentNullException(nameof(field));
            }

            if (field.Continue)
            {
                return(field);
            }
            else
            {
                if (customValidation is null)
                {
                    throw new ArgumentNullException(nameof(customValidation));
                }

                field.Continue = true;

                return(Custom(field, customValidation));
            }
        }
Ejemplo n.º 9
0
        public static ValidatableField <string> Length(this ValidatableField <string> field, int min, int max)
        {
            if (field is null)
            {
                throw new ArgumentNullException(nameof(field));
            }

            if (!field.Continue)
            {
                return(field);
            }

            var ff = new ValidatableField <int>(field.Field.Length, nameof(field.Field.Length));

            var result = ff.Between(min, max);

            if (!result.IsValid)
            {
                field.IsValid = false;
                field.Errors.AddRange(result.Errors);
            }

            return(field);
        }
Ejemplo n.º 10
0
 private bool HouseIsThousand(ValidatableField <ushort> field) => field.Field == 1000;
Ejemplo n.º 11
0
 private void AddThousand(ValidatableField <ushort> field) => field.Field += 1000;