using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Web; namespace OSS.Models { public class ExchangeRate { public int Id { get; set; } public string Currency { get; set; } public string CurrencyDesc { get; set; } public decimal Rate { get; set; } public string ToString(){ return Currency+" "+Rate; } } public class CurrencyUtils { private static readonly string[] ones = { "", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine" }; private static readonly string[] teens = { "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" }; private static readonly string[] tens = { "", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" }; public static string ToWords(decimal number) { if (number == 0) return "Zero"; // Split the number into integer and fractional parts int integerPart = (int)Math.Floor(number); int fractionalPart = (int)((number - integerPart) * 100); // Convert integer part to words string integerWords = ConvertIntegerToWords(integerPart); // Convert fractional part to words string fractionalWords = ConvertFractionalToWords(fractionalPart); // Combine the words for integer and fractional parts string result = integerWords + (fractionalWords != null? " and " + fractionalWords : ""); return result.Trim(); } private static string ConvertIntegerToWords(int number) { if (number < 10) return ones[number]; if (number < 20) return teens[number - 10]; if (number < 100) return tens[number / 10] + " " + ones[number % 10]; if (number < 1000) return ones[number / 100] + " Hundred " + ConvertIntegerToWords(number % 100); if (number < 1000000) return ConvertIntegerToWords(number / 1000) + " Thousand " + ConvertIntegerToWords(number % 1000); if (number < 1000000000) return ConvertIntegerToWords(number / 1000000) + " Million " + ConvertIntegerToWords(number % 1000000); return "Number out of range"; } private static string ConvertFractionalToWords(int number) { if (number == 0) return null; if (number < 10) return ones[number] + " Cents"; if (number < 20) return teens[number - 10] + " Cents"; return tens[number / 10] + " " + ones[number % 10] + " Cents"; } } }