405 lines
10 KiB
C#
405 lines
10 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using xCommons.Extensions;
|
|
using xExceptions.Constants;
|
|
|
|
namespace xCommons.Providers {
|
|
public partial class XValidationProvider {
|
|
private ICollection<System.Action> validationGroup;
|
|
|
|
//
|
|
#region Simple Validators ...
|
|
/// <summary>
|
|
/// given objects must not null
|
|
/// </summary>
|
|
/// <param name="values"></param>
|
|
public void NotNull (
|
|
params object[] values) {
|
|
//
|
|
foreach (var o in values) {
|
|
//
|
|
if (o == null) {
|
|
XException.InvalidArgs.Throw ();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// given strings must not empty or null
|
|
/// </summary>
|
|
/// <param name="values"></param>
|
|
public void NotEmpty (
|
|
params string[] values) {
|
|
//
|
|
foreach (var s in values) {
|
|
//
|
|
if (s.IsNullOrEmpty ()) {
|
|
XException.InvalidArgs.Throw ();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Check a numeric value is bigger than 0
|
|
/// </summary>
|
|
/// <param name="values"></param>
|
|
public void NotZero (
|
|
params int[] values) {
|
|
//
|
|
foreach (var s in values) {
|
|
//
|
|
if (s == 0) {
|
|
XException.InvalidArgs.Throw ();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Check a numeric value is bigger than 0
|
|
/// </summary>
|
|
/// <param name="values"></param>
|
|
public void NotZero (
|
|
params long[] values) {
|
|
//
|
|
foreach (var s in values) {
|
|
//
|
|
if (s == 0) {
|
|
XException.InvalidArgs.Throw ();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Check a numeric value is bigger than 0
|
|
/// </summary>
|
|
/// <param name="values"></param>
|
|
public void NotZero (
|
|
params decimal[] values) {
|
|
//
|
|
foreach (var s in values) {
|
|
//
|
|
if (s == 0) {
|
|
XException.InvalidArgs.Throw ();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Check a Value is a Valid Guid ...
|
|
/// </summary>
|
|
/// <param name="values"></param>
|
|
public void IsGuid (params string[] values) {
|
|
//
|
|
foreach (var s in values) {
|
|
//
|
|
if (!s.IsGuid () || s.IsDefaultGuid ()) {
|
|
XException.InvalidArgs.Throw ();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Check a Value is a Valid Guid ...
|
|
/// </summary>
|
|
/// <param name="values"></param>
|
|
public void IsGuid (params Guid[] values) {
|
|
//
|
|
foreach (var s in values) {
|
|
//
|
|
if (s.IsNull () || s.IsDefaultGuid ()) {
|
|
XException.InvalidArgs.Throw ();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Check a Value is an MD5 ...
|
|
/// </summary>
|
|
/// <param name="values"></param>
|
|
public void IsMD5 (params string[] values) {
|
|
//
|
|
foreach (var s in values) {
|
|
//
|
|
if (!s.IsMD5String ()) {
|
|
XException.InvalidArgs.Throw ();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// non zero childs
|
|
/// </summary>
|
|
/// <param name="values"></param>
|
|
public void NotZeroChilds (
|
|
params IEnumerable<object>[] values) {
|
|
//
|
|
foreach (var s in values) {
|
|
//
|
|
if (s == null ||
|
|
s.Count () == 0) {
|
|
XException.InvalidArgs.Throw ();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// non zero childs
|
|
/// </summary>
|
|
/// <param name="values"></param>
|
|
public void NotZeroChilds (
|
|
params ICollection<object>[] values) {
|
|
//
|
|
foreach (var s in values) {
|
|
//
|
|
if (s == null ||
|
|
s.Count == 0) {
|
|
XException.InvalidArgs.Throw ();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// given string must be a valid URL ...
|
|
/// </summary>
|
|
/// <param name="url"></param>
|
|
/// <param name="exception"></param>
|
|
public void Url (
|
|
string url,
|
|
Exception exception = null
|
|
) {
|
|
//
|
|
NotEmpty (url);
|
|
|
|
//
|
|
if (exception == null) {
|
|
exception = XException.InavlidUrl.ToException ();
|
|
}
|
|
|
|
//
|
|
if (!url.IsValidUrl ()) {
|
|
throw exception;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// given string must be a valid Email Address ...
|
|
/// </summary>
|
|
/// <param name="emailAdress"></param>
|
|
/// <param name="exception"></param>
|
|
public void EmailAddress (
|
|
string emailAdress,
|
|
Exception exception = null
|
|
) {
|
|
//
|
|
NotEmpty (emailAdress);
|
|
|
|
//
|
|
if (exception == null) {
|
|
exception = XException.InvalidEmailAddress.ToException ();
|
|
}
|
|
|
|
//
|
|
if (!emailAdress.IsValidEmail ()) {
|
|
throw exception;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// given string must be a valid Mobile Number ...
|
|
/// </summary>
|
|
/// <param name="mobileNumber"></param>
|
|
/// <param name="exception"></param>
|
|
public void MobileNumber (
|
|
string mobileNumber,
|
|
Exception exception = null
|
|
) {
|
|
//
|
|
NotEmpty (mobileNumber);
|
|
|
|
//
|
|
if (exception == null) {
|
|
exception = XException.InvalidMobileNumber.ToException ();
|
|
}
|
|
|
|
//
|
|
if (!mobileNumber.IsValidMobileNumber ()) {
|
|
throw exception;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
//
|
|
#region Group Validatos ...
|
|
public XValidationProvider GroupValidationBuilder () {
|
|
//
|
|
validationGroup = new List<System.Action> ();
|
|
|
|
//
|
|
return this;
|
|
}
|
|
|
|
public XValidationProvider AddNotEmpty (params string[] values) {
|
|
//
|
|
this.validationGroup.Add (() =>
|
|
this.NotEmpty (values)
|
|
);
|
|
|
|
//
|
|
return this;
|
|
}
|
|
|
|
public XValidationProvider AddNotNull (params object[] values) {
|
|
//
|
|
this.validationGroup.Add (() =>
|
|
this.NotNull (values)
|
|
);
|
|
|
|
//
|
|
return this;
|
|
}
|
|
|
|
public XValidationProvider AddNotZero (params int[] values) {
|
|
//
|
|
this.validationGroup.Add (() =>
|
|
this.NotZero (values)
|
|
);
|
|
|
|
//
|
|
return this;
|
|
}
|
|
|
|
public XValidationProvider AddNotZero (params long[] values) {
|
|
//
|
|
this.validationGroup.Add (() =>
|
|
this.NotZero (values)
|
|
);
|
|
|
|
//
|
|
return this;
|
|
}
|
|
|
|
public XValidationProvider AddNotZero (params decimal[] values) {
|
|
//
|
|
this.validationGroup.Add (() =>
|
|
this.NotZero (values)
|
|
);
|
|
|
|
//
|
|
return this;
|
|
}
|
|
|
|
public XValidationProvider AddIsGuid (params string[] values) {
|
|
//
|
|
this.validationGroup.Add (() =>
|
|
this.IsGuid (values)
|
|
);
|
|
|
|
//
|
|
return this;
|
|
}
|
|
|
|
public XValidationProvider AddIsGuid (params Guid[] values) {
|
|
//
|
|
this.validationGroup.Add (() =>
|
|
this.IsGuid (values)
|
|
);
|
|
|
|
//
|
|
return this;
|
|
}
|
|
|
|
public XValidationProvider AddIsMD5 (params string[] values) {
|
|
//
|
|
this.validationGroup.Add (() =>
|
|
this.IsMD5 (values)
|
|
);
|
|
|
|
//
|
|
return this;
|
|
}
|
|
|
|
public XValidationProvider AddNotZeroChilds (params IEnumerable<object>[] values) {
|
|
//
|
|
this.validationGroup.Add (() =>
|
|
this.NotZeroChilds (values)
|
|
);
|
|
|
|
//
|
|
return this;
|
|
}
|
|
|
|
public XValidationProvider AddNotZeroChilds (params ICollection<object>[] values) {
|
|
//
|
|
this.validationGroup.Add (() =>
|
|
this.NotZeroChilds (values)
|
|
);
|
|
|
|
//
|
|
return this;
|
|
}
|
|
|
|
public XValidationProvider AddEmailAddress (
|
|
string emailAdress,
|
|
Exception exception = null) {
|
|
//
|
|
this.validationGroup.Add (() =>
|
|
this.EmailAddress (emailAdress, exception)
|
|
);
|
|
|
|
//
|
|
return this;
|
|
}
|
|
|
|
public XValidationProvider AddMobileNumber (
|
|
string mobileNumber,
|
|
Exception exception = null) {
|
|
//
|
|
this.validationGroup.Add (() =>
|
|
this.MobileNumber (mobileNumber, exception)
|
|
);
|
|
|
|
//
|
|
return this;
|
|
}
|
|
|
|
public XValidationProvider AddUrl (
|
|
string url,
|
|
Exception exception = null) {
|
|
//
|
|
this.validationGroup.Add (() =>
|
|
this.Url (url, exception)
|
|
);
|
|
|
|
//
|
|
return this;
|
|
}
|
|
|
|
public void ValidateGroup () {
|
|
//
|
|
// Run each Tasks ...
|
|
foreach (var action in validationGroup) {
|
|
action.Invoke ();
|
|
}
|
|
|
|
//
|
|
// Clear Task List ...
|
|
validationGroup.Clear ();
|
|
}
|
|
|
|
public async Task ValidateGroupAsync () {
|
|
//
|
|
// Run each Tasks ...
|
|
foreach (var action in validationGroup) {
|
|
await Task.Run (action);
|
|
}
|
|
|
|
//
|
|
// Clear Task List ...
|
|
validationGroup.Clear ();
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
} |