コード例 #1
0
ファイル: Administration.cs プロジェクト: vincentpaca/diia
        public bool saveSystemRole(DataTable pMenus, DataTable pForms, DataTable pPrivileges, string pRoleName)
        {
            SystemRole _systemRole = new SystemRole();
            bool _success = false;
            string _menu = "";
            bool _enable = false;
            MySqlTransaction _trans = GlobalVariables.goMySqlConnection.BeginTransaction();
            //menus
            try
            {
                if (pMenus.Rows.Count > 0)
                {
                    foreach (DataRow _dRow in pMenus.Rows)
                    {
                        for (int _col = 0; _col < pMenus.Columns.Count - 1; _col++)
                        {
                            if (_dRow[_col].ToString() != "")
                            {
                                _menu = _dRow[_col].ToString();
                            }
                        }
                        if (_menu != "")
                        {
                            try
                            {
                                _enable = Boolean.Parse(_dRow["Enable"].ToString());
                            }
                            catch
                            {
                                _enable = false;
                            }
                            try
                            {
                                _success = _systemRole.insertMenu(pRoleName, _menu, _enable, _trans);
                            }
                            catch (Exception ex)
                            {
                                if (ex.Message.Contains("Duplicate"))
                                {
                                    _success = _systemRole.updateMenu(pRoleName, _menu, _enable, _trans);
                                }
                                else
                                {
                                    throw ex;
                                }
                            }
                        }
                        if (!_success)
                        {
                            return _success;
                        }
                    }

                    //forms

                }

                //forms
                if (pForms.Rows.Count > 0)
                {
                    string _Module = "";
                    string _Form = "";
                    string _Button = "";
                    bool _visible = false;
                    foreach (DataRow _dRow in pForms.Rows)
                    {
                        _Module = _dRow["Module"].ToString();
                        _Form = _dRow["Form"].ToString();
                        if (_Module != "" && _Form != "")
                        {
                            _Button = _dRow["Button"].ToString();
                            try
                            {
                                _visible = Boolean.Parse(_dRow["Visible"].ToString());
                            }
                            catch
                            {
                                _visible = false;
                            }
                            try
                            {
                                _success = _systemRole.insertForm(pRoleName, _Module, _Form, _Button, _visible, _trans);
                            }
                            catch (Exception ex)
                            {
                                if (ex.Message.Contains("Duplicate"))
                                {
                                    _success = _systemRole.updateForm(pRoleName, _Module, _Form, _Button, _visible, _trans);
                                }
                                else
                                {
                                    throw ex;
                                }
                            }
                        }
                    }
                }

                //privileges
                if (pPrivileges.Rows.Count > 1)
                {
                    string _privilege = "";
                    bool _allowed = false;
                    foreach (DataRow _dRow in pPrivileges.Rows)
                    {
                        _privilege = _dRow["Privilege"].ToString();
                        _allowed = false;
                        try
                        {
                            if (_privilege != "")
                            {
                                try
                                {
                                    _allowed = Boolean.Parse(_dRow["Allowed"].ToString());
                                }
                                catch
                                {
                                    _allowed = false;
                                }
                                _success = _systemRole.insertPrivilege(pRoleName, _privilege, _allowed, _trans);
                            }

                        }
                        catch (Exception ex)
                        {
                            if (ex.Message.Contains("Duplicate"))
                            {
                                _success = _systemRole.updatePrivilege(pRoleName, _privilege, _allowed, _trans);
                            }
                            else
                            {
                                throw ex;
                            }
                        }
                    }
                }
                _trans.Commit();
            }
            catch (Exception ex)
            {
                _trans.Rollback();
                throw ex;
            }
            finally
            {
                _trans.Dispose();
            }
            return _success;
        }