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