Files
ophelias-oasis/OpheliasOasis/Validation.cs
雲華 0ce34d9d23 Fixed an incorrect calulation
The calculations used in the reports were calulating based off the
owed column which mathematically did not make sense since we are looking
for the daily.
2022-04-17 17:44:41 -04:00

65 lines
2.6 KiB
C#

using System.Text.RegularExpressions;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
namespace Ophelias.Expressions
{
internal static class Expressions
{
/*
* These are a collection of regular expressions used in the validation class.
* They exist in their own class to better isolate them and make it easier to
* find.
*
* CardRx
* Regular expression to check for 16 digit credit cards
*
* ExpirationRx
* Ensures that a card expires sometime in past 2021
*
* CCVRx
* Checks to make sure the input is 3 digits
*
* MoneyRx
* Basic check to make sure money is in US format. 300.20/ 0.00 etc.
*/
internal static Regex CardRx = new(@"^[0-9]{16}$", RegexOptions.Compiled);
internal static Regex ExpriationRx = new(@"^(0?[1-9]|1[012])/2[0-9]{1}$", RegexOptions.Compiled);
internal static Regex CCVRx = new(@"^[0-9]{3}$", RegexOptions.Compiled);
internal static Regex MoneyRx = new(@"^(\d+\.\d{2}|\d+)$", RegexOptions.Compiled);
}
internal static class Validation
{
internal static bool ValidateCreditCard(string CreditCard) // Returns if the regex evaluates true or false
{
return Expressions.CardRx.IsMatch(CreditCard);
}
internal static bool ValidateExpirationDate(string Expiration) // Returns if the regex evaluates true or false
{
if (Expressions.ExpriationRx.IsMatch(Expiration))
{
DateTime dt = DateTime.ParseExact(Expiration, "MM/yy", CultureInfo.InvariantCulture); // Converts to date time for comparison
if (dt.Date >= DateTime.Now.Date)
return true;
}
return false;
}
internal static bool ValidateEmail(string email) // Returns if the regex evaluates true or false
{
EmailAddressAttribute EmailChecker = new(); // Creates an email checker based off the EmailAddressAttribute class
return EmailChecker.IsValid(email);
}
internal static bool ValidateCCV(string CCV) // Returns if the regex evaluates true or false
{
if (Expressions.CCVRx.IsMatch(CCV))
return true;
return false;
}
internal static bool ValidateMoney(string Money) // Returns if the regex evaluates true or false
{
return Expressions.MoneyRx.IsMatch(Money);
}
}
}