Files
BeWoPlaner/BeWo/Validation/ValidationAttribute.cs

101 lines
3.3 KiB
C#

using System;
using System.Collections;
using System.Globalization;
using BS.Shared.Extensions;
namespace BeWo.Validation
{
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class ValidationAttribute : Attribute
{
public ValidationAttribute()
{
this.ValidationRule = ValidationRules.AlwaysValid;
}
public ValidationRules ValidationRule { get; set; }
public bool Validate(object pValue)
{
bool lResult = true;
switch (ValidationRule)
{
case ValidationRules.NotZero:
double lNumber;
var lIsNumber = Double.TryParse(pValue.ToStringNullCheck(), out lNumber);
if (lIsNumber)
{
lResult = Math.Abs(lNumber) > 0d;
}
break;
case ValidationRules.GreaterThanZero:
if (pValue == null)
{
lResult = false;
}
else
{
double lNumber2;
var lIsNumber2 = Double.TryParse(pValue.ToStringNullCheck(), out lNumber2);
if (lIsNumber2)
{
lResult = lNumber2 > 0d;
}
}
break;
case ValidationRules.GreaterThanOrEqualZero:
if (pValue == null)
{
lResult = false;
}
else
{
double lNumber3;
var lIsNumber3 = Double.TryParse(pValue.ToStringNullCheck(), out lNumber3);
if (lIsNumber3)
{
lResult = lNumber3 >= 0d;
}
}
break;
case ValidationRules.NotNullOrStringEmpty:
if (pValue is string)
{
lResult = ((string)pValue).Trim() != string.Empty;
}
else
{
lResult = pValue != null;
}
break;
case ValidationRules.EmptyNoticeInNewServiceRecordsAllowed:
if (MainSession.AppSettings.IsServiceRecordNoticeMandatory)
{
if (pValue is string)
{
lResult = ((string)pValue).Trim() != string.Empty;
}
else
{
lResult = pValue != null;
}
}
break;
case ValidationRules.CollectionNotEmpty:
if (pValue is ICollection)
{
lResult = (pValue as ICollection).Count > 0;
}
break;
}
return lResult;
}
}
}