/* |-------------------------------------------------------------------------------| | Copyright © Computer Ease Limited | | Address: 1/9 Bloack-A Lalmatia, Dhaka-1207, Bangladesh | | Email: info@celimited.com, cease@bol-online.com, web: www.celimited.com | | Unauthorized copy or distribution is strictly prohibited | | Author: S. M. Russel, Last modified date: 23/07/2012 | |-------------------------------------------------------------------------------| */ using System; using System.Net; using System.Text; using System.Linq; //using System.Management; using System.Net.Sockets; using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Text.RegularExpressions; namespace Ease.Core.Utility { #region Delegates public delegate IntPtr KeyboardProc(int code, IntPtr wParam, IntPtr lParam); public delegate IntPtr MouseProc(int code, IntPtr wParam, IntPtr lParam); #endregion #region Win32Structure & Class internal class AnimateWindow { private AnimateWindow() { } public static int AW_HOR_POSITIVE = 0x1; public static int AW_HOR_NEGATIVE = 0x2; public static int AW_VER_POSITIVE = 0x4; public static int AW_VER_NEGATIVE = 0x8; public static int AW_CENTER = 0x10; public static int AW_HIDE = 0x10000; public static int AW_ACTIVATE = 0x20000; public static int AW_SLIDE = 0x40000; public static int AW_BLEND = 0x80000; } [StructLayout(LayoutKind.Sequential)] internal struct POINT { public int x; public int y; } [StructLayout(LayoutKind.Sequential)] internal struct RECT { public int left; public int top; public int right; public int bottom; } [StructLayout(LayoutKind.Sequential)] internal struct SIZE { public int cx; public int cy; } [StructLayout(LayoutKind.Sequential)] internal struct TRACKMOUSEEVENTS { public uint cbSize; public uint dwFlags; public IntPtr hWnd; public uint dwHoverTime; } [StructLayout(LayoutKind.Sequential)] internal struct MSG { public IntPtr hwnd; public int message; public IntPtr wParam; public IntPtr lParam; public int time; public int pt_x; public int pt_y; } [StructLayout(LayoutKind.Sequential, Pack = 1)] internal struct BLENDFUNCTION { public byte BlendOp; public byte BlendFlags; public byte SourceConstantAlpha; public byte AlphaFormat; } [StructLayout(LayoutKind.Sequential)] public struct LOGBRUSH { public uint lbStyle; public uint lbColor; public uint lbHatch; } #endregion #region Global Class public sealed class Global { #region Declartion/Constructor private Global() { } #endregion #region String functions public class StringFuncions { public static bool IsEmptyOrNull(object o) { string s = (o == null) ? string.Empty : o.ToString(); return StringFuncions.IsEmptyOrNull(s); } public static bool IsEmptyOrNull(string s) { s = (s == null) ? string.Empty : s; return string.IsNullOrEmpty(s); } public static bool IsEmpty(object o) { string s = (o == null) ? string.Empty : o.ToString(); return StringFuncions.IsEmpty(s); } public static bool IsEmpty(string s) { s = (s == null) ? string.Empty : s; return (s == string.Empty || s.Trim().Length <= 0); } public static bool IsNotEmpty(string s) { return !StringFuncions.IsEmpty(s); } public static bool IsNotEmpty(object o) { return !StringFuncions.IsEmpty(o); } public static string FormatString(string format, params object[] args) { return string.Format(format, args); } public static string StringReverse(string s) { string tmp = string.Empty; for (int i = s.Length - 1; i >= 0; i--) tmp = string.Format("{0}{1}", tmp, s[i]); return tmp; } public static string MakeItSentence(string inputString) { for (int i = 0; i < inputString.Length; i++) { char a = Convert.ToChar(inputString.Substring(i, 1)); if (Char.IsUpper(a)) { if (i != 0 && inputString.Substring(i - 1, 1) != " ") inputString = inputString.Insert(i, " "); } } return inputString; } public static string Left(string inputString, int length) { if (length < inputString.Length && length > 0) return inputString.Substring(0, length); else return inputString; } public static string Right(string inputString, int length) { if (length < inputString.Length && length > 0) return inputString.Substring((inputString.Length - length), length); else return inputString; } public static string Mid(string inputString, int start, int length) { if ((start + length) < inputString.Length) return inputString.Substring(start, length); else if (start < inputString.Length) return inputString.Substring(start); else return inputString; } public static string Mid(string inputString, int start) { if (start < inputString.Length) return inputString.Substring(start); else return inputString; } public static void Mid(ref string inputString, int start, int length, string value) { if ((start + length) > inputString.Length) throw new Exception("Inputstring has not enough length"); string part1 = inputString.Substring(0, start); string part2 = inputString.Substring(start + length); value = value.Length < length ? value.PadRight(length, ' ') : value; value = value.Length > length ? StringFuncions.Left(value, length) : value; inputString = string.Format("{0}{1}{2}", part1, value, part2); } public static bool IsStrongPassword(string password) { string pattern = @"(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"; return Regex.IsMatch(password, pattern); } public static bool IsEmailAddress(string emailAddress) { string pattern = @"^(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\." + @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})$"; return Regex.IsMatch(emailAddress, pattern); } } #endregion #region Date Functions public class DateFunctions { public static bool IsDateTime(string s, FormatOptions f) { if (string.IsNullOrEmpty(s)) throw new Exception("Invalid use of empty string."); string[] vals = s.Split(new char[] { '-', '/', '.', ' ' }); if (vals == null || vals.Length < 3) throw new Exception("Invalid use of date format."); bool ret = true; int day = 0, month = 0, year = 0; #region For the format "MM/dd/yyyy" if (f == FormatOptions.MMddyyyy) { if (!NumericFunctions.IsNumeric(vals[1].Trim())) return false; day = Convert.ToInt32(vals[1].Trim()); if (!NumericFunctions.IsNumeric(vals[0].Trim())) return false; month = Convert.ToInt32(vals[0].Trim()); if (!NumericFunctions.IsNumeric(vals[2].Trim())) return false; year = Convert.ToInt32(vals[2].Trim()); //Making year if (year < 100 && vals[2].Trim().Length < 4) year = 2000 + year; //Month validation if (month < 1 || month > 12) ret = false; //Day validation if (ret && (day < 1 || day > DateTime.DaysInMonth(year, month))) ret = false; } #endregion #region For the format "dd/MM/yyyy" or "dd/MM/yyyy hh:mm:ss AM/PM" if (f == FormatOptions.ddMMyyyy) { if (!NumericFunctions.IsNumeric(vals[0].Trim())) return false; day = Convert.ToInt32(vals[0].Trim()); if (!NumericFunctions.IsNumeric(vals[1].Trim())) return false; month = Convert.ToInt32(vals[1].Trim()); if (!NumericFunctions.IsNumeric(vals[2].Trim())) return false; year = Convert.ToInt32(vals[2].Trim()); //Making year if (year < 100 && vals[2].Trim().Length < 4) year = 2000 + year; //Month validation if (month < 1 || month > 12) ret = false; //Day validation if (ret && (day < 1 || day > DateTime.DaysInMonth(year, month))) ret = false; } #endregion #region For the format "dd/MMM/yyyy" or "dd/MMM/yyyy hh:mm:ss AM/PM" if (f == FormatOptions.ddMMMyyyy) { if (!NumericFunctions.IsNumeric(vals[0].Trim())) return false; day = Convert.ToInt32(vals[0].Trim()); if (!NumericFunctions.IsNumeric(vals[2].Trim())) return false; year = Convert.ToInt32(vals[2].Trim()); //Making year if (year < 100 && vals[2].Trim().Length < 4) year = 2000 + year; //Month validation month = monthIndex(vals[1]); if (month < 1 || month > 12) ret = false; //Day validation if (ret && (day < 1 || day > DateTime.DaysInMonth(year, month))) ret = false; } #endregion return ret; } public static bool IsDateTime(object o, FormatOptions f) { string s = (o == null) ? string.Empty : o.ToString(); return DateFunctions.IsDateTime(s, f); } public static DateTime GetDate(string s, FormatOptions f) { if (StringFuncions.IsEmptyOrNull(s)) throw new Exception("Invalid use of empty string."); string[] vals = s.Split(new char[] { '-', '/', '.', ' ' }); if (vals == null || vals.Length < 3) throw new Exception("Invalid use of date format."); int day = 0, month = 0, year = 0; #region For format$ "MM/dd/yyyy" if (f == FormatOptions.MMddyyyy) { day = Convert.ToInt32(vals[1].Trim()); month = Convert.ToInt32(vals[0].Trim()); year = Convert.ToInt32(vals[2].Trim()); //Making year if (year < 100 && vals[2].Trim().Length < 4) year = 2000 + year; //Month validation if (month < 1 || month > 12) throw new Exception("Invalid date format for month overflow."); //Day validation if (day < 1 || day > DateTime.DaysInMonth(year, month)) throw new Exception("Invalid date format for day overflow."); return new DateTime(year, month, day); } #endregion #region For format "dd/MM/yyyy" if (f == FormatOptions.ddMMyyyy) { day = Convert.ToInt32(vals[0].Trim()); month = Convert.ToInt32(vals[1].Trim()); year = Convert.ToInt32(vals[2].Trim()); if (year < 100 && vals[2].Trim().Length < 4) year = 2000 + year; //Month validation if (month < 1 || month > 12) throw new Exception("Invalid date format for month overflow."); //Day validation if (day < 1 || day > DateTime.DaysInMonth(year, month)) throw new Exception("Invalid date format for day overflow."); return new DateTime(year, month, day); } #endregion #region For format "dd/MMM/yyyy" if (f == FormatOptions.ddMMMyyyy) { day = Convert.ToInt32(vals[0].Trim()); year = Convert.ToInt32(vals[2].Trim()); if (year < 100 && vals[2].Trim().Length < 4) year = 2000 + year; //Month Validation month = monthIndex(vals[1]); if (month < 1 || month > 12) throw new Exception("Invalid date format for month overflow."); //Day validation if (day < 1 || day > DateTime.DaysInMonth(year, month)) throw new Exception("Invalid date format for day overflow."); return new DateTime(year, month, day); } #endregion return new DateTime(1, 1, 1); } public static DateTime GetDate(object o, FormatOptions f) { if (o == null) throw new Exception("Invalid use of null reference."); string s = o.ToString(); return DateFunctions.GetDate(s, f); } /// /// This function return the first date of month of param date /// /// A valid date /// Return the date of month public static DateTime FirstDateOfMonth(DateTime forDate) { return new DateTime(forDate.Year, forDate.Month, 1); } public static DateTime FirstDateOfMonth(int year, int month) { return new DateTime(year, month, 1); } public static DateTime FirstDateOfYear(DateTime forDate) { return new DateTime(forDate.Year, 1, 1); } public static DateTime FirstDateOfYear(int year) { return new DateTime(year, 1, 1); } public static DateTime LastDateOfYear(DateTime forDate) { return new DateTime(forDate.Year, 12, 31); } public static DateTime LastDateOfYear(int year) { return new DateTime(year, 12, 31); } public static DateTime LastDateOfMonth(DateTime forDate) { DateTime ldom = new DateTime(forDate.Year, forDate.Month, 1); ldom = ldom.AddMonths(1); ldom = ldom.AddDays(-1); return ldom; } public static DateTime LastDateOfMonth(int year, int month) { DateTime ldom = new DateTime(year, month, 1); ldom = ldom.AddMonths(1); ldom = ldom.AddDays(-1); return ldom; } public static bool IsFirstDayOfMonth(DateTime onDate) { return (onDate.Day == 1); } public static bool IsFirstDayOfYear(DateTime onDate) { return (onDate.Month == 1 && onDate.Day == 1); } public static bool IsLastDayOfMonth(DateTime onDate) { int days = DateTime.DaysInMonth(onDate.Year, onDate.Month); return (days <= onDate.Day); } public static bool IsLastDayOfYear(DateTime onDate) { return (onDate.Month == 12 && onDate.Day == 31); } /// /// This function return the integer value in accordance with stringformat /// /// Subtract from this value and must be datetime /// Subtract this value and must be datetime /// There are three types of format 1=d/D return difference in days, 2=m/M return difference in month, 3=y/Y return difference in years// /// public static int DateDiff(string interval, DateTime date1, DateTime date2) { int diffVale = 0; DateTime fromDate, toDate; if (date1 > date2) { toDate = date1; fromDate = date2; } else { fromDate = date1; toDate = date2; } switch (interval) { case "D": case "d": for (int curYear = fromDate.Year + 1; curYear <= toDate.Year; curYear++) diffVale += new DateTime(curYear, 12, 31).DayOfYear; diffVale += toDate.DayOfYear - fromDate.DayOfYear; break; case "M": case "m": diffVale = toDate.Year - fromDate.Year; diffVale = diffVale * 12; diffVale += toDate.Month - fromDate.Month; break; case "Y": case "y": if (toDate.DayOfYear < fromDate.DayOfYear) diffVale = toDate.Year - fromDate.Year - 1; else diffVale = toDate.Year - fromDate.Year; break; } if (date1 > date2) diffVale = -diffVale; return diffVale; } /// /// This function return the year, month, day with space delimeter /// /// Subtract from this value and must be datetime /// Subtract this value and must be datetime /// Return a string year, month, day with space delimeter /// e.g 2 Years 9 months 27 days or 8 months 16 days or 16 days /// public static string DateDiff(DateTime Date1, DateTime Date2) { int diff = 0; DateTime calcDate; string retVal = string.Empty; if (Date1 > Date2) { calcDate = Date2; Date2 = Date1; Date1 = calcDate; } //Finding the year difference diff = DateFunctions.DateDiff("Y", Date1, Date2); if (diff > 0) { if (diff == 1) retVal = "1 Year "; else retVal = diff + " Years "; } //Finding the month difference calcDate = new DateTime(Date1.Year, Date1.Month, Date1.Day); calcDate = calcDate.AddYears(diff); diff = Math.Abs(DateFunctions.DateDiff("M", calcDate, Date2)); if (diff > 0) { if (diff == 1) retVal = retVal + "1 Month "; else retVal = retVal + diff + " Months "; } //Finding the day difference calcDate = calcDate.AddMonths(diff); diff = Math.Abs(DateFunctions.DateDiff("D", calcDate, Date2)); if (diff > 0) { if (diff == 1) retVal = retVal + "1 Day"; else retVal = retVal + diff + " Days"; } //Finally trimming the spaces retVal = retVal.Trim(); return retVal; } /// /// This function add number with date in accordance with interval /// /// There are three types of interval 1:= d/D add day(s), 2:= m/M add month(s), 3: =y/Y add year(s) with input date /// Value to be added /// Input date add with this value /// Return datatime after operation public static DateTime DateAdd(string interval, int number, DateTime date) { DateTime retValue = date; switch (interval) { case "D": case "d": retValue = retValue.AddDays(number); break; case "M": case "m": retValue = retValue.AddMonths(number); break; case "Y": case "y": retValue = retValue.AddYears(number); break; } return retValue; } private static int monthIndex(string monthName) { int index = 0; string[] months = null; System.Globalization.DateTimeFormatInfo df = new System.Globalization.DateTimeFormatInfo(); if (monthName.Trim().Length <= 2) if (NumericFunctions.IsNumeric(monthName)) return Convert.ToInt32((monthName.Trim())); if (monthName.Trim().Length == 3) months = df.AbbreviatedMonthNames; else months = df.MonthNames; foreach (string item in months) { index++; if (item.ToLower() == monthName.ToLower()) return index; } return -1; } public static List DatesOfDay(DayOfWeek day, DateTime date1, DateTime date2) { return DateFunctions.DatesOfDay(day, date1, date2, null); } public static List DatesOfDay(DayOfWeek day, DateTime date1, DateTime date2, List holidays) { List dates = new List(); DateTime onDate = date1 < date2 ? date1 : date2; date2 = date1 > date2 ? date1 : date2; while (onDate.DayOfWeek != day) onDate = onDate.AddDays(1); while (onDate <= date2) { if (holidays == null || !holidays.Contains(onDate)) dates.Add(onDate); onDate = onDate.AddDays(7); } return dates; } } #endregion #region Numeric functions public class NumericFunctions { private static string HundredWords(int inputValue) { string hundredWords = "", numStr = "", pos1 = "", pos2 = "", pos3 = ""; string[] digits = new string[10] { "", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; string[] teens = new string[10] { "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" }; string[] tens = new string[10] { "", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" }; numStr = StringFuncions.Right(inputValue.ToString("000"), 3); if (StringFuncions.Left(numStr, 1) != "0") pos1 = digits.GetValue(Convert.ToInt32(StringFuncions.Left(numStr, 1))) + " hundred"; else pos1 = ""; numStr = StringFuncions.Right(numStr, 2); if (StringFuncions.Left(numStr, 1) == "1") { pos2 = Convert.ToString(teens.GetValue(Convert.ToInt32(StringFuncions.Right(numStr, 1)))); pos3 = ""; } else { pos2 = Convert.ToString(tens.GetValue(Convert.ToInt32(StringFuncions.Left(numStr, 1)))); pos3 = Convert.ToString(digits.GetValue(Convert.ToInt32(StringFuncions.Right(numStr, 1)))); } hundredWords = pos1; if (hundredWords != "") { if (pos2 != "") { hundredWords = hundredWords + " "; } } hundredWords = hundredWords + pos2; if (hundredWords != "") { if (pos3 != "") { hundredWords = hundredWords + " "; } } hundredWords = hundredWords + pos3; return hundredWords; } private static string InWords(double inputValue, string beforeDecimal, string afterDecimal) { int commaCount = 0, digitCount = 0; string sign = "", takaWords = "", numStr = "", taka = "", paisa = "", pow = ""; string[] pows = new string[3] { "crore", "thousand", "lakh" }; if (inputValue < 0) { sign = "Minus"; inputValue = Math.Abs(inputValue); } numStr = inputValue.ToString("0.00"); paisa = HundredWords(Convert.ToInt32(StringFuncions.Right(numStr, 2))); if (paisa != "") { paisa = paisa.Substring(0, 1).ToUpper() + paisa.Substring(1); paisa = afterDecimal + " " + paisa; } numStr = StringFuncions.Left(numStr, numStr.Length - 3); taka = HundredWords(Convert.ToInt32(StringFuncions.Right(numStr, 3))); if (numStr.Length <= 3) { numStr = ""; } else { numStr = StringFuncions.Left(numStr, numStr.Length - 3); } commaCount = 1; if (numStr != "") { do { if (commaCount % 3 == 0) { digitCount = 3; } else { digitCount = 2; } pow = HundredWords(Convert.ToInt32(StringFuncions.Right(numStr, digitCount))); if (pow != "") { if (Convert.ToString(inputValue).Length > 10) { pow = pow + " " + pows.GetValue(commaCount % 3) + " crore "; } else { pow = pow + " " + pows.GetValue(commaCount % 3); } } if (taka != "") { if (pow != "") { pow = pow + " "; } } taka = pow + taka; if (numStr.Length <= digitCount) { numStr = ""; } else { numStr = StringFuncions.Left(numStr, numStr.Length - digitCount); } commaCount = commaCount + 1; } while (numStr != ""); } if (taka != "") { taka = taka.Substring(0, 1).ToUpper() + taka.Substring(1); taka = beforeDecimal + " " + taka; } takaWords = taka; if (takaWords != "") { if (paisa != "") { takaWords = takaWords + " and "; } } takaWords = takaWords + paisa; if (takaWords == "") { takaWords = beforeDecimal + " Zero"; } takaWords = sign + takaWords + " Only"; return takaWords; } public static string AmountInWords(decimal inputValue, string beforeDecimal, string afterDecimal) { return NumericFunctions.InWords(Convert.ToDouble(inputValue), beforeDecimal, afterDecimal); } public static string AmountInWords(float inputValue, string beforeDecimal, string afterDecimal) { return NumericFunctions.InWords(Convert.ToDouble(inputValue), beforeDecimal, afterDecimal); } public static string AmountInWords(double inputValue, string beforeDecimal, string afterDecimal) { return NumericFunctions.InWords(inputValue, beforeDecimal, afterDecimal); } public static string TakaWords(decimal inputValue) { return NumericFunctions.TakaWords(Convert.ToDouble(inputValue)); } public static string TakaWords(float inputValue) { return NumericFunctions.TakaWords(Convert.ToDouble(inputValue)); } public static string TakaWords(double inputValue) { return NumericFunctions.InWords(inputValue, "Taka", "Paisa"); } public static bool IsNumeric(char chrValue) { return char.IsDigit(chrValue); } /// /// Checks the string whether it is numeric or not /// /// String Type /// Returns true if number otherwise false public static bool IsNumeric(string s) { if (string.IsNullOrEmpty(s)) return false; s = s.Trim(); if (s.StartsWith("+") || s.StartsWith("-")) s = s.Substring(1); for (int i = 0; i < s.Length; i++) { char c = s[i]; if (!char.IsNumber(c) && c != '.') return false; } return true; } /// /// Checks the string whether it is numeric or not /// /// Object Type /// Returns true if number otherwise false public static bool IsNumeric(object o) { string s = o == null ? String.Empty : Convert.ToString(o); return (StringFuncions.IsNotEmpty(s) && IsNumeric(s)); } /// /// Checks the string whether it is decimal or not /// /// /// Returns true if decimal otherwise false public static bool IsDecimal(string strValue) { return (!string.IsNullOrEmpty(strValue) && new Regex("[^0-9\\.\\-\\+]").IsMatch(strValue) == false); } /// /// Checks the string whether it is currency or not /// /// /// Returns true if currency otherwise false public static bool IsCurrency(string s) { return (!string.IsNullOrEmpty(s) && new Regex("[^$0-9\\,\\.\\-\\+]").IsMatch(s) == false); } public static double RoundOff(decimal inputValue) { return Convert.ToDouble(Math.Round(inputValue)); } public static double RoundOff(decimal inputValue, int digits) { return RoundOff(Convert.ToDouble(inputValue), digits); } public static double RoundOff(double inputValue, int digits) { double rmndr = 0.0, retVal = 0.0; if (digits < 0) { retVal = Math.Pow(10, Math.Abs(digits)); rmndr = ((inputValue % retVal) / retVal); if (rmndr >= 0.5) { rmndr = 1 * retVal; } else { rmndr = 0; } retVal = (((inputValue - (inputValue % retVal)) / retVal) * retVal) + rmndr; } else { retVal = Math.Round(inputValue, digits); } return retVal; } public static double RoundOff(double inputValue) { return Math.Round(inputValue); } public static double RoundOff(float inputValue, int digits) { return RoundOff(Convert.ToDouble(inputValue), digits); } public static double RoundOff(float inputValue) { return Math.Round(inputValue); } public static string TakaFormat(decimal inputValue, char digitSeparator, char decimalSeparator, byte digits) { return NumericFunctions.TakaFormat(Convert.ToDouble(inputValue), digitSeparator, decimalSeparator, digits); } public static string TakaFormat(decimal inputValue, byte digits) { return NumericFunctions.TakaFormat(Convert.ToDouble(inputValue), ',', '.', digits); } public static string TakaFormat(decimal inputValue, char digitSeparator, char decimalSeparator) { return NumericFunctions.TakaFormat(Convert.ToDouble(inputValue), digitSeparator, decimalSeparator); } public static string TakaFormat(decimal inputValue) { return NumericFunctions.TakaFormat(Convert.ToDouble(inputValue), ',', '.'); } public static string TakaFormat(float inputValue, char digitSeparator, char decimalSeparator, byte digits) { return NumericFunctions.TakaFormat(Convert.ToDouble(inputValue), digitSeparator, decimalSeparator, digits); } public static string TakaFormat(float inputValue, byte digits) { return NumericFunctions.TakaFormat(Convert.ToDouble(inputValue), ',', '.', digits); } public static string TakaFormat(float inputValue, char digitSeparator, char decimalSeparator) { return NumericFunctions.TakaFormat(Convert.ToDouble(inputValue), digitSeparator, decimalSeparator); } public static string TakaFormat(float inputValue) { return NumericFunctions.TakaFormat(Convert.ToDouble(inputValue), ',', '.'); } public static string TakaFormat(double inputValue, char digitSeparator, char decimalSeparator, byte digits) { string format = "##,##,###"; if (digits > 0) format = string.Format("{0}.{1}", format, new string('0', digits)); return NumericFunctions.CustomFormat(inputValue, digitSeparator, decimalSeparator, format); } public static string TakaFormat(double inputValue, byte digits) { return NumericFunctions.TakaFormat(inputValue, ',', '.', digits); } public static string TakaFormat(double inputValue, char digitSeparator, char decimalSeparator) { return NumericFunctions.CustomFormat(inputValue, digitSeparator, decimalSeparator, "##,##,###.00"); } public static string TakaFormat(double inputValue) { return NumericFunctions.TakaFormat(inputValue, ',', '.'); } public static string MillionFormat(decimal inputValue, char digitSeparator, char decimalSeparator, byte digits) { return NumericFunctions.CustomFormat(inputValue, digitSeparator, decimalSeparator, string.Format("N{0}", digits)); } public static string MillionFormat(decimal inputValue, byte digits) { return NumericFunctions.CustomFormat(inputValue, ',', '.', string.Format("N{0}", digits)); } public static string MillionFormat(decimal inputValue, char digitSeparator, char decimalSeparator) { return NumericFunctions.CustomFormat(inputValue, digitSeparator, decimalSeparator, "N2"); } public static string MillionFormat(decimal inputValue) { return NumericFunctions.CustomFormat(inputValue, ',', '.', "N2"); } public static string MillionFormat(float inputValue, char digitSeparator, char decimalSeparator, byte digits) { return NumericFunctions.CustomFormat(inputValue, digitSeparator, decimalSeparator, string.Format("N{0}", digits)); } public static string MillionFormat(float inputValue, byte digits) { return NumericFunctions.CustomFormat(inputValue, ',', '.', string.Format("N{0}", digits)); } public static string MillionFormat(float inputValue, char digitSeparator, char decimalSeparator) { return NumericFunctions.CustomFormat(inputValue, digitSeparator, decimalSeparator, "N2"); } public static string MillionFormat(float inputValue) { return NumericFunctions.CustomFormat(inputValue, ',', '.', "N2"); } public static string MillionFormat(double inputValue, char digitSeparator, char decimalSeparator, byte digits) { return NumericFunctions.CustomFormat(inputValue, digitSeparator, decimalSeparator, string.Format("N{0}", digits)); } public static string MillionFormat(double inputValue, byte digits) { return NumericFunctions.CustomFormat(inputValue, ',', '.', string.Format("N{0}", digits)); } public static string MillionFormat(double inputValue, char digitSeparator, char decimalSeparator) { return NumericFunctions.CustomFormat(inputValue, digitSeparator, decimalSeparator, "N2"); } public static string MillionFormat(double inputValue) { return NumericFunctions.CustomFormat(inputValue, ',', '.', "N2"); } public static string CustomFormat(decimal inputValue, string format) { return NumericFunctions.CustomFormat(Convert.ToDouble(inputValue), ',', '.', format); } public static string CustomFormat(decimal inputValue, char digitSeparator, char decimalSeparator, string format) { return NumericFunctions.CustomFormat(Convert.ToDouble(inputValue), digitSeparator, decimalSeparator, format); } public static string CustomFormat(float inputValue, string format) { return NumericFunctions.CustomFormat(Convert.ToDouble(inputValue), ',', '.', format); } public static string CustomFormat(float inputValue, char digitSeparator, char decimalSeparator, string format) { return NumericFunctions.CustomFormat(Convert.ToDouble(inputValue), digitSeparator, decimalSeparator, format); } public static string CustomFormat(double inputValue, string format) { return NumericFunctions.CustomFormat(inputValue, ',', '.', format); } public static string CustomFormat(double inputValue, char digitSeparator, char decimalSeparator, string format) { string sign = string.Empty, formattedValue = string.Empty; if (inputValue < 0) { sign = "-"; inputValue = (-inputValue); } //Format starts with N if (format.ToUpper().StartsWith("N")) { formattedValue = inputValue.ToString(format); formattedValue = formattedValue.Replace(',', digitSeparator); formattedValue = formattedValue.Replace('.', decimalSeparator); return string.Format("{0}{1}", sign, formattedValue); } //Split whole number foramt wnd faction number string wPart = string.Empty, fPart = string.Empty; string[] tokens = format.Split(decimalSeparator); if (tokens.Length >= 2) { wPart = tokens[0]; fPart = tokens[1]; } else { wPart = format; fPart = string.Empty; } //Split whole number and faction number string fNum = string.Empty; string wNum = string.Empty; tokens = inputValue.ToString("0.00000000").Split('.'); if (tokens.Length >= 2) { wNum = tokens[0]; fNum = tokens[1]; } else { wNum = tokens[0]; } //Format whole part first int remLn = wNum.Length; tokens = wPart.Split(','); while (remLn > 0) { for (int i = tokens.Length - 1; i >= 0; i--) { if (remLn > 0) { int ln = tokens[i].Length; string s = string.Empty; remLn -= ln; if (remLn < wNum.Length && remLn > 0) s = wNum.Substring(remLn); else s = wNum; if (remLn > 0) wNum = wNum.Substring(0, remLn); else wNum = string.Empty; if (remLn > 0) formattedValue = string.Format("{0}{1}{2}", digitSeparator, s, formattedValue); else formattedValue = string.Format("{0}{1}", s, formattedValue); } } } //Add afranctional part if (fNum.Length > 0 && fPart.Length > 0) { if (fNum.Length > fPart.Length) formattedValue = string.Format("{0}{1}{2}", formattedValue, decimalSeparator, fNum.Substring(0, fPart.Length)); else formattedValue = string.Format("{0}{1}{2}", formattedValue, decimalSeparator, Convert.ToInt32(fNum).ToString(fPart)); } return string.Format("{0}{1}", sign, formattedValue); } } #endregion #region Cipher functions public class CipherFunctions { public static string Encrypt(string data) { try { return new Encryption().Encrypt(Encryption.DefaultPrivateKey, data); } catch (Exception e) { throw new Exception(e.Message, e); } } public static string Encrypt(string key, string data) { try { return new Encryption().Encrypt(key, data); } catch (Exception e) { throw new Exception(e.Message, e); } } public static string Decrypt(string data) { try { return new Encryption().Decrypt(Encryption.DefaultPrivateKey, data); } catch (Exception e) { throw new Exception(e.Message, e); } } public static string Decrypt(string key, string data) { try { return new Encryption().Decrypt(key, data); } catch (Exception e) { throw new Exception(e.Message, e); } } public static string EncryptByTDS(string data) { try { return new TDSEncryption().Encrypt(Encryption.DefaultPrivateKey, Encryption.DefaultPublicKey, data); } catch (Exception e) { throw e; } } public static string EncryptByTDS(string privateKey, string publicKey, string data) { try { return new TDSEncryption().Encrypt(privateKey, publicKey, data); } catch (Exception e) { throw e; } } public static string DecryptByTDS(string data) { try { return new TDSEncryption().Decrypt(Encryption.DefaultPrivateKey, Encryption.DefaultPublicKey, data); } catch (Exception e) { throw e; } } public static string DecryptByTDS(string privateKey, string publicKey, string data) { try { return new TDSEncryption().Decrypt(privateKey, publicKey, data); } catch (Exception e) { throw e; } } public static string EncryptByAES(string data) { try { return new AESEncryption().Encrypt(Encryption.DefaultPrivateKey, Encryption.DefaultPublicKey, data); } catch (Exception e) { throw e; } } public static string EncryptByAES(string privateKey, string publicKey, string data) { try { return new AESEncryption().Encrypt(privateKey, publicKey, data); } catch (Exception e) { throw e; } } public static string DecryptByAES(string data) { try { return new AESEncryption().Decrypt(Encryption.DefaultPrivateKey, Encryption.DefaultPublicKey, data); } catch (Exception e) { throw e; } } public static string DecryptByAES(string privateKey, string publicKey, string data) { try { return new AESEncryption().Decrypt(privateKey, publicKey, data); } catch (Exception e) { throw e; } } } #endregion //#region Mac Address ///// ///// Returns MAC Address from first Network Card in Computer ///// ///// MAC Address in string format //public static string GetMacAddress() //{ // string mcAddress = string.Empty; // try // { // //Create out management class object using the Win32_NetworkAdapterConfiguration class to get the attributes af the network adapter // ManagementClass mgmt = new ManagementClass("Win32_NetworkAdapterConfiguration"); // ManagementObjectCollection objCol = mgmt.GetInstances(); // foreach (ManagementObject obj in objCol) // { // if (mcAddress == String.Empty) // only return MAC Address from first card // { // //grab the value from the first network adapter we find you can change the string to an array and get all network adapters found as well // if (Convert.ToBoolean(obj["IPEnabled"]) == true) // { // mcAddress = obj["MacAddress"].ToString(); // } // } // //dispose of our object // obj.Dispose(); // } // //replace the ":" with an empty space, this could also be removed if you wish // mcAddress = mcAddress.Replace(":", "-"); // } // catch // { // } // return mcAddress; //} //#endregion #region IP Address static string getLocalIP() { string ipAddress = string.Empty; try { IPAddress[] ipHost = Dns.GetHostAddresses(Dns.GetHostName()); foreach (IPAddress item in ipHost) { if (item.AddressFamily == AddressFamily.InterNetwork) { ipAddress = item.ToString(); break; } } if (string.IsNullOrEmpty(ipAddress) && ipHost.Length > 0) ipAddress = ipHost[0].ToString(); } catch { } return ipAddress; } /// /// For external address /// /// External IP address. public static string GetIPAddress() { string ipAddress = string.Empty; try { ipAddress = Global.GetIPAddress(false); } catch { } return ipAddress; } /// /// Find IP address of the machine /// /// True if want to find local IP. /// Return IP address. public static string GetIPAddress(bool localIP) { string myIP = string.Empty; try { myIP = getLocalIP(); string href = ""; //#### ConfigUtility.GetAppSettings("hrefIP"); if (!string.IsNullOrEmpty(href) && !localIP) { byte[] data = new WebClient().DownloadData(href); string fIP = new System.Text.UTF8Encoding().GetString(data); if (!string.IsNullOrEmpty(fIP)) myIP = fIP; } } catch { } return myIP; } #endregion } #endregion }