kreta/Kreta.Core/CustomAttributes/AdoszamExtendedAttribute.cs
2024-03-13 00:33:46 +01:00

47 lines
1.6 KiB
C#

using System;
using System.ComponentModel.DataAnnotations;
using System.Text.RegularExpressions;
namespace Kreta.Core.CustomAttributes
{
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter)]
public class AdoszamExtendedAttribute : DataTypeAttribute
{
public bool IsNullValid { get; }
public bool IsEmptyValid { get; }
public AdoszamExtendedAttribute(bool isNullValid = true, bool isEmptyValid = true) : base(DataType.Custom)
{
IsNullValid = isNullValid;
IsEmptyValid = isEmptyValid;
}
public override bool IsValid(object value)
{
//NOTE: Null esetében, az IsNullValid property értékétől függően térünk vissza, hogy valid-e vagy sem!
if (value == null)
{
return IsNullValid;
}
string valueAsString = value as string;
//NOTE: Ha nem sikerül string-é alakítani a nem null value-t, akkor rossz a value típusa, ezért nem lesz valid!
if (valueAsString == null)
{
return false;
}
//NOTE: Üres string esetében, az IsEmptyValid property értékétől függően térünk vissza, hogy valid-e vagy sem!
if (valueAsString == string.Empty)
{
return IsEmptyValid;
}
//NOTE: Levalidáljuk a Regex alapján!
Match match = new Regex(Constants.RegularExpressions.Adoszam).Match(valueAsString);
return match.Success;
}
}
}