using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
public class clsHoorofArabic
{
private string[] strAhad = new string[10001];
private string strRead = "";
private short Num01;
private short Num02;
private short Num03;
private string عشر = "عشر";
private string الف = "الف";
private string الفان = "الفان";
private string آلاف = "آلاف";
private string الفا = "الفاً";
private string مليون = "مليون";
private string مليونان = "مليونان";
private string مليار = "مليار";
private void تسمية_خاصة()
{
strAhad(13) = "عشر";
strAhad(15) = "";
strAhad(20) = "عشرون";
strAhad(30) = "ثلاثون";
strAhad(40) = "اربعون";
strAhad(50) = "خمسون";
strAhad(60) = "ستون";
strAhad(70) = "سبعون";
strAhad(80) = "ثمانون";
strAhad(90) = "تسعون";
strAhad(100) = "مائة";
strAhad(200) = "مائتان";
strAhad(1000) = "الف";
strAhad(2000) = "الفان";
}
private void الآحاد()
{
strAhad(0) = "صفر";
strAhad(1) = "واحد";
strAhad(2) = "اثنان";
strAhad(3) = "ثلاثة";
strAhad(4) = "اربعة";
strAhad(5) = "خمسة";
strAhad(6) = "ستة";
strAhad(7) = "سبعة";
strAhad(8) = "ثمانية";
strAhad(9) = "تسعة";
strAhad(10) = "عشرة";
strAhad(11) = "إحدى عشر";
strAhad(12) = "إثنى عشر";
}
private string خانة_الآحاد(long nValue)
{
string functionReturnValue = null;
functionReturnValue = "";
switch (nValue) {
case 15:
functionReturnValue = strAhad(nValue);
break;
case 0: // TODO: to 12
functionReturnValue = strAhad(nValue);
break;
case 1000:
case 2000:
functionReturnValue = strAhad(nValue);
break;
}
return functionReturnValue;
}
private string خانة_العشرات(long nValue)
{
string functionReturnValue = null;
strRead = "";
if (nValue.ToString.Length == 2) {
switch (nValue) {
case 10:
case 11:
case 12:
functionReturnValue = strRead;
return functionReturnValue;
}
//من 13 الى 99
Num01 = Convert.ToInt64(Microsoft.VisualBasic.Right(nValue.ToString, 1));
//Val(nValue.ToString.Last())
Num02 = nValue - Num01;
if (Num01 == 0) {
strRead = strAhad(Num02);
} else if (nValue <= 19) {
strRead = strAhad(Num01) + " " + strAhad(Num02).Replace("ة", "");
} else {
strRead = strAhad(Num01) + " و" + strAhad(Num02);
}
}
functionReturnValue = strRead;
return functionReturnValue;
}
private string خانة_المئات(long nValue)
{
strRead = "";
if (nValue.ToString.Length == 3) {
long AValue = 0;
long BValue = 0;
AValue = Convert.ToInt64(Microsoft.VisualBasic.Right(nValue.ToString, 2));
BValue = nValue - AValue;
if (BValue == 100 | BValue == 200) {
if (AValue == 0) {
strRead = strAhad(BValue);
} else if (AValue <= 12) {
strRead = strAhad(BValue) + " و" + strAhad(AValue);
} else {
strRead = strAhad(BValue) + " و" + خانة_العشرات(AValue);
}
} else {
if (AValue >= 1 & AValue <= 12) {
strRead = strAhad(Conversion.Val(Microsoft.VisualBasic.Left(BValue.ToString, 1))).Remove(strAhad(Conversion.Val(Microsoft.VisualBasic.Left(BValue.ToString, 1))).Count - 1) + strAhad(100) + " و" + strAhad(AValue);
} else if (AValue != 0) {
strRead = strAhad(Conversion.Val(Microsoft.VisualBasic.Left(BValue.ToString, 1))).Remove(strAhad(Conversion.Val(Microsoft.VisualBasic.Left(BValue.ToString, 1))).Count - 1) + strAhad(100) + " و" + خانة_العشرات(AValue);
} else if (AValue == 0) {
strRead = strAhad(Conversion.Val(Microsoft.VisualBasic.Left(BValue.ToString, 1))).Remove(strAhad(Conversion.Val(Microsoft.VisualBasic.Left(BValue.ToString, 1))).Count - 1) + strAhad(100);
}
}
}
return strRead;
}
private string ReadHoorof(long nValue)
{
تسمية_خاصة();
الآحاد();
if (nValue <= 12) {
strRead = خانة_الآحاد(nValue);
} else if (nValue.ToString.Length == 2) {
strRead = خانة_العشرات(nValue);
} else if (nValue.ToString.Length == 3) {
strRead = خانة_المئات(nValue);
}
return strRead;
}
private string GetHoorof(long nValue)
{
long AValue = 0;
long BValue = 0;
string strRead = "";
تسمية_خاصة();
الآحاد();
switch (nValue.ToString.Length()) {
case 1:
strRead = strAhad(nValue);
break;
case 2:
switch (nValue) {
case 10:
case 11:
case 12:
strRead = strAhad(nValue);
break;
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
strRead = strAhad(nValue) + " " + عشر;
break;
}
break;
}
return strRead;
}
public string convert2hroof(decimal الرقم, byte عدد_الخانات_العشرية, string تسمية_العملة, string تسمية_الوحدة, bool إضافة_كلمة_فقط, bool إضافة_كلمة_لاغير)
{
string functionReturnValue = null;
int مضروب_الخانات_العشرية = 0;
switch (عدد_الخانات_العشرية) {
case 1:
مضروب_الخانات_العشرية = 10;
break;
case 2:
مضروب_الخانات_العشرية = 100;
break;
case 3:
مضروب_الخانات_العشرية = 1000;
break;
case 4:
مضروب_الخانات_العشرية = 10000;
break;
case 5:
مضروب_الخانات_العشرية = 100000;
break;
}
string كلمة_لاغير = "";
string كلمة_فقط = "";
if (إضافة_كلمة_لاغير == true) {
كلمة_لاغير = "لاغير";
} else {
كلمة_لاغير = "";
}
if (إضافة_كلمة_فقط == true) {
كلمة_فقط = "فقط";
} else {
كلمة_فقط = "";
}
List<long> قائمة_القيم = new List<long>();
long عدد_صحيح = 0;
long عدد_عشري = 0;
عدد_صحيح = Math.Truncate(الرقم);
عدد_عشري = Math.Truncate((decimal.Subtract(الرقم, decimal.Floor(الرقم))) * مضروب_الخانات_العشرية);
string delimStr = ",";
char[] delimiter = delimStr.ToCharArray();
string words = Strings.FormatNumber(عدد_صحيح, 0, TriState.True).ToString();
// "one two,three:four."
string[] split = null;
int I = 0;
byte sum = 0;
for (I = 0; I <= words.Count - 1; I++) {
if (words(I) == ",") {
sum = sum + 1;
}
}
split = words.Split(delimiter, sum + 1);
string s = null;
string ss = "";
foreach (string s_loopVariable in split) {
s = s_loopVariable;
قائمة_القيم.Add(Convert.ToInt64(s));
}
string strHorof = "";
string strHorof1 = "";
string strHorof2 = "";
string strHorof3 = "";
string strHorof4 = "";
switch (قائمة_القيم.Count) {
case 1:
strHorof = ReadHoorof(قائمة_القيم.Item(0));
break;
case 2:
if (قائمة_القيم.Item(1) == 0) {
switch (قائمة_القيم.Item(0)) {
case 1:
strHorof = "الف";
break;
case 2:
strHorof = "الفان";
break;
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
strHorof = ReadHoorof(قائمة_القيم.Item(0)) + " " + "آلاف";
break;
default:
strHorof = ReadHoorof(قائمة_القيم.Item(0)) + " " + "الف";
break;
}
} else {
switch (قائمة_القيم.Item(0)) {
case 1:
strHorof = "الف" + " و" + ReadHoorof(قائمة_القيم.Item(1));
break;
case 2:
strHorof = "الفان" + " و" + ReadHoorof(قائمة_القيم.Item(1));
break;
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
strHorof = ReadHoorof(قائمة_القيم.Item(0)) + " " + "آلاف" + " و" + ReadHoorof(قائمة_القيم.Item(1));
break;
default:
strHorof = ReadHoorof(قائمة_القيم.Item(0)) + " " + "الف" + " و" + ReadHoorof(قائمة_القيم.Item(1));
break;
}
}
break;
case 3:
if (قائمة_القيم.Item(1) == 0 & قائمة_القيم.Item(2) == 0) {
switch (قائمة_القيم.Item(0)) {
case 1:
strHorof = "مليون";
break;
case 2:
strHorof = "مليونان";
break;
default:
strHorof = ReadHoorof(قائمة_القيم.Item(0)) + " " + "مليون";
break;
}
} else if (قائمة_القيم.Item(2) == 0) {
switch (قائمة_القيم.Item(1)) {
case 1:
strHorof1 = "الف";
break;
case 2:
strHorof1 = "الفان";
break;
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
strHorof1 = ReadHoorof(قائمة_القيم.Item(1)) + " " + "آلاف";
break;
default:
strHorof1 = ReadHoorof(قائمة_القيم.Item(1)) + " " + "الف";
break;
}
switch (قائمة_القيم.Item(0)) {
case 1:
strHorof = "مليون" + " و" + strHorof1;
break;
case 2:
strHorof = "مليونان" + " و" + strHorof1;
break;
default:
strHorof = ReadHoorof(قائمة_القيم.Item(0)) + " " + "مليون" + " و" + strHorof1;
break;
}
} else {
strHorof2 = ReadHoorof(قائمة_القيم.Item(2));
switch (قائمة_القيم.Item(1)) {
case 1:
strHorof1 = "الف";
break;
case 2:
strHorof1 = "الفان";
break;
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
strHorof1 = ReadHoorof(قائمة_القيم.Item(1)) + " " + "آلاف";
break;
default:
strHorof1 = ReadHoorof(قائمة_القيم.Item(1)) + " " + "الف";
break;
}
switch (قائمة_القيم.Item(0)) {
case 1:
strHorof = "مليون" + " و" + strHorof1 + " و" + strHorof2;
break;
case 2:
strHorof = "مليونان" + " و" + strHorof1 + " و" + strHorof2;
break;
default:
strHorof = ReadHoorof(قائمة_القيم.Item(0)) + " " + "مليون" + " و" + strHorof1 + " و" + strHorof2;
break;
}
}
break;
case 4:
break;
}
if (عدد_عشري == 0) {
functionReturnValue = كلمة_فقط + " " + strHorof + " " + تسمية_العملة + " " + كلمة_لاغير;
} else {
functionReturnValue = كلمة_فقط + " " + strHorof + " " + تسمية_العملة + " و" + عدد_عشري.ToString() + " " + تسمية_الوحدة + " " + كلمة_لاغير;
}
return functionReturnValue;
}
}
//=======================================================
//Service provided by Telerik (
http://www.telerik.com)
//Conversion powered by NRefactory.
//Twitter: @telerik
//Facebook: facebook.com/telerik
//=======================================================