Files
xCommons/Providers/XValidationProvider.cs
2024-01-25 04:39:39 +03:30

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
}
}