88 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
| namespace System.ComponentModel.DataAnnotations;
 | |
| 
 | |
| [AttributeUsage(
 | |
|  AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter,
 | |
|  AllowMultiple = false)]
 | |
| public class GuidNotEmptyAttribute : ValidationAttribute
 | |
| {
 | |
|     public const string DefaultErrorMessage = "The {0} field must not be empty";
 | |
|     public GuidNotEmptyAttribute() : base(DefaultErrorMessage) { }
 | |
| 
 | |
|     public override bool IsValid(object value)
 | |
|     {
 | |
|         //NotEmpty doesn't necessarily mean required
 | |
|         if (value is null)
 | |
|         {
 | |
|             return true;
 | |
|         }
 | |
| 
 | |
|         switch (value)
 | |
|         {
 | |
|             case Guid guid:
 | |
|                 return guid != Guid.Empty;
 | |
|             default:
 | |
|                 return true;
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| public class NotDefaultAttribute : ValidationAttribute
 | |
| {
 | |
|     public const string DefaultErrorMessage = "The {0} field is is not passed or not set a valid value";
 | |
|     public NotDefaultAttribute() : base(DefaultErrorMessage) { }
 | |
| 
 | |
|     public override bool IsValid(object value)
 | |
|     {
 | |
|         //NotDefault doesn't necessarily mean required
 | |
|         if (value is null)
 | |
|         {
 | |
|             return true;
 | |
|         }
 | |
| 
 | |
|         var type = value.GetType();
 | |
|         if (type.IsValueType)
 | |
|         {
 | |
|             var defaultValue = Activator.CreateInstance(type);
 | |
|             return !value.Equals(defaultValue);
 | |
|         }
 | |
| 
 | |
|         // non-null ref type
 | |
|         return true;
 | |
|     }
 | |
| }
 | |
| public class CanConvertToTimeAttribute : ValidationAttribute
 | |
| {
 | |
|     public const string DefaultErrorMessage = "The {0} field is is  not  a valid  DateTime value";
 | |
|     public CanConvertToTimeAttribute() : base(DefaultErrorMessage) { }
 | |
| 
 | |
|     public override bool IsValid(object value)
 | |
|     {
 | |
|         if (value is null)
 | |
|         {
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         if (DateTime.TryParse(value.ToString(), out _) == true)
 | |
|         {
 | |
|             return true;
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             return false;
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
 | |
| public class DecimalPrecisionAttribute : Attribute
 | |
| {
 | |
|     public int Precision { get; }
 | |
|     public int Scale { get; }
 | |
| 
 | |
|     public DecimalPrecisionAttribute(int precision, int scale)
 | |
|     {
 | |
|         Precision = precision;
 | |
|         Scale = scale;
 | |
|     }
 | |
| }
 |