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;
}
}
}