Title: Public Operations                                 If you need copy same format use firefox or chrome or safari but iexplorer not work


Preview of Code
using ErrorLog;
using Janus.Windows.EditControls;
using Janus.Windows.GridEX.EditControls;
using Microsoft.Win32;
using System;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.IO;
using System.Reflection;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
namespace EmployeeAffair
{
    internal class PublicOperations
    {
        internal class EmbeddedResource
        {
            internal EmbeddedResource()
            {
            }
            public static Stream GetFile(string FileName)
            {
                Assembly assembly = Assembly.GetExecutingAssembly();
                return assembly.GetManifestResourceStream(FileName);
            }
        }
        public enum TextMonths
        {
            محرم = 1,
            صفر,
            ربيع_أول,
            ربيع_ثاني,
            جمادي_الأول,
            جمادي_الثاني,
            رجب,
            شعبان,
            رمضان,
            شوال,
            ذو_القعدة,
            ذو_الحجة
        }
        internal class TreeViewTag
        {
            public string Key;
            public Guid ID;
            public TreeViewTag(string pKey, Guid pID)
            {
                this.Key = pKey;
                this.ID = pID;
            }
        }
        internal class EncryptionsHelp
        {
            public static string Encrypt(string clearText, string Password)
            {
                byte[] clearBytes = Encoding.Unicode.GetBytes(clearText);
                PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password, new byte[]
                {
                    73,
                    118,
                    97,
                    110,
                    32,
                    77,
                    101,
                    100,
                    118,
                    101,
                    100,
                    101,
                    118
                });
                byte[] encryptedData = PublicOperations.EncryptionsHelp.Encrypt(clearBytes, pdb.GetBytes(32), pdb.GetBytes(16));
                return Convert.ToBase64String(encryptedData);
            }
            public static byte[] Encrypt(byte[] clearData, byte[] Key, byte[] IV)
            {
                MemoryStream ms = new MemoryStream();
                Rijndael alg = Rijndael.Create();
                alg.Key = Key;
                alg.IV = IV;
                CryptoStream cs = new CryptoStream(ms, alg.CreateEncryptor(), CryptoStreamMode.Write);
                cs.Write(clearData, 0, clearData.Length);
                cs.Close();
                return ms.ToArray();
            }
            public static string Decrypt(string cipherText, string Password)
            {
                byte[] cipherBytes = Convert.FromBase64String(cipherText);
                PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password, new byte[]
                {
                    73,
                    118,
                    97,
                    110,
                    32,
                    77,
                    101,
                    100,
                    118,
                    101,
                    100,
                    101,
                    118
                });
                byte[] decryptedData = PublicOperations.EncryptionsHelp.Decrypt(cipherBytes, pdb.GetBytes(32), pdb.GetBytes(16));
                return Encoding.Unicode.GetString(decryptedData);
            }
            public static byte[] Decrypt(byte[] cipherData, byte[] Key, byte[] IV)
            {
                MemoryStream ms = new MemoryStream();
                Rijndael alg = Rijndael.Create();
                alg.Key = Key;
                alg.IV = IV;
                CryptoStream cs = new CryptoStream(ms, alg.CreateDecryptor(), CryptoStreamMode.Write);
                cs.Write(cipherData, 0, cipherData.Length);
                cs.Close();
                return ms.ToArray();
            }
        }
        public const string REGULAR_FOR_DATE = "(0[1-9]|[12][0-9]|3[00])[- /.](0[1-9]|1[012])[- /.]((14|20)\\d\\d)";
        internal const string FIELD_TYPE_TEXT_SINGLE = "TextSingleLine";
        internal const string FIELD_TYPE_TEXT_MULTI = "TextMultiLine";
        internal const string FIELD_TYPE_TEXT_NUMBER = "Number";
        internal const string FIELD_TYPE_TEXT_DATE = "Date";
        internal const string FIELD_TYPE_TEXT_TIME = "Time";
        internal const string COMMAND_MENU_LOGIN = "LoginToolStripMenuItem";
        internal const string COMMAND_MENU_LOGOUT = "LogOutToolStripMenuItem";
        internal const string COMMAND_MENU_EXIT = "exitToolStripMenuItem";
        internal const string COMMAND_REG_DBSERVER = "DBServer";
        internal const string COMMAND_REG_DBNAME = "DBName";
        internal const string COMMAND_REG_DBLOGIN = "DBLogin";
        internal const string COMMAND_REG_DBPASSWORD = "DBPassword";
        internal const string MESSAGE_ERROR_INVALIDACCESS = "خطأ في إسم المستخدم أو كلمة المرور . حاول مرة أخرى";
        internal const string MESSAGE_INFO_اسم_الدخول_موجود = "عفوا! اسم المستخدم موجود مسبقا";
        internal const string MESSAGE_INFO_حقل_مطلوب = "{0} لايمكن أن يكون فارغ.";
        internal const string MESSAGE_INFO_كلمة_المرور_غير_متساوية = "كلمة المرور وتأكيدها لا بد أن تتطابق";
        internal const string MESSAGE_QUES_تأكيد_بالحذف = "هل أنت متأكد من رغبتك بحدف {0} المحدد";
        internal const string MESSAGE_QUES_لايمكن_الحذف_لوجود_روابط = "لايمكنك حدف المستخدم .. لوجود بعض العمليات المرتبطة به";
        internal const string MESSAGE_DATE_FORMAT = "عفوا!.إدخال التاريخ غير صحيح... لابد أن يكون اليوم/الشهر/السنة";
        internal const string MESSAGE_SELECT_CURRENT_DATE = "عفوا!! لا بد أن تقوم باختيار السنة الحالية";
        internal const string MESSAGE_ENTER_HOLIDAY_NAME = "عفوا!!يجب أن تدخل اسم الإجازة";
        internal const string MESSAGE_INFO_FROM_GTH_TO_HOLIDAY = "عفوا!! بداية الإجازة يجب أن تكون أقل أو تساوي نهايتها";
        internal const string MESSAGE_INFO_أختار_تصنيف_الوظيفة = "عفوا!! يجب أن تختار اسم تصنيف الوضيفة..ومن تم حاول مرة أخرى.";
        internal const string MESSAGE_INFO_SELECT_THEN_OK = "عفوا!! يجب أن تختار أولاً  من الجدول ومن تم الضغط على زر موافق";
        internal const string MESSAGE_INFO_ADDING_NEW_ITEMS = "أنت قمت بتغيير {0}!! هل أنت متأكد من رغبتك في هذا التغيير؟\nأنقر على `نعم` للقيام باضافة عناصر جديدة له..أو `لا` للتراجع!!";
        internal const string MESSAGE_INFO_NO_WORKTIME_SPECIEFIED = "يبدو ان تاريخ اليوم لا يوجد له وقت للدوام في قاعدة البيانات\n..أو ان مدير النظام لم يدخل وقت الدوام لهذا اليوم..أرجو التأكد من مدير النظام";
        internal const string MESSAGE_INFO_EMP_HAS_ATTENDED = "لقد تم تحضير الموظفة لهذا اليوم";
        internal const string MESSAGE_INFO_START_END_DATE = "يحدث تاريخ الإنتهاء الذي أدخلته قبل تاريخ البدء.";
        internal const string MESSAGE_INFO_DAY_THURSDAY_FRIDAY = "ربما يحدث التاريخ في احدى ايام الإجازة الرسمية (الجمعة أو الخميس) ؟؟\nهل  تريد متابعة حفظ التاريخ؟";
        internal const string MESSAGE_DATE_OCCURE_IN_EMP_HOLIDAY = "يحدث هذا التاريخ في تاريخ قد أضيف في قائمة الإجازات لهذه الموظفة؟؟";
        internal const string MESSAGE_QUST_DELETE_EMPLOYE = "هل أنت متأكد من رغبتك في حذف الموظفة ؟؟";
        internal const string MESSAGE_QUST_DELETE_ACTION = "هل أنت متأكد من رغبتك في حذف {0} ؟؟";
        internal const string MESSAGE_INFO_UN_ABLE_DELETE = "عذرا..لم يتم الحذف بسبب وجود روابط متعلقة بالمادة المراد حذفها !!";
        internal const string MESSAGE_INFO_DATE_OCCUR_IN_ATTEND = "يحدث التاريخ الذي أدخلته في تاريخ قد تم تحضير الموظفة فيه..أرجو التأكد من التاريخ المدخل !!";
        internal const string PRODUCT_NAME = "نظام الحضور والغياب";
        public static string UserName;
        public static Guid UserID;
        internal static void ShowErrorMessage(Exception ex)
        {
            MessageBox.Show(ex.Message, "نظام الحضور والغياب", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign | MessageBoxOptions.RtlReading);
            frmErrorMessage frm = new frmErrorMessage();
            frm.txtMessage.Text = ex.Message;
            string messageDetails = ex.Source + "\n";
            messageDetails = messageDetails + ex.StackTrace + "\n";
            messageDetails += ex.ToString();
            frm.txtMessageDetails.Text = messageDetails;
            frm.ShowDialog();
        }
        internal static void ShowInfoMessage(string Message)
        {
            MessageBox.Show(Message, "نظام الحضور والغياب", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign | MessageBoxOptions.RtlReading);
        }
        internal static DialogResult ShowQuestionMessage(string Question)
        {
            return MessageBox.Show(Question, "نظام الحضور والغياب", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, MessageBoxOptions.RightAlign | MessageBoxOptions.RtlReading);
        }
        internal static void ShowتحذيرMessage(string Message)
        {
            MessageBox.Show(Message, "نظام الحضور والغياب", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign | MessageBoxOptions.RtlReading);
        }
        internal static bool IsDateThursdayOrFriday(string pDate)
        {
            try
            {
                CultureInfo cl = new CultureInfo("ar-sa");
                DateTime currentTime;
                try
                {
                    currentTime = DateTime.ParseExact(pDate, "dd/MM/yyyy", cl);
                }
                catch
                {
                    currentTime = DateTime.ParseExact("29" + pDate.Substring(2, 8), "dd/MM/yyyy", cl).AddDays(1.0);
                }
                if (currentTime.DayOfWeek.ToString() == "Thursday" || currentTime.DayOfWeek.ToString() == "Friday")
                {
                    return currentTime.DayOfWeek.ToString() == "Thursday" || currentTime.DayOfWeek.ToString() == "Friday";
                }
            }
            catch (Exception ex)
            {
                PublicOperations.ShowErrorMessage(ex);
            }
            return false;
        }
        internal static bool IsDateOccureInEmployeeHoliday(string date, SqlConnection sqlConnection, Guid EmployeeID, Guid YearID)
        {
            try
            {
                DBOperations db = new DBOperations(sqlConnection);
                DataTable dt = db.sp_EmployeeHolidays_GetByDateAndEmpAndYear(YearID, EmployeeID, date).Tables[0];
                return dt.Rows.Count > 0;
            }
            catch (Exception ex)
            {
                PublicOperations.ShowErrorMessage(ex);
            }
            return false;
        }
        internal static DataTable GetFieldDataTypes()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("fld_FieldTypeValue", typeof(string));
            DataRow dr = dt.NewRow();
            dr[0] = "نص [سطر واحد]";
            dr[1] = "TextSingleLine";
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr[0] = "نص [عدة سطور]";
            dr[1] = "TextMultiLine";
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr[0] = "رقم";
            dr[1] = "Number";
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr[0] = "تاريخ";
            dr[1] = "Date";
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr[0] = "وقت";
            dr[1] = "Time";
            dt.Rows.Add(dr);
            return dt;
        }
        internal static DataTable GetCurrentLearingYearID(SqlConnection SQLConnection)
        {
            DBOperations db = new DBOperations(SQLConnection);
            return db.sp_Years_GetCurrentYear().Tables[0];
        }
        internal static bool IsToLessThanFrom(DateTime from, DateTime to)
        {
            return from > to;
        }
        internal static DateTime ParseExact(string datetime, string format)
        {
            CultureInfo cl = new CultureInfo("ar-sa");
            DateTime date;
            try
            {
                date = DateTime.ParseExact(datetime, format, cl);
            }
            catch
            {
                date = DateTime.ParseExact("29" + datetime.Substring(2, 8), format, cl).AddDays(1.0);
            }
            return date;
        }
        internal static void SelectAll(EditBox control)
        {
            control.SelectAll();
        }
        internal static void SelectAll(MaskedEditBox control)
        {
            control.SelectAll();
        }
        internal static bool IsValidValue(string regularExpression, string value)
        {
            Regex reg = new Regex(regularExpression, RegexOptions.Singleline);
            Match mtch = reg.Match(value);
            return mtch.Success;
        }
        internal static string GetHijiryMonthNumberByName(string key)
        {
            Hashtable resource = PublicOperations.GetHijiriMonthsNumbers();
            key.ToString().Replace("\u00a0", "_");
            return (string)resource[key];
        }
        internal static string GetHijiryMonthNameByNumber(string key)
        {
            Hashtable resource = PublicOperations.GetHijiriMonthsNames();
            return (string)resource[key];
        }
        internal static Hashtable GetHijiriMonthsNumbers()
        {
            Hashtable resources = new Hashtable();
            DataSet dataSet = new DataSet();
            dataSet.ReadXml(PublicOperations.EmbeddedResource.GetFile("EmployeeAffair.StaticData.StaticInfoDataSet.xml"));
            foreach (DataRow dr in dataSet.Tables[0].Rows)
            {
                resources.Add(dr["Name"], dr["Number"]);
            }
            return resources;
        }
        internal static DataSet GetHijiryDataTable()
        {
            DataSet dataSet = new DataSet();
            dataSet.ReadXml(PublicOperations.EmbeddedResource.GetFile("EmployeeAffair.StaticData.StaticInfoDataSet.xml"));
            return dataSet;
        }
        private static Hashtable GetHijiriMonthsNames()
        {
            Hashtable resources = new Hashtable();
            DataSet dataSet = PublicOperations.GetHijiryDataTable();
            foreach (DataRow dr in dataSet.Tables[0].Rows)
            {
                resources.Add(dr["Number"], dr["Name"]);
            }
            return resources;
        }
        internal static void SelectDateFromDialog(MaskedEditBox control, SqlConnection SQLConnection, bool CanAddNewYear)
        {
            frmCustomDateTime frm = new frmCustomDateTime(SQLConnection, CanAddNewYear);
            if (CanAddNewYear)
            {
                frm.txtYear.ComboStyle = ComboStyle.Combo;
            }
            if (control.Text.Length != 0)
            {
                frm.txtYear.SelectedValue = control.Text.Substring(6, 4);
                int day = Convert.ToInt32(control.Text.Substring(0, 2));
                frm.txtDay.Value = day;
                string month = control.Text.Substring(3, 2);
                if (frm.txtMonth.Items.Contains(month))
                {
                    frm.txtMonth.Text = PublicOperations.GetHijiryMonthNameByNumber(month);
                }
            }
            frm.ShowDialog();
            if (frm.DialogResult == DialogResult.OK)
            {
                string day2 = (frm.txtDay.Value.ToString().Length == 1) ? ("0" + frm.txtDay.Value.ToString()) : frm.txtDay.Value.ToString();
                string monthNo = frm.txtMonth.SelectedValue.ToString();
                string year = frm.txtYear.SelectedValue.ToString();
                control.Text = string.Concat(new string[]
                {
                    day2,
                    "/",
                    monthNo,
                    "/",
                    year.ToString()
                });
            }
        }
        public static void MonthCalendarChanged(UIComboBox day, UIComboBox month)
        {
            string arg_0B_0 = month.SelectedItem.Text;
        }
        private static RegistryKey GetRegistryObject()
        {
            return Registry.CurrentUser.CreateSubKey("Software\\EmployeesAffairSystem");
        }
        internal static void GetDBLoginValues(ref string DBServer, ref string DBLogin, ref string DBName, ref string DBPassword)
        {
            try
            {
                RegistryKey RegistryObject = PublicOperations.GetRegistryObject();
                DBServer = RegistryObject.GetValue("DBServer", "إسم الخادم هنا").ToString();
                DBLogin = RegistryObject.GetValue("DBLogin", "إسم الدخول هنا").ToString();
                DBName = RegistryObject.GetValue("DBName", "إسم قاعدة البيانات هنا").ToString();
                try
                {
                    DBPassword = PublicOperations.EncryptionsHelp.Decrypt(RegistryObject.GetValue("DBPassword", PublicOperations.EncryptionsHelp.Encrypt("Password", "Password")).ToString(), "Password");
                }
                catch
                {
                }
            }
            catch (Exception ex)
            {
                PublicOperations.ShowErrorMessage(ex);
            }
        }
        internal static void SetDBLoginValues(string DBServer, string DBLogin, string DBPassword, string DBName)
        {
            RegistryKey RegistryObject = PublicOperations.GetRegistryObject();
            RegistryObject.SetValue("DBServer", DBServer);
            RegistryObject.SetValue("DBName", DBName);
            RegistryObject.SetValue("DBPassword", PublicOperations.EncryptionsHelp.Encrypt(DBPassword, "Password"));
            RegistryObject.SetValue("DBLogin", DBLogin);
        }
        internal static string GetConnectionString()
        {
            string result;
            try
            {
                string ServerName = null;
                string LoginName = null;
                string LoginBassword = null;
                string DatabaseName = null;
                PublicOperations.GetDBLoginValues(ref ServerName, ref LoginName, ref DatabaseName, ref LoginBassword);
                string strConnection = "Server={0};UID={1};Password={2};Database={3}";
                strConnection = string.Format(strConnection, new object[]
                {
                    ServerName,
                    LoginName,
                    LoginBassword,
                    DatabaseName
                });
                result = strConnection;
            }
            catch (Exception ex)
            {
                PublicOperations.ShowErrorMessage(ex);
                result = null;
            }
            return result;
        }
    }
}