2025-09-28 01:28:44 +03:30
|
|
|
|
using System.ComponentModel.DataAnnotations;
|
2025-10-13 08:42:31 +03:30
|
|
|
|
using System.Globalization;
|
2025-09-28 01:28:44 +03:30
|
|
|
|
using System.Net;
|
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
|
using System.Text.RegularExpressions;
|
|
|
|
|
|
using Google.Protobuf.WellKnownTypes;
|
|
|
|
|
|
using Microsoft.AspNetCore.Components.Forms;
|
|
|
|
|
|
|
|
|
|
|
|
namespace FrontOffice.Main.Utilities;
|
|
|
|
|
|
|
|
|
|
|
|
public static class Extensions
|
|
|
|
|
|
{
|
2025-10-13 08:42:31 +03:30
|
|
|
|
public static CultureInfo GetPersianCulture()
|
|
|
|
|
|
{
|
|
|
|
|
|
var culture = new CultureInfo("fa-IR");
|
|
|
|
|
|
DateTimeFormatInfo formatInfo = culture.DateTimeFormat;
|
|
|
|
|
|
formatInfo.AbbreviatedDayNames = new[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
|
|
|
|
|
|
formatInfo.DayNames = new[] { "یکشنبه", "دوشنبه", "سه شنبه", "چهار شنبه", "پنجشنبه", "جمعه", "شنبه" };
|
|
|
|
|
|
var monthNames = new[]
|
|
|
|
|
|
{
|
|
|
|
|
|
"فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن",
|
|
|
|
|
|
"اسفند",
|
|
|
|
|
|
"",
|
|
|
|
|
|
};
|
|
|
|
|
|
formatInfo.AbbreviatedMonthNames =
|
|
|
|
|
|
formatInfo.MonthNames =
|
|
|
|
|
|
formatInfo.MonthGenitiveNames = formatInfo.AbbreviatedMonthGenitiveNames = monthNames;
|
|
|
|
|
|
formatInfo.AMDesignator = "ق.ظ";
|
|
|
|
|
|
formatInfo.PMDesignator = "ب.ظ";
|
|
|
|
|
|
formatInfo.ShortDatePattern = "yyyy/MM/dd";
|
|
|
|
|
|
formatInfo.LongDatePattern = "dddd, dd MMMM,yyyy";
|
|
|
|
|
|
formatInfo.FirstDayOfWeek = DayOfWeek.Saturday;
|
|
|
|
|
|
Calendar cal = new PersianCalendar();
|
|
|
|
|
|
FieldInfo fieldInfo = culture.GetType().GetField("calendar", BindingFlags.NonPublic | BindingFlags.Instance);
|
|
|
|
|
|
if (fieldInfo != null)
|
|
|
|
|
|
fieldInfo.SetValue(culture, cal);
|
|
|
|
|
|
FieldInfo info = formatInfo.GetType().GetField("calendar", BindingFlags.NonPublic | BindingFlags.Instance);
|
|
|
|
|
|
if (info != null)
|
|
|
|
|
|
info.SetValue(formatInfo, cal);
|
|
|
|
|
|
culture.NumberFormat.NumberDecimalSeparator = "/";
|
|
|
|
|
|
culture.NumberFormat.DigitSubstitution = DigitShapes.NativeNational;
|
|
|
|
|
|
culture.NumberFormat.NumberNegativePattern = 0;
|
|
|
|
|
|
return culture;
|
|
|
|
|
|
}
|
2025-09-28 01:28:44 +03:30
|
|
|
|
public static string ExtractUserFriendlyMessage(this string errorMessage)
|
|
|
|
|
|
{
|
|
|
|
|
|
// کلیدواژهای که بعد از آن بخش مورد نظر شروع میشود
|
|
|
|
|
|
string keyword = "Exception:";
|
|
|
|
|
|
|
|
|
|
|
|
// بررسی وجود کلیدواژه در پیام خطا
|
|
|
|
|
|
int keywordIndex = errorMessage.IndexOf(keyword);
|
|
|
|
|
|
|
|
|
|
|
|
if (keywordIndex >= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
// استخراج بخش بعد از کلیدواژه
|
|
|
|
|
|
string userFriendlyMessage = errorMessage.Substring(keywordIndex + keyword.Length).Trim();
|
|
|
|
|
|
if (userFriendlyMessage.EndsWith(")"))
|
|
|
|
|
|
{
|
|
|
|
|
|
userFriendlyMessage = userFriendlyMessage.Substring(0, userFriendlyMessage.Length - 2);
|
|
|
|
|
|
}
|
|
|
|
|
|
return userFriendlyMessage;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// اگر کلیدواژه وجود نداشت، کل پیام خطا برگردانده شود
|
|
|
|
|
|
return errorMessage;
|
|
|
|
|
|
}
|
|
|
|
|
|
public static string DiffDateTime(this DateTime dateTime)
|
|
|
|
|
|
{
|
|
|
|
|
|
const int SECOND = 1;
|
|
|
|
|
|
const int MINUTE = 60 * SECOND;
|
|
|
|
|
|
const int HOUR = 60 * MINUTE;
|
|
|
|
|
|
const int DAY = 24 * HOUR;
|
|
|
|
|
|
const int MONTH = 30 * DAY;
|
|
|
|
|
|
var ts = new TimeSpan(DateTime.Now.Ticks - dateTime.Ticks);
|
|
|
|
|
|
double delta = Math.Abs(ts.TotalSeconds);
|
|
|
|
|
|
if (delta < 1 * MINUTE)
|
|
|
|
|
|
{
|
|
|
|
|
|
return ts.Seconds == 1 ? "لحظه ای قبل" : ts.Seconds + " ثانیه قبل";
|
|
|
|
|
|
}
|
|
|
|
|
|
if (delta < 2 * MINUTE)
|
|
|
|
|
|
{
|
|
|
|
|
|
return "یک دقیقه قبل";
|
|
|
|
|
|
}
|
|
|
|
|
|
if (delta < 45 * MINUTE)
|
|
|
|
|
|
{
|
|
|
|
|
|
return ts.Minutes + " دقیقه قبل";
|
|
|
|
|
|
}
|
|
|
|
|
|
if (delta < 90 * MINUTE)
|
|
|
|
|
|
{
|
|
|
|
|
|
return "یک ساعت قبل";
|
|
|
|
|
|
}
|
|
|
|
|
|
if (delta < 24 * HOUR)
|
|
|
|
|
|
{
|
|
|
|
|
|
return ts.Hours + " ساعت قبل";
|
|
|
|
|
|
}
|
|
|
|
|
|
if (delta < 48 * HOUR)
|
|
|
|
|
|
{
|
|
|
|
|
|
return "دیروز";
|
|
|
|
|
|
}
|
|
|
|
|
|
if (delta < 30 * DAY)
|
|
|
|
|
|
{
|
|
|
|
|
|
return ts.Days + " روز قبل";
|
|
|
|
|
|
}
|
|
|
|
|
|
if (delta < 12 * MONTH)
|
|
|
|
|
|
{
|
|
|
|
|
|
int months = Convert.ToInt32(Math.Floor((double)ts.Days / 30));
|
|
|
|
|
|
return months <= 1 ? "یک ماه قبل" : months + " ماه قبل";
|
|
|
|
|
|
}
|
|
|
|
|
|
int years = Convert.ToInt32(Math.Floor((double)ts.Days / 365));
|
|
|
|
|
|
return years <= 1 ? "یک سال قبل" : years + " سال قبل";
|
|
|
|
|
|
}
|
|
|
|
|
|
public static string StripHtmlTags(this string html)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (string.IsNullOrEmpty(html))
|
|
|
|
|
|
return string.Empty;
|
|
|
|
|
|
|
|
|
|
|
|
// حذف تمامی تگهای HTML
|
|
|
|
|
|
string textOnly = Regex.Replace(html, "<.*?>", string.Empty);
|
|
|
|
|
|
|
|
|
|
|
|
// تبدیل کاراکترهای HTML به متن معمولی (مثلاً -> فضای خالی)
|
|
|
|
|
|
textOnly = WebUtility.HtmlDecode(textOnly);
|
|
|
|
|
|
|
|
|
|
|
|
return textOnly.Trim();
|
|
|
|
|
|
}
|
|
|
|
|
|
public static string ConfuseId(this string? value)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(value) && value.Length > 6)
|
|
|
|
|
|
return string.Concat(value[..3], "*****", value.AsSpan(value.Length - 3, 3));
|
|
|
|
|
|
else if (!string.IsNullOrWhiteSpace(value) && value.Length > 4)
|
|
|
|
|
|
return string.Concat(value[..2], "*****", value.AsSpan(value.Length - 2, 2));
|
|
|
|
|
|
else
|
|
|
|
|
|
return value;
|
|
|
|
|
|
}
|
|
|
|
|
|
public static Timestamp DateTimeToTimestamp(this DateTime dateTime)
|
|
|
|
|
|
{
|
|
|
|
|
|
return Timestamp.FromDateTime(DateTime.SpecifyKind(dateTime, DateTimeKind.Utc));
|
|
|
|
|
|
}
|
|
|
|
|
|
public static Timestamp? DateTimeToTimestamp(this DateTime? dateTime)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (dateTime == null)
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
|
|
|
|
return Timestamp.FromDateTime(DateTime.SpecifyKind(dateTime.Value, DateTimeKind.Utc));
|
|
|
|
|
|
}
|
|
|
|
|
|
//public static string ToThousands(this string numberString)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// if (double.TryParse(numberString, out var number))
|
|
|
|
|
|
// {
|
|
|
|
|
|
// return string.Format("{0:#,###0.################}", number);
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
// return numberString;
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
public static string ToThousands(this string numberString)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (double.TryParse(numberString, out var number))
|
|
|
|
|
|
{
|
|
|
|
|
|
// حذف اعشار
|
|
|
|
|
|
var integerPart = Math.Truncate(number);
|
|
|
|
|
|
|
|
|
|
|
|
// فرمتبندی سه رقمی
|
|
|
|
|
|
return string.Format("{0:#,###0}", integerPart);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if (numberString.Split('.').Length > 1)
|
|
|
|
|
|
return numberString.Split('.')[0];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return numberString;
|
|
|
|
|
|
}
|
|
|
|
|
|
public static string ToThousands(this long number)
|
|
|
|
|
|
{
|
|
|
|
|
|
return number.ToString().ToThousands();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static string ToThousands(this long? number)
|
|
|
|
|
|
{
|
|
|
|
|
|
return number?.ToString().ToThousands();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static string ToThousands(this int number)
|
|
|
|
|
|
{
|
|
|
|
|
|
return number.ToString().ToThousands();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static string ToThousands(this int? number)
|
|
|
|
|
|
{
|
|
|
|
|
|
return number?.ToString().ToThousands();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static string ToThousands(this float number)
|
|
|
|
|
|
{
|
|
|
|
|
|
return number.ToString().ToThousands();
|
|
|
|
|
|
}
|
|
|
|
|
|
public static string ToThousands(this float? number)
|
|
|
|
|
|
{
|
|
|
|
|
|
return number?.ToString().ToThousands();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static string ToThousands(this double number)
|
|
|
|
|
|
{
|
|
|
|
|
|
return number.ToString().ToThousands();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static string ToThousands(this double? number)
|
|
|
|
|
|
{
|
|
|
|
|
|
return number?.ToString().ToThousands();
|
|
|
|
|
|
}
|
|
|
|
|
|
public static long ToIRT(this long number)
|
|
|
|
|
|
{
|
|
|
|
|
|
return (long)(number * 0.1);
|
|
|
|
|
|
}
|
|
|
|
|
|
public static string ToCurrencyUnitIRR(this string str) => str + " ریال";
|
|
|
|
|
|
public static string ToCurrencyUnitIRT(this string str) => str + " تومان";
|
|
|
|
|
|
public static string FaToAr(this string str) => str.Replace("ک", "ك").Replace("ی", "ي");
|
|
|
|
|
|
public static string ArToFa(this string str) => str.Replace("ك", "ک").Replace("ي", "ی");
|
|
|
|
|
|
|
|
|
|
|
|
public static string Truncate(this string value, int maxLength, bool isAppendDots = false)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (string.IsNullOrEmpty(value)) return value;
|
|
|
|
|
|
return value.Length <= maxLength ? value : isAppendDots ? value.Substring(0, maxLength) + "..." : value.Substring(0, maxLength);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static string PersianToEnglish(this string persianStr)
|
|
|
|
|
|
{
|
|
|
|
|
|
return persianStr.Replace("۰", "0")
|
|
|
|
|
|
.Replace("۱", "1")
|
|
|
|
|
|
.Replace("۲", "2")
|
|
|
|
|
|
.Replace("۳", "3")
|
|
|
|
|
|
.Replace("۴", "4")
|
|
|
|
|
|
.Replace("۵", "5")
|
|
|
|
|
|
.Replace("۶", "6")
|
|
|
|
|
|
.Replace("۷", "7")
|
|
|
|
|
|
.Replace("۸", "8")
|
|
|
|
|
|
.Replace("۹", "9");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static string GetDisplayName(this System.Enum enumValue)
|
|
|
|
|
|
{
|
|
|
|
|
|
return enumValue.GetType()
|
|
|
|
|
|
.GetMember(enumValue.ToString())
|
|
|
|
|
|
.First()
|
|
|
|
|
|
.GetCustomAttribute<DisplayAttribute>()
|
|
|
|
|
|
.GetName();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static async Task<string> ConvertIBrowserFileToBase64(this IBrowserFile? file)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (file == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
return string.Empty;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const long maxAllowedSize = 1024 * 1024 * 200;
|
|
|
|
|
|
var imageBuffers = new byte[file.Size];
|
|
|
|
|
|
using (var stream = file.OpenReadStream(maxAllowedSize))
|
|
|
|
|
|
{
|
|
|
|
|
|
await stream.ReadAsync(imageBuffers);
|
|
|
|
|
|
}
|
|
|
|
|
|
return $"data:{file.ContentType};base64," + Convert.ToBase64String(imageBuffers);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static string GetNumberToPersianString(this string txt)
|
|
|
|
|
|
{
|
|
|
|
|
|
string RET = " ", STRVA = " ";
|
|
|
|
|
|
string[] MainStr = STR_To_Int(txt);
|
|
|
|
|
|
int Q = 0;
|
|
|
|
|
|
for (int i = MainStr.Length - 1; i >= 0; i--)
|
|
|
|
|
|
{
|
|
|
|
|
|
STRVA = " ";
|
|
|
|
|
|
if (RET != " " && RET != null)
|
|
|
|
|
|
STRVA = " و ";
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(Convert_STR(GETCountStr(MainStr[i]), Q)))
|
|
|
|
|
|
RET = Convert_STR(GETCountStr(MainStr[i]), Q) + RET;
|
|
|
|
|
|
else
|
|
|
|
|
|
RET = Convert_STR(GETCountStr(MainStr[i]), Q) + STRVA + RET;
|
|
|
|
|
|
|
|
|
|
|
|
Q++;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (RET == " " || RET == null || RET == " ")
|
|
|
|
|
|
RET = "صفر";
|
|
|
|
|
|
return RET;
|
|
|
|
|
|
}
|
|
|
|
|
|
private static string[] STR_To_Int(string STR)
|
|
|
|
|
|
{
|
|
|
|
|
|
STR = GETCountStr(STR);
|
|
|
|
|
|
string[] RET = new string[STR.Length / 3];
|
|
|
|
|
|
int Q = 0;
|
|
|
|
|
|
for (int I = 0; I < STR.Length; I += 3)
|
|
|
|
|
|
{
|
|
|
|
|
|
RET[Q] = STR.Substring(I, 3);
|
|
|
|
|
|
Q++;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return RET;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static string GETCountStr(string STR)
|
|
|
|
|
|
{
|
|
|
|
|
|
string RET = STR;
|
|
|
|
|
|
int LEN = (STR.Length / 3 + 1) * 3 - STR.Length;
|
|
|
|
|
|
if (LEN < 3)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < LEN; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
RET = "0" + RET;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (RET == "")
|
|
|
|
|
|
return "000";
|
|
|
|
|
|
return RET;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static string Convert_STR(string INT, int Count)
|
|
|
|
|
|
{
|
|
|
|
|
|
string RET = "";
|
|
|
|
|
|
//یک صد
|
|
|
|
|
|
if (Count == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (INT.Substring(1, 1) == "1" && INT.Substring(2, 1) != "0")
|
|
|
|
|
|
{
|
|
|
|
|
|
RET = GET_Number(3, Convert.ToInt32(INT.Substring(0, 1)), " ") + GET_Number(1, Convert.ToInt32(INT.Substring(2, 1)), "");
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
string STR = GET_Number(0, Convert.ToInt32(INT.Substring(2, 1)), "");
|
|
|
|
|
|
RET = GET_Number(3, Convert.ToInt32(INT.Substring(0, 1)), GET_Number(2, Convert.ToInt32(INT.Substring(1, 1)), "") + STR) + GET_Number(2, Convert.ToInt32(INT.Substring(1, 1)), STR) + GET_Number(0, Convert.ToInt32(INT.Substring(2, 1)), "");
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//هزار
|
|
|
|
|
|
else if (Count == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
RET = Convert_STR(INT, 0);
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(RET))
|
|
|
|
|
|
return string.Empty;
|
|
|
|
|
|
RET += " هزار";
|
|
|
|
|
|
}
|
|
|
|
|
|
//میلیون
|
|
|
|
|
|
else if (Count == 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
RET = Convert_STR(INT, 0);
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(RET))
|
|
|
|
|
|
return string.Empty;
|
|
|
|
|
|
RET += " میلیون";
|
|
|
|
|
|
}
|
|
|
|
|
|
//میلیارد
|
|
|
|
|
|
else if (Count == 3)
|
|
|
|
|
|
{
|
|
|
|
|
|
RET = Convert_STR(INT, 0);
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(RET))
|
|
|
|
|
|
return string.Empty;
|
|
|
|
|
|
RET += " میلیارد";
|
|
|
|
|
|
}
|
|
|
|
|
|
//میلیارد
|
|
|
|
|
|
else if (Count == 4)
|
|
|
|
|
|
{
|
|
|
|
|
|
RET = Convert_STR(INT, 0);
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(RET))
|
|
|
|
|
|
return string.Empty;
|
|
|
|
|
|
RET += " تیلیارد";
|
|
|
|
|
|
}
|
|
|
|
|
|
//میلیارد
|
|
|
|
|
|
else if (Count == 5)
|
|
|
|
|
|
{
|
|
|
|
|
|
RET = Convert_STR(INT, 0);
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(RET))
|
|
|
|
|
|
return string.Empty;
|
|
|
|
|
|
RET += " بیلیارد";
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
RET = Convert_STR(INT, 0);
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(RET))
|
|
|
|
|
|
return string.Empty;
|
|
|
|
|
|
RET += Count.ToString();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return RET;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static string GET_Number(int Count, int Number, string VA)
|
|
|
|
|
|
{
|
|
|
|
|
|
string RET = "";
|
|
|
|
|
|
|
|
|
|
|
|
if (VA != "" && VA != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
VA = " و ";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (Count == 0 || Count == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
bool IsDah = Convert.ToBoolean(Count);
|
|
|
|
|
|
string[] MySTR = new string[10];
|
|
|
|
|
|
MySTR[1] = IsDah ? "یازده" : "یک" + VA;
|
|
|
|
|
|
MySTR[2] = IsDah ? "دوازده" : "دو" + VA;
|
|
|
|
|
|
MySTR[3] = IsDah ? "سیزده" : "سه" + VA;
|
|
|
|
|
|
MySTR[4] = IsDah ? "چهارده" : "چهار" + VA;
|
|
|
|
|
|
MySTR[5] = IsDah ? "پانزده" : "پنج" + VA;
|
|
|
|
|
|
MySTR[6] = IsDah ? "شانزده" : "شش" + VA;
|
|
|
|
|
|
MySTR[7] = IsDah ? "هفده" : "هفت" + VA;
|
|
|
|
|
|
MySTR[8] = IsDah ? "هجده" : "هشت" + VA;
|
|
|
|
|
|
MySTR[9] = IsDah ? "نوزده" : "نه" + VA;
|
|
|
|
|
|
return MySTR[Number];
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (Count == 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] MySTR = new string[10];
|
|
|
|
|
|
MySTR[1] = "ده";
|
|
|
|
|
|
MySTR[2] = "بیست" + VA;
|
|
|
|
|
|
MySTR[3] = "سی" + VA;
|
|
|
|
|
|
MySTR[4] = "چهل" + VA;
|
|
|
|
|
|
MySTR[5] = "پنجاه" + VA;
|
|
|
|
|
|
MySTR[6] = "شصت" + VA;
|
|
|
|
|
|
MySTR[7] = "هفتاد" + VA;
|
|
|
|
|
|
MySTR[8] = "هشتاد" + VA;
|
|
|
|
|
|
MySTR[9] = "نود" + VA;
|
|
|
|
|
|
return MySTR[Number];
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (Count == 3)
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] MySTR = new string[10];
|
|
|
|
|
|
MySTR[1] = "یکصد" + VA;
|
|
|
|
|
|
MySTR[2] = "دویست" + VA;
|
|
|
|
|
|
MySTR[3] = "سیصد" + VA;
|
|
|
|
|
|
MySTR[4] = "چهارصد" + VA;
|
|
|
|
|
|
MySTR[5] = "پانصد" + VA;
|
|
|
|
|
|
MySTR[6] = "ششصد" + VA;
|
|
|
|
|
|
MySTR[7] = "هفتصد" + VA;
|
|
|
|
|
|
MySTR[8] = "هشتصد" + VA;
|
|
|
|
|
|
MySTR[9] = "نهصد" + VA;
|
|
|
|
|
|
return MySTR[Number];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return RET;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|