Api/NetinaShop.Common/Extensions/PhoneNumberExtensions.cs

41 lines
1.8 KiB
C#

using System.Text.RegularExpressions;
namespace NetinaShop.Common.Extensions;
public static class PhoneNumberExtensions
{
public static bool CheckPhoneNumber(string phoneNumber)
{
var regex = new Regex(@"(^(989|0989|\+989|09|9)[0-9]{9}$)");
return regex.IsMatch(phoneNumber);
}
public static string GetVerifyFromPhoneNumber(string phoneNumber)
{
var dateTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute / 5, 0);
var timeStamp = ((DateTimeOffset)dateTime).ToUnixTimeMilliseconds() / 10000;
int FTD = int.Parse(string.Format("{0}{1}{2}",
GetSumDigit(int.Parse(string.Format("{0}{1}{2}", phoneNumber[5], phoneNumber[7], phoneNumber[9]))) % 10,
GetSumDigit(int.Parse(string.Format("{0}{1}{2}", phoneNumber[4], phoneNumber[6], phoneNumber[8]))) % 10,
GetSumDigit(int.Parse(string.Format("{0}{1}{2}", phoneNumber[10], phoneNumber[9], phoneNumber[8]))) % 10));
int ATD = GetSumDigit(((int)timeStamp % 1000) + FTD);
timeStamp = (int)timeStamp / 1000;
int BTD = GetSumDigit(((int)timeStamp % 1000) + ATD);
timeStamp = (int)timeStamp / 1000;
int CTD = GetSumDigit(((int)timeStamp % 1000) + ATD);
FTD = GetSumDigit(FTD);
if (ATD % 2 == 0)
return string.Format("{0}{1}{2}{3}", GetSumDigit(ATD) % 10, GetSumDigit(BTD) % 10, GetSumDigit(CTD) % 10, GetSumDigit(FTD) % 10);
else
return string.Format("{0}{1}{2}{3}", ATD % 10, BTD % 10, CTD % 10, FTD % 10);
}
private static int GetSumDigit(int number)
{
string sNumber = number.ToString();
int total = 0;
foreach (var s in sNumber)
total += int.Parse(s.ToString());
return total;
}
}