Пример #1
0
        /// <summary>
        /// 刪除角色權限
        /// </summary>
        public void DeleteRolePrivilege(Newtonsoft.Json.Linq.JObject requestValue, Newtonsoft.Json.Linq.JObject Data, MESStationReturn StationReturn)
        {
            OleExec sfcdb = this.DBPools["SFCDB"].Borrow();
            string  DeleteSql = "", P_code = "";
            string  strid  = "";
            string  MenuID = "";

            T_C_PRIVILEGE   CheckExistMenuID = new T_C_PRIVILEGE(sfcdb, DBTYPE);
            Row_C_PRIVILEGE ChRow            = (Row_C_PRIVILEGE)CheckExistMenuID.NewRow();
            T_C_MENU        tcm  = new T_C_MENU(sfcdb, DBTYPE);
            DataTable       rcm  = new DataTable();
            DataTable       TTcm = new DataTable();
            List <c_role_privilegeinfobyemp> RolePrivilegeList = new List <c_role_privilegeinfobyemp>();
            List <string>        DeletePrivilege = new List <string>();
            List <MENUS>         GetMenuList     = new List <MENUS>();
            T_C_ROLE_PRIVILEGE   tcup            = new T_C_ROLE_PRIVILEGE(sfcdb, DBTYPE);
            Row_C_ROLE_PRIVILEGE rcup            = (Row_C_ROLE_PRIVILEGE)tcup.NewRow();
            T_C_MENU             Tmenu           = new T_C_MENU(sfcdb, DBTYPE);
            string ROLE_ID = Data["ROLE_ID"].ToString();

            try
            {
                //sfcdb.BeginTrain();
                //foreach (string  item in Data["PRIVILEGE_ID"])
                //{
                //    DeletePrivilege.Add(item.Trim('\'').Trim('\"'));
                //}


                foreach (string item in Data["PRIVILEGE_ID"])
                {
                    string PRIVILEGE_ID = item.Trim('\'').Trim('\"');

                    //RolePrivilegeList = tcup.QueryRolePrivilege(ROLE_ID, sfcdb);

                    //ChRow = (Row_C_PRIVILEGE)CheckExistMenuID.getC_PrivilegebyID(PRIVILEGE_ID, sfcdb);
                    //if (ChRow.MENU_ID != null && ChRow.MENU_ID != "N/A")
                    //{
                    //    if (!Tmenu.Check_PARENT(ChRow.MENU_ID,sfcdb))  //CHECK刪除的權限是否存在下級權限
                    //    {
                    //        GetMenuList = Tmenu.GetMenuNextID("PARENT_CODE", ChRow.MENU_ID, sfcdb);
                    //        if (GetMenuList!=null)
                    //        {
                    //            for (int i = 0; i < GetMenuList.Count-1; i++)
                    //            {
                    //                ChRow = (Row_C_PRIVILEGE)CheckExistMenuID.getC_PrivilegebyMenuID(GetMenuList[i].ID.ToString(), sfcdb);
                    //                c_role_privilegeinfobyemp h = RolePrivilegeList.Find(s=>s.PRIVILEGE_ID== ChRow.ID);
                    //                if (h != null)
                    //                {
                    //                    string u = DeletePrivilege.Find(t => t == ChRow.ID);
                    //                    if (u == null || u == "")
                    //                    {
                    //                        StationReturn.Status = StationReturnStatusValue.Fail;
                    //                        StationReturn.Message = "要刪除的權限存在下級權限,無法越級刪除";
                    //                        StationReturn.Data = ChRow.PRIVILEGE_NAME;
                    //                        this.DBPools["SFCDB"].Return(sfcdb);
                    //                        return;
                    //                    }
                    //                }

                    //            }
                    //        }

                    //    }

                    //        rcup = tcup.GetC_Role_Privilege_ID(ROLE_ID, PRIVILEGE_ID, sfcdb);
                    //        strid = rcup.ID.ToString();
                    //        rcup = (Row_C_ROLE_PRIVILEGE)tcup.GetObjByID(strid, sfcdb);
                    //        DeleteSql += rcup.GetDeleteString(DBTYPE) + ";\n";

                    //}
                    //else
                    //{
                    //    rcup = tcup.GetC_Role_Privilege_ID(ROLE_ID, PRIVILEGE_ID, sfcdb);
                    //    strid = rcup.ID.ToString();
                    //    rcup = (Row_C_ROLE_PRIVILEGE)tcup.GetObjByID(strid, sfcdb);
                    //    DeleteSql += rcup.GetDeleteString(DBTYPE) + ";\n";
                    //}


                    // by SDL  CHECK要刪除的權限要是存在下級菜單則不允許刪除
                    rcup       = tcup.GetC_Role_Privilege_ID(ROLE_ID, PRIVILEGE_ID, sfcdb);
                    strid      = rcup.ID.ToString();
                    rcup       = (Row_C_ROLE_PRIVILEGE)tcup.GetObjByID(strid, sfcdb);
                    DeleteSql += rcup.GetDeleteString(DBTYPE) + ";\n";

                    ChRow = (Row_C_PRIVILEGE)CheckExistMenuID.getC_PrivilegebyID(PRIVILEGE_ID, sfcdb);
                    if (ChRow.MENU_ID != null || ChRow.MENU_ID != "N/A")
                    {
                        rcm = tcm.getC_MenubyPARENT_CODE(ChRow.MENU_ID, sfcdb);

                        if (rcm.Rows.Count != 0)
                        {
                            for (int i = 0; i < rcm.Rows.Count - 1; i++)
                            {
                                MenuID = rcm.Rows[i]["ID"].ToString();

                                ChRow = (Row_C_PRIVILEGE)CheckExistMenuID.getC_PrivilegebyMenuID(MenuID, sfcdb);
                                rcup  = (Row_C_ROLE_PRIVILEGE)tcup.GetC_Role_Privilege_ID(ROLE_ID, ChRow.ID, sfcdb);
                                if (P_code.IndexOf(MenuID) < 0 && rcup != null)
                                {
                                    rcup       = (Row_C_ROLE_PRIVILEGE)tcup.GetObjByID(rcup.ID, sfcdb);
                                    DeleteSql += rcup.GetDeleteString(DBTYPE) + ";\n";
                                    P_code    += MenuID + ",";
                                }
                                TTcm = tcm.getC_MenubyPARENT_CODE(MenuID, sfcdb);

                                if (TTcm.Rows.Count != 0)
                                {
                                    for (int j = 0; j < TTcm.Rows.Count - 1; j++)
                                    {
                                        MenuID = TTcm.Rows[j]["ID"].ToString();
                                        ChRow  = (Row_C_PRIVILEGE)CheckExistMenuID.getC_PrivilegebyMenuID(MenuID, sfcdb);
                                        if (ChRow != null)
                                        {
                                            rcup = (Row_C_ROLE_PRIVILEGE)tcup.GetC_Role_Privilege_ID(ROLE_ID, ChRow.ID, sfcdb);
                                            if (P_code.IndexOf(MenuID) < 0 && rcup != null)
                                            {
                                                rcup       = (Row_C_ROLE_PRIVILEGE)tcup.GetObjByID(rcup.ID, sfcdb);
                                                DeleteSql += rcup.GetDeleteString(DBTYPE) + ";\n";
                                                P_code    += MenuID + ",";
                                            }
                                        }

                                        DataTable HHcm = tcm.getC_MenubyPARENT_CODE(MenuID, sfcdb);

                                        if (HHcm.Rows.Count != 0)
                                        {
                                            for (int z = 0; z < HHcm.Rows.Count - 1; z++)
                                            {
                                                MenuID = HHcm.Rows[z]["ID"].ToString();
                                                ChRow  = (Row_C_PRIVILEGE)CheckExistMenuID.getC_PrivilegebyMenuID(MenuID, sfcdb);
                                                if (ChRow != null)
                                                {
                                                    rcup = (Row_C_ROLE_PRIVILEGE)tcup.GetC_Role_Privilege_ID(ROLE_ID, ChRow.ID, sfcdb);
                                                    if (P_code.IndexOf(MenuID) < 0 && rcup != null)
                                                    {
                                                        rcup       = (Row_C_ROLE_PRIVILEGE)tcup.GetObjByID(rcup.ID, sfcdb);
                                                        DeleteSql += rcup.GetDeleteString(DBTYPE) + ";\n";
                                                        P_code    += MenuID + ",";
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                DeleteSql = "begin\n" + DeleteSql + "end;";
                sfcdb.ExecSQL(DeleteSql);
                sfcdb.CommitTrain();
                StationReturn.Status  = StationReturnStatusValue.Pass;
                StationReturn.Message = "刪除成功";
                sfcdb.CommitTrain();
                this.DBPools["SFCDB"].Return(sfcdb);
            }
            catch (Exception e)
            {
                sfcdb.RollbackTrain();
                this.DBPools["SFCDB"].Return(sfcdb);
                throw e;
            }
        }
Пример #2
0
        /// <summary>
        ///添加角色所擁有的權限ID INSERT C_ROLE_PRIVILEGE
        /// </summary>
        public void AddRolePrivilege(Newtonsoft.Json.Linq.JObject requestValue, Newtonsoft.Json.Linq.JObject Data, MESStationReturn StationReturn)
        {
            OleExec            sfcdb     = null;
            string             InsertSql = "";
            string             P_code    = "";
            T_C_ROLE_PRIVILEGE Roler;
            string             ROLE_ID = Data["ROLE_ID"].ToString();

            try
            {
                sfcdb = this.DBPools["SFCDB"].Borrow();
                sfcdb.BeginTrain();
                Roler = new T_C_ROLE_PRIVILEGE(sfcdb, DBTYPE);
                T_C_PRIVILEGE        CheckExistMenuID = new T_C_PRIVILEGE(sfcdb, DBTYPE);
                T_C_MENU             tcm  = new T_C_MENU(sfcdb, DBTYPE);
                Row_C_MENU           rcm  = (Row_C_MENU)tcm.NewRow();
                T_C_ROLE_PRIVILEGE   tcup = new T_C_ROLE_PRIVILEGE(sfcdb, DBTYPE);
                Row_C_ROLE_PRIVILEGE rcup = (Row_C_ROLE_PRIVILEGE)tcup.NewRow();

                foreach (string item in Data["PRIVILEGE_ID"])
                {
                    string PRIVILEGE_ID = item.Trim('\'').Trim('\"');
                    if (Roler.CheckPrivilegeData(ROLE_ID, PRIVILEGE_ID, sfcdb))
                    {
                        Row_C_ROLE_PRIVILEGE row = (Row_C_ROLE_PRIVILEGE)Roler.NewRow();
                        row.ID           = Roler.GetNewID(BU, sfcdb);
                        row.ROLE_ID      = ROLE_ID;
                        row.PRIVILEGE_ID = PRIVILEGE_ID;
                        row.EDIT_EMP     = LoginUser.EMP_NO;
                        row.SYSTEM_NAME  = SystemName;
                        row.EDIT_TIME    = GetDBDateTime();
                        InsertSql       += row.GetInsertString(DBTYPE) + ";\n";

                        Row_C_PRIVILEGE ChRow = (Row_C_PRIVILEGE)CheckExistMenuID.getC_PrivilegebyID(PRIVILEGE_ID, sfcdb);
                        if (ChRow.MENU_ID != null || ChRow.MENU_ID != "N/A")
                        {
                            P_code += ChRow.MENU_ID + ",";
                            rcm     = tcm.getC_MenubyID(ChRow.MENU_ID, sfcdb);

                            if (rcm.PARENT_CODE != "0")
                            {
                                if (P_code.IndexOf(rcm.PARENT_CODE) < 0 && tcup.GetC_Role_Privilege_ID(ROLE_ID, ChRow.MENU_ID, sfcdb) == null && Roler.CheckPrivilegeData(ROLE_ID, rcm.PARENT_CODE, sfcdb))
                                {
                                    rcup.ID           = tcup.GetNewID(BU, sfcdb);
                                    rcup.SYSTEM_NAME  = SystemName;
                                    rcup.ROLE_ID      = ROLE_ID;
                                    rcup.PRIVILEGE_ID = rcm.PARENT_CODE;
                                    rcup.EDIT_EMP     = LoginUser.EMP_NO;
                                    rcup.EDIT_TIME    = DateTime.Now;
                                    InsertSql        += rcup.GetInsertString(this.DBTYPE) + ";\n";
                                    P_code           += rcm.PARENT_CODE + ",";
                                }
                                do
                                {
                                    rcm = tcm.getC_MenubyID(rcm.PARENT_CODE, sfcdb);
                                    if (rcm.PARENT_CODE != "0")
                                    {
                                        if (P_code.IndexOf(rcm.PARENT_CODE) < 0 && tcup.GetC_Role_Privilege_ID(ROLE_ID, ChRow.MENU_ID, sfcdb) == null && Roler.CheckPrivilegeData(ROLE_ID, rcm.PARENT_CODE, sfcdb))
                                        {
                                            rcup.ID           = tcup.GetNewID(BU, sfcdb);
                                            rcup.SYSTEM_NAME  = SystemName;
                                            rcup.ROLE_ID      = ROLE_ID;
                                            rcup.PRIVILEGE_ID = rcm.PARENT_CODE;
                                            rcup.EDIT_EMP     = LoginUser.EMP_NO;
                                            rcup.EDIT_TIME    = DateTime.Now;
                                            InsertSql        += rcup.GetInsertString(this.DBTYPE) + ";\n";
                                            P_code           += rcm.PARENT_CODE + ",";
                                        }
                                    }
                                } while (rcm.PARENT_CODE != "0");
                            }
                        }
                    }
                    else
                    {
                        StationReturn.Status  = StationReturnStatusValue.Fail;
                        StationReturn.Message = "該角色已包含該權限ID";
                        StationReturn.Data    = "";
                        this.DBPools["SFCDB"].Return(sfcdb);
                        return;
                    }
                }

                InsertSql = "begin\n" + InsertSql + "end;";

                sfcdb.ExecSQL(InsertSql);
                sfcdb.CommitTrain();
                StationReturn.Status  = StationReturnStatusValue.Pass;
                StationReturn.Message = "添加成功";
                sfcdb.CommitTrain();
                this.DBPools["SFCDB"].Return(sfcdb);
            }
            catch (Exception e)
            {
                sfcdb.RollbackTrain();
                this.DBPools["SFCDB"].Return(sfcdb);
                throw e;
            }
        }