public class RequiredAttribute : System.ComponentModel.DataAnnotations.ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value == null ||
string.IsNullOrEmpty(value.ToString()) ||
string.IsNullOrWhiteSpace(value.ToString()) ||
value.ToString()?.Length == 0
)
{
throw new ApiException(FormatErrorMessage(validationContext.DisplayName), 400);
}
return ValidationResult.Success;
}
}
public class RegularExpressionAttribute : System.ComponentModel.DataAnnotations.ValidationAttribute
{
public RegularExpressionAttribute(string pattern)
{
Pattern = pattern;
}
private string Pattern { get; }
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var regex = new Regex(Pattern);
if (!regex.IsMatch(value.ToString() ?? string.Empty))
throw new ApiException(FormatErrorMessage(validationContext.DisplayName), 400);
return ValidationResult.Success;
}
}
public class MinLengthAttribute : System.ComponentModel.DataAnnotations.ValidationAttribute
{
public MinLengthAttribute(int length)
{
Length = length;
}
private int Length { get; }
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value.ToString()?.Length < Length)
throw new ApiException(FormatErrorMessage(validationContext.DisplayName), 400);
return ValidationResult.Success;
}
}
public class MinValueAttribute : System.ComponentModel.DataAnnotations.ValidationAttribute
{
public MinValueAttribute(int min)
{
Min = min;
}
private int Min { get; }
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
TryParse(value.ToString(), out var numValue);
if (numValue <= Min)
throw new ApiException(FormatErrorMessage(validationContext.DisplayName), 400);
return ValidationResult.Success;
}
}