2d23dbc798
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 6m38s
- Added IbanNormalizer to validate and normalize IBAN numbers in RequestWithdrawalCommandHandler and UserWalletService. - Implemented error handling for invalid IBAN formats, ensuring compliance with expected standards. - Updated relevant methods to handle normalized IBANs for cash withdrawal requests.
35 lines
1.2 KiB
C#
35 lines
1.2 KiB
C#
using System.Text.RegularExpressions;
|
|
|
|
namespace CMSMicroservice.Application.Common;
|
|
|
|
/// <summary>
|
|
/// نرمالسازی و اعتبارسنجی شماره شبا ایران (IR + 24 رقم).
|
|
/// </summary>
|
|
public static class IbanNormalizer
|
|
{
|
|
private static readonly Regex IranianIbanRegex = new(@"^IR\d{24}$", RegexOptions.Compiled);
|
|
|
|
/// <summary>
|
|
/// فاصله و خط تیره را حذف میکند، به حروف بزرگ تبدیل میکند و یک پیشوند IR میگذارد.
|
|
/// در صورت نامعتبر بودن، null برمیگرداند.
|
|
/// </summary>
|
|
public static string? TryNormalize(string? iban)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(iban))
|
|
return null;
|
|
|
|
var normalized = iban.Trim().ToUpperInvariant()
|
|
.Replace(" ", "", StringComparison.Ordinal)
|
|
.Replace("-", "", StringComparison.Ordinal);
|
|
|
|
if (normalized.StartsWith("IR", StringComparison.Ordinal))
|
|
normalized = normalized[2..];
|
|
|
|
normalized = "IR" + normalized;
|
|
|
|
return IranianIbanRegex.IsMatch(normalized) ? normalized : null;
|
|
}
|
|
|
|
public static bool IsValid(string? iban) => TryNormalize(iban) is not null;
|
|
}
|