protected void SaveBtn_Click(object sender, EventArgs e)
        {
            int RolID = int.Parse(RoleNoForSearchDrop.SelectedValue);

            _RolPriv = new Rol_PrivFT();
            try
            {
                if (!EditFalg)
                {
                    Rol_PrivFT rp     = new Rol_PrivFT();
                    var        RoleID = int.Parse(RoleNoForSearchDrop.SelectedValue);
                    rp = db.Rol_PrivFT.Where(item => item.Rol_id == RoleID).FirstOrDefault();
                    if (rp == null)
                    {
                        foreach (var item in RolPrivList)
                        {
                            item.LoginID = ExtendedMethod.LoginedUser.Id;
                            db.Rol_PrivFT.Add(item);
                            db.SaveChanges();
                        }
                        Initialize_Page();
                        AddErrorTxt.Text      = "تم الحفظ بنجاح";
                        AddErrorTxt.ForeColor = System.Drawing.Color.Green;
                    }
                    else
                    {
                        AddErrorTxt.Text      = "هذه الوظيفة مضاف لها صلاحيات بالفعل الرجاء الضغط على بحث لرؤيتها";
                        AddErrorTxt.ForeColor = System.Drawing.Color.Red;
                    }
                }
                else
                {
                    foreach (var item in RolPrivList)
                    {
                        item.LoginID = ExtendedMethod.LoginedUser.Id;

                        db.Rol_PrivFT.AddOrUpdate(item);
                        db.SaveChanges();
                    }
                    Aside.Menu_Start();
                    Initialize_Page();

                    AddErrorTxt.Text      = "تم الحفظ بنجاح";
                    AddErrorTxt.ForeColor = System.Drawing.Color.Green;
                }
            }
            catch (Exception ex)
            {
                AddErrorTxt.Text      = "لم يتم الحفظ";
                AddErrorTxt.ForeColor = System.Drawing.Color.Red;
            }
        }
        public void Initialize_Page()
        {
            EditFalg                          = false;
            AddErrorTxt.Text                  = "";
            AddErrorTxt.ForeColor             = System.Drawing.Color.Red;
            RoleNoForSearchDrop.SelectedIndex = 0;
            _Role    = new Role();
            RoleList = new List <Role>();
            RoleList = db.Role.ToList();
            RoleNoForSearchDrop.DataSource     = RoleList;
            RoleNoForSearchDrop.DataTextField  = "name";
            RoleNoForSearchDrop.DataValueField = "ID";
            RoleNoForSearchDrop.DataBind();
            _RolPriv    = new Rol_PrivFT();
            RolPrivList = new List <Rol_PrivFT>();

            privilage        _Priv    = new privilage();
            List <privilage> PrivList = new List <privilage>();

            grdList  = new List <PrGrd>();
            PrivList = db.privilage.ToList();
            foreach (var p in PrivList)
            {
                grdList.Add(new PrGrd()
                {
                    Title       = p.Title,
                    AddFlag     = false,
                    AllFlag     = false,
                    DeleteFlag  = false,
                    EditFlag    = false,
                    SearchFlag  = false,
                    PrivilageID = p.ID
                });
            }
            PrivilageGridID.DataSource = grdList;
            PrivilageGridID.DataBind();
            privilage _Privilage = new privilage();

            PrivlageNameDict = new Dictionary <int, string>();
            foreach (var p in db.privilage.ToList())
            {
                PrivlageNameDict.Add(p.ID, p.Title);
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                Initialize_Page();
            }
            if (PrivilageGridID.Rows.Count > 0)
            {
                int RolID = int.Parse(RoleNoForSearchDrop.SelectedValue);
                foreach (GridViewRow row in PrivilageGridID.Rows)
                {
                    Add      = (CheckBox)row.FindControl("Addchbx") as CheckBox;
                    Edit     = (CheckBox)row.FindControl("Editchbx") as CheckBox;
                    Search   = (CheckBox)row.FindControl("Searchchbx") as CheckBox;
                    Delete   = (CheckBox)row.FindControl("Deletechbx") as CheckBox;
                    All      = (CheckBox)row.FindControl("Allchbx") as CheckBox;
                    Title    = (Label)row.FindControl("TitleTxt") as Label;
                    PrevID   = (Label)row.FindControl("PrivilageID") as Label;
                    _RolPriv = new Rol_PrivFT();

                    if (EditFalg)// RolPrivFK
                    {
                        RolPrivFK   = (Label)row.FindControl("RolPrivFKLBl") as Label;
                        _RolPriv.ID = int.Parse(RolPrivFK.Text);
                    }
                    _RolPriv.AddFlag    = Add.Checked;
                    _RolPriv.EditFlag   = Edit.Checked;
                    _RolPriv.DeleteFlag = Delete.Checked;
                    _RolPriv.SearchFlag = Search.Checked;
                    _RolPriv.AllFlag    = All.Checked;
                    _RolPriv.Rol_id     = RolID;
                    if (All.Checked)
                    {
                        _RolPriv.AddFlag    = true;
                        _RolPriv.EditFlag   = true;
                        _RolPriv.DeleteFlag = true;
                        _RolPriv.SearchFlag = true;
                    }
                    _RolPriv.Priv_id = int.Parse(PrevID.Text.ToString());
                    RolPrivList.Add(_RolPriv);
                }
            }
        }
        public void SearchFn(int RoleID)
        {
            UpdateMenu       = true;
            AddErrorTxt.Text = "";
            EditFalg         = true;
            _RolPriv         = new Rol_PrivFT();
            RolPrivList      = new List <Rol_PrivFT>();
            privilage _Privilage = new privilage();

            grdList = new List <PrGrd>();
            try
            {
                RolPrivList = db.Rol_PrivFT.Where(item => item.Rol_id == RoleID).ToList();
                //foreach (var rp in RolPrivList)
                //{
                //    string _PrivilageName = PrivlageNameDict[rp.Priv_id];
                //    grdList.Add(new PrGrd()
                //    {
                //        Title = _PrivilageName,
                //        AddFlag = rp.AddFlag,
                //        AllFlag = rp.AllFlag,
                //        DeleteFlag = rp.DeleteFlag,
                //        EditFlag = rp.EditFlag,
                //        SearchFlag = rp.SearchFlag,
                //        PrivilageID = rp.Priv_id,
                //        RolPrivFK=rp.ID

                //    });
                //}
                foreach (var rp in PrivlageNameDict)
                {
                    string _PrivilageName = rp.Value;

                    try
                    {
                        Rol_PrivFT RP = RolPrivList.Where(o => o.Priv_id == rp.Key).First();

                        grdList.Add(new PrGrd()
                        {
                            Title       = _PrivilageName,
                            AddFlag     = Convert.ToBoolean(RP.AddFlag),
                            AllFlag     = Convert.ToBoolean(RP.AllFlag),
                            DeleteFlag  = Convert.ToBoolean(RP.DeleteFlag),
                            EditFlag    = Convert.ToBoolean(RP.EditFlag),
                            SearchFlag  = Convert.ToBoolean(RP.SearchFlag),
                            PrivilageID = Convert.ToInt32(RP.Priv_id),
                            RolPrivFK   = RP.ID
                        });
                    }
                    catch (Exception ex)
                    {
                        grdList.Add(new PrGrd()
                        {
                            Title       = _PrivilageName,
                            AddFlag     = false,
                            AllFlag     = false,
                            DeleteFlag  = false,
                            EditFlag    = false,
                            SearchFlag  = false,
                            PrivilageID = rp.Key,
                        });
                    }
                }
                PrivilageGridID.DataSource = grdList;
                PrivilageGridID.DataBind();
            }
            catch (Exception ex)
            {
            }
        }
        public static void Menu_Start()
        {
            menuItems = new MenuItemCollection();
            // First LI Main Page
            menuItems.Add(new MenuItem()
            {
                NavigateUrl = "../Views/Default.aspx", Text = "الشاشه الرئيسيه", Value = "1001"
            });
            // 2nd LI is Ul الادخلات
            int counter = 1;

            menuItems.Add(new MenuItem()
            {
                Text = "الأدخــلات", Value = "100"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Entries/LookUpsViews", Text = "مــلــحـقات الـمـدخلات", Value = "1"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Entries/ChartOfAccountsView", Text = "دليل الحسابات", Value = "2"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Entries/AddDriver", Text = "أضافه سائق", Value = "3"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Entries/AddCars", Text = "أضافه سيارة", Value = "4"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Entries/AddCarMaintenance", Text = "مـتابعة الـصـيـانـة", Value = "5"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Entries/AddProduct", Text = "أضافة صنف", Value = "6"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Entries/AddClient", Text = "أضافة عميل", Value = "7"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Entries/AddSupplier", Text = "أضافة مورد", Value = "8"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Entries/Region", Text = "أضافة منطقه", Value = "9"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Entries/AddListPrice", Text = "قائمه اسعار", Value = "10"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "#", Text = "أضافه مصروفات نثريه", Value = "11"
            });
            // 3th LI is Ul الحركة اليوميه
            counter++;
            menuItems.Add(new MenuItem()
            {
                Text = "الحركة اليوميه", Value = "101"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/DailyMovements/MonyIn", Text = "سند قبض:نقدي/شيك", Value = "12"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/DailyMovements/MonyOut", Text = "سند صرف:نقدي/شيك", Value = "13"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/DailyMovements/AddTransportCommand", Text = "أمر نقل", Value = "14"
            });
            // 4th LI is Ul الـــصـيـانـة
            counter++;
            menuItems.Add(new MenuItem()
            {
                Text = "الـــصـيـانـة", Value = "102"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Maintenance/ListingPurchaseInvoice", Text = "أذن اسـتـلام بــضـاعـة", Value = "15"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Maintenance/ListingSalesInvoice", Text = "أذن صــرف بــضـاعـة", Value = "16"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "#", Text = "حــركـة الـصـيـانـة", Value = "17"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Maintenance/AddCarChangeRateOnDis", Text = "معدل التغيير والمسافة المقطوعه", Value = "41"
            });

            // 5th LI is Ul لوحه التحكم
            counter++;
            menuItems.Add(new MenuItem()
            {
                Text = "لوحه التحكم", Value = "103"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/DashBoard/AddUser", Text = "أضافة مستخدم", Value = "18"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/DashBoard/AddRolePrivilege", Text = "الصلاحيات", Value = "19"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "#", Text = "مراقبه المستخدم", Value = "20"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "#", Text = "ترحيل سنوي", Value = "21"
            });

            // 6th LI is Ul حسابات عامة
            counter++;
            menuItems.Add(new MenuItem()
            {
                Text = "حسابات عامة", Value = "104"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/GeneralAccounts/IncomsEntry", Text = "قيد مقبوضات", Value = "22"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/GeneralAccounts/OutcomsEntry", Text = "قيد مدفوعات", Value = "23"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/GeneralAccounts/PurshasesEntry", Text = "قيد المشتريات", Value = "24"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/GeneralAccounts/DiaryEntryView", Text = "قيد يوميه", Value = "25"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/GeneralAccounts/OstazAccount", Text = "حساب استاذ", Value = "26"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/GeneralAccounts/AssistantOstazAccount", Text = "حساب استاذ مساعد", Value = "27"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/GeneralAccounts/BalanceReview", Text = "ميزان مراجعه", Value = "28"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "#", Text = "حساب مركز مالي", Value = "29"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "#", Text = "حساب دخل", Value = "30"
            });
            // 7th LI is Ul حسابات عامة
            counter++;
            menuItems.Add(new MenuItem()
            {
                Text = "تقارير", Value = "105"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Reports/ItemsCard", Text = "كارتة صنف", Value = "31"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Reports/ClientOperationsView", Text = "كشف حساب عميل", Value = "32"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Reports/SupplierOperationsView", Text = "كشف حساب مورد", Value = "33"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "#", Text = "ارصده عملاء", Value = "34"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "#", Text = "ارصده موردين", Value = "35"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Reports/TrasnportOrderReport", Text = "تقارير بأوامر النقل", Value = "36"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Reports/CarMaintenanceCost", Text = "تقارير صيانه السيارت", Value = "37"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "#", Text = "حسابات يوميه", Value = "38"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "#", Text = "تقارير صيانه سيارة مفصل", Value = "39"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Reports/TreasuryReportView", Text = "تقرير خزينه", Value = "40"
            });
            menuItems[counter].ChildItems.Add(new MenuItem()
            {
                NavigateUrl = "../../Views/Reports/SolarOrPanzenReport", Text = "تقرير اسـتـعـاضـة السولار", Value = "42"
            });

            Rol_PrivFT        RolePriv      = new Rol_PrivFT();
            List <Rol_PrivFT> Role_PrivList = new List <Rol_PrivFT>();

            ///////////////////// get Current user name and its Role and all related Role privilege
            var LoginUsername = HttpContext.Current.User.Identity.Name;
            var LogUserRoleID = db.AspUser.Where(user => user.Username == LoginUsername).FirstOrDefault().RoleID;

            Role_PrivList = db.Rol_PrivFT.Where(item => item.Rol_id == LogUserRoleID).ToList();
            ///////////////////////////////////////////////////////////////////////////
            for (int i = 0; i < menuItems.Count; i++)
            {
                try
                {
                    RolePriv = new Rol_PrivFT();
                    RolePriv = Role_PrivList.Where(o => o.Priv_id == int.Parse(menuItems[i].Value)).FirstOrDefault();
                    if (RolePriv != null)
                    {
                        if (RolePriv.AddFlag == true || RolePriv.EditFlag == true || RolePriv.DeleteFlag == true || RolePriv.SearchFlag == true || RolePriv.AllFlag == true)
                        {
                            for (int j = 0; j < menuItems[i].ChildItems.Count; j++)
                            {
                                RolePriv = new Rol_PrivFT();
                                RolePriv = Role_PrivList.Where(o => o.Priv_id == int.Parse(menuItems[i].ChildItems[j].Value)).FirstOrDefault();
                                if (RolePriv == null)
                                {
                                    menuItems[i].ChildItems.Remove(menuItems[i].ChildItems[j]);
                                    j = -1;
                                }
                                else
                                if (RolePriv.AddFlag != true && RolePriv.EditFlag != true && RolePriv.DeleteFlag != true && RolePriv.SearchFlag != true && RolePriv.AllFlag != true)
                                {
                                    menuItems[i].ChildItems.Remove(menuItems[i].ChildItems[j]);
                                    j = -1;
                                }
                            }
                        }
                        else
                        {
                            menuItems.Remove(menuItems[i]);
                            i = -1;
                        }
                    }
                    else
                    {
                        menuItems.Clear();
                    }
                }
                catch (Exception ex)
                {
                    continue;
                }
            }
            AddRolePrivilege.UpdateMenu = false;
        }