Use the validation manager class.
Here testing the Mail objects.
and in activity we have to use the attribute like....
[ActivityValidator (typeof (Anada.AbsenceManager.Workflow.Activity.CalendarPersonIDValidation ))]
public class SendMailValidation : ActivityValidator
{
#region"SendMailActivityParameterValidation"
//
// Method used to validate TO and From Email address
//
//
//
public override ValidationErrorCollection ValidateProperties(ValidationManager manager, object obj)
{
ValidationErrorCollection ValidationErrors = new ValidationErrorCollection(base.ValidateProperties(manager, obj));
SendMailActivity SendMailActivityTobeValidated = new SendMailActivity();
if (SendMailActivityTobeValidated == null)
{
throw new InvalidOperationException("Parameter obj is not of type SendMailActivity");
}
if (!IsValidEmailAddress(SendMailActivityTobeValidated.To))
{
ValidationError CustomActivityValidationError = new ValidationError(string.Format("\'{0}\' is an Invalid destination e-mail address", SendMailActivityTobeValidated.To), 1);
ValidationErrors.Add(CustomActivityValidationError);
}
if (!IsValidEmailAddress(SendMailActivityTobeValidated.From))
{
ValidationError CustomActivityValidationError = new ValidationError(string.Format("\'{0}\' is an Invalid destination e-mail address", SendMailActivityTobeValidated.From), 1);
ValidationErrors.Add(CustomActivityValidationError);
}
return ValidationErrors;
}
public Boolean IsValidEmailAddress(String address)
{
//
// Method used to check the length and formate of Email address
//
//
//
// must only proceed with validation if we have data
// to validate
if (address == null address.Length == 0)
return true;
Regex rx = new Regex(@"[^A-Za-z0-9@\-_.]", RegexOptions.Compiled);
MatchCollection matches = rx.Matches(address);
if (matches.Count > 0)
return false;
// Must have an '@' character
int i = address.IndexOf('@');
// Must be at least three chars after the @
if (i <= 0 i >= address.Length - 3)
return false;
// Must only be one '@' character
if (address.IndexOf('@', i + 1) >= 0)
return false;
// Find the last . in the address
int j = address.LastIndexOf('.');
// The dot can't be before or immediately after the @ char
if (j >= 0 && j <= i + 1)
return false;
return true;
}
#endregion
}
No comments:
Post a Comment