public Validator Uniqueness <T>() where T : new() { T obj = new T(); object[] whereParameters = new object[2] { this.PropertyName + " = {0}", new object[] { this.Property } }; var result = obj.GetType().GetMethod("Where") .Invoke(obj, whereParameters) .GetType().GetMethod("Exists") .Invoke(obj, null); if (Convert.ToBoolean(result)) { string message = ""; if (this.PropertyGender == Genders.Male) { message = MessagesMale.Uniqueness(this.PropertyName); } else { message = MessagesFemale.Uniqueness(this.PropertyName); } this.IsValid = false; this.Errors.Rows.Add(new object[] { this.PropertyName, message }); } return(this); }
/// <summary> /// Valida se a propriedade é uma data menor ou igual que uma data especificada /// </summary> /// <param name="datetime">Data/Hora no qual a propriedade não pode ser maior</param> /// <returns>Retorna um objeto Validator com a validação executada</returns> public Validator LessOrEqualsThan(DateTime datetime) { if (Convert.ToDateTime(this.Property) < datetime) { this.IsValid = false; this.Errors.Rows.Add(new object[] { this.PropertyName, MessagesMale.LessOrEqualsThan(datetime) }); } return(this); }
/// <summary> /// Valida se a propriedade está dentro de uma data/hora mínima e máxima especificada /// </summary> /// <param name="minDateTime">Data/Hora mínima no qual a propriedade não pode ser menor</param> /// <param name="maxDateTime">Data/Hora máxima no qual a propriedade não pode ser maior</param> /// <returns>Retorna um objeto Validator com a validação executada</returns> public Validator Between(DateTime minDateTime, DateTime maxDateTime) { DateTime property = Convert.ToDateTime(this.Property); if (property < minDateTime || property > maxDateTime) { this.IsValid = false; this.Errors.Rows.Add(new object[] { this.PropertyName, MessagesMale.Between(minDateTime, maxDateTime) }); } return(this); }
/// <summary> /// Valida se a propriedade(Int32, Double, String) é menor ou igual que um número especificado /// </summary> /// <param name="number">Número de tamanho/quantidade máximo que a propriedade pode ter</param> /// <returns>Retorna um objeto Validator com a validação executada</returns> public Validator LessOrEqualsThan(double number) { if (((this.PropertyType == Types.Double || this.PropertyType == Types.Int32) && Convert.ToDouble(this.Property) > number) || (this.PropertyType == Types.String && this.Property.ToString().Length > number)) { this.IsValid = false; this.Errors.Rows.Add(new object[] { this.PropertyName, MessagesMale.LessOrEqualsThan(number, this.PropertyType) }); } return(this); }
/// <summary> /// Valida se a propriedade(Int32, Double, String) está dentro de número mínimo e máximo especificado /// </summary> /// <param name="minNumber">Número mínimo no qual a propriedade não pode ter tamanho/quantidade menor</param> /// <param name="maxNumber">Número máximo no qual a propriedade não pode ter tamanho/quantidade maior</param> /// <returns>Retorna um objeto Validator com a validação executada</returns> public Validator Between(double minNumber, double maxNumber) { if (((this.PropertyType == Types.Double || this.PropertyType == Types.Int32) && (!(Convert.ToDouble(this.Property) >= minNumber && Convert.ToDouble(this.Property) <= maxNumber))) || ((this.PropertyType == Types.String) && (!(this.Property.ToString().Length >= minNumber && this.Property.ToString().Length <= maxNumber)))) { this.IsValid = false; this.Errors.Rows.Add(new object[] { this.PropertyName, MessagesMale.Between(minNumber, maxNumber, this.PropertyType) }); } return(this); }