private void ChangePermission(GISADataset.TrusteeRow user, ListViewItem item, int colIndex) { GISADataset.TipoFunctionRow tipoFunction = (GISADataset.TipoFunctionRow)item.Tag; GISADataset.TipoOperationRow tipoOperation = (GISADataset.TipoOperationRow)(GisaDataSetHelper.GetInstance().TipoOperation.Select(string.Format("Name='{0}'", lstvwPermissoes.Columns[colIndex].Text))[0]); string query = "IDTrustee={0} AND IDTipoFunctionGroup={1} AND IdxTipoFunction = {2} AND IDTipoOperation = {3}"; query = string.Format(query, user.ID, tipoFunction.IDTipoFunctionGroup, tipoFunction.idx, tipoOperation.ID); GISADataset.TrusteePrivilegeRow[] trusteePrivileges = null; trusteePrivileges = (GISADataset.TrusteePrivilegeRow[])(GisaDataSetHelper.GetInstance().TrusteePrivilege.Select(query)); // alterar permissões no dataset if (trusteePrivileges.Length > 0) { if (trusteePrivileges[0].IsGrant) trusteePrivileges[0].IsGrant = false; else trusteePrivileges[0].Delete(); } else { trusteePrivileges = (GISADataset.TrusteePrivilegeRow[])(GisaDataSetHelper.GetInstance().TrusteePrivilege.Select(query, "", DataViewRowState.Deleted)); if (trusteePrivileges.Length > 0) { trusteePrivileges[0].RejectChanges(); trusteePrivileges[0].IsGrant = true; } else GisaDataSetHelper.GetInstance().TrusteePrivilege.AddTrusteePrivilegeRow(user, tipoFunction.IDTipoFunctionGroup, tipoFunction.idx, tipoOperation.ID, true, new byte[] { }, 0); } // popular as alterações GISADataset.FunctionOperationRow functionOperation = (GISADataset.FunctionOperationRow)(GisaDataSetHelper.GetInstance().FunctionOperation.Select(string.Format("IDTipoFunctionGroup={0} AND IdxTipoFunction={1} AND IDTipoOperation={2}", tipoFunction.IDTipoFunctionGroup, tipoFunction.idx, tipoOperation.ID))[0]); PermissoesHelper.PermissionType permissaoEfectiva = PermissoesHelper.CalculateEffectivePermissions(CurrentTrusteeRow, functionOperation); if (permissaoEfectiva == PermissoesHelper.PermissionType.ExplicitGrant) item.SubItems[functionOperation.TipoOperationRow.ID].Text = "Sim"; else item.SubItems[functionOperation.TipoOperationRow.ID].Text = "Não"; GISADataset.TrusteePrivilegeRow[] tpRows = (GISADataset.TrusteePrivilegeRow[])(GisaDataSetHelper.GetInstance().TrusteePrivilege.Select(string.Format("IDTrustee={0} AND IDTipoFunctionGroup={1} AND IdxTipoFunction = {2} AND IDTipoOperation = {3}", user.ID, functionOperation.IDTipoFunctionGroup, functionOperation.IdxTipoFunction, functionOperation.IDTipoOperation))); if (tpRows.Length == 0) { tpRows = (GISADataset.TrusteePrivilegeRow[])(GisaDataSetHelper.GetInstance().TrusteePrivilege.Select(string.Format("IDTrustee={0} AND IDTipoFunctionGroup={1} AND IdxTipoFunction = {2} AND IDTipoOperation = {3}", user.ID, functionOperation.IDTipoFunctionGroup, functionOperation.IdxTipoFunction, functionOperation.IDTipoOperation), "", DataViewRowState.Deleted)); if (tpRows.Length == 0) item.SubItems[colIndex].Font = PermissoesHelper.fontItalic; else item.SubItems[colIndex].Font = PermissoesHelper.fontBoldItalic; } else { if (tpRows[0].RowState == DataRowState.Modified && !(tpRows[0].IsGrant ^ (bool)(tpRows[0]["IsGrant", DataRowVersion.Original]))) item.SubItems[colIndex].Font = PermissoesHelper.fontRegular; else item.SubItems[colIndex].Font = PermissoesHelper.fontBold; } }
private static PermissoesHelper.PermissionType GetEffectivePermission(ListViewItem item, int colIndex, string TipoOperationName, GISADataset.TrusteeNivelPrivilegeRow tnpRow, long IDTrustee) { PermissoesHelper.PermissionType permissaoEfectiva = PermissionType.ImplicitDeny; if ((tnpRow != null) && (tnpRow[TipoOperationName] != DBNull.Value)) { permissaoEfectiva = (byte)tnpRow[TipoOperationName] == 1 ? PermissionType.ExplicitGrant : PermissionType.ExplicitDeny; } else { var nRow = (GISADataset.NivelRow)item.Tag; var ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection()); try { var perms = PermissoesRule.Current.CalculateImplicitPermissions(nRow.ID, IDTrustee, ho.Connection); if (perms.ContainsKey(nRow.ID)) { permissaoEfectiva = GetPermissionValue(perms[nRow.ID], GisaDataSetHelper.GetInstance().NivelTipoOperation.Cast <GISADataset.NivelTipoOperationRow>().Single(r => r.TipoOperationRow.Name.Equals(TipoOperationName))) == 1 ? PermissionType.ImplicitGrant : PermissionType.ImplicitDeny; } } catch (Exception ex) { Trace.WriteLine(ex); throw; } finally { ho.Dispose(); } } return(permissaoEfectiva); }
private void ShowEffectivePermissions(ListViewItem item) { foreach (GISADataset.TipoOperationRow tipoOperation in GisaDataSetHelper.GetInstance().TipoOperation.Select(string.Empty, "ID")) { GISADataset.FunctionOperationRow[] functionOperations = (GISADataset.FunctionOperationRow[])(GisaDataSetHelper.GetInstance().FunctionOperation.Select(string.Format("IDTipoFunctionGroup={0} AND IdxTipoFunction = {1} AND IDTipoOperation = {2}", currentTipoFunction.IDTipoFunctionGroup, currentTipoFunction.idx, tipoOperation.ID))); item.SubItems.Add(string.Empty); if (functionOperations.Length > 0) { PermissoesHelper.PermissionType permissaoEfectiva = PermissoesHelper.CalculateEffectivePermissions((GISADataset.TrusteeRow)item.Tag, functionOperations[0]); int colIndex = GetColumnIndex(tipoOperation.Name); if (permissaoEfectiva == PermissoesHelper.PermissionType.ExplicitGrant) item.SubItems[colIndex].Text = "Sim"; else item.SubItems[colIndex].Text = "Não"; if (GisaDataSetHelper.GetInstance().TrusteePrivilege.Select(string.Format("IDTrustee={0} AND IDTipoFunctionGroup={1} AND IdxTipoFunction = {2} AND IDTipoOperation = {3}", ((GISADataset.TrusteeRow)item.Tag).ID, functionOperations[0].IDTipoFunctionGroup, functionOperations[0].IdxTipoFunction, functionOperations[0].IDTipoOperation)).Length == 0) item.SubItems[colIndex].Font = PermissoesHelper.fontItalic; else item.SubItems[colIndex].Font = PermissoesHelper.fontRegular; } } }
private void LoadOperationsAndPermissions(GISADataset.TipoFunctionRow CurrentFunctionGroup, ListViewItem fgItem) { Debug.Assert(CurrentTrusteeRow != null); foreach (GISADataset.FunctionOperationRow fo in GisaDataSetHelper.GetInstance().FunctionOperation) { fgItem.SubItems.Add(string.Empty); if (CurrentFunctionGroup.IDTipoFunctionGroup == fo.IDTipoFunctionGroup && CurrentFunctionGroup.idx == fo.IdxTipoFunction) { int colIndex = GetColumnIndex(fo.TipoOperationRow.Name); PermissoesHelper.PermissionType permissaoEfectiva = PermissoesHelper.CalculateEffectivePermissions(CurrentTrusteeRow, fo); if (permissaoEfectiva == PermissoesHelper.PermissionType.ExplicitGrant) fgItem.SubItems[colIndex].Text = "Sim"; else fgItem.SubItems[colIndex].Text = "Não"; if (GisaDataSetHelper.GetInstance().TrusteePrivilege.Select(string.Format("IDTrustee={0} AND IDTipoFunctionGroup={1} AND IdxTipoFunction = {2} AND IDTipoOperation = {3}", CurrentTrusteeRow.ID, fo.IDTipoFunctionGroup, fo.IdxTipoFunction, fo.IDTipoOperation)).Length == 0) fgItem.SubItems[colIndex].Font = PermissoesHelper.fontItalic; } } }
private void ChangePermission(GISADataset.TrusteeRow user, ListViewItem item, int colIndex) { var depRow = item.Tag as GISADataset.DepositoRow; var opRow = item.SubItems[colIndex].Tag as GISADataset.DepositoTipoOperationRow; var tdpRow = GisaDataSetHelper.GetInstance().TrusteeDepositoPrivilege.Cast <GISADataset.TrusteeDepositoPrivilegeRow>() .SingleOrDefault(r => r.RowState != DataRowState.Deleted && r.IDDeposito == depRow.ID && r.IDTipoOperation == opRow.IDTipoOperation && r.IDTrustee == user.ID); if (tdpRow != null) { if (tdpRow.IsGrant) { tdpRow.IsGrant = false; } else { tdpRow.Delete(); } } else { tdpRow = GisaDataSetHelper.GetInstance().TrusteeDepositoPrivilege.Cast <GISADataset.TrusteeDepositoPrivilegeRow>() .SingleOrDefault(r => r.RowState == DataRowState.Deleted && (long)r["IDDeposito", DataRowVersion.Original] == depRow.ID && (byte)r["IDTipoOperation", DataRowVersion.Original] == opRow.IDTipoOperation && (long)r["IDTrustee", DataRowVersion.Original] == user.ID); if (tdpRow != null) { tdpRow.RejectChanges(); tdpRow.IsGrant = true; } else { tdpRow = GisaDataSetHelper.GetInstance().TrusteeDepositoPrivilege.AddTrusteeDepositoPrivilegeRow(user, depRow, opRow, true, new byte[] { }, 0); } } // popular as alterações PermissoesHelper.PermissionType permissaoEfectiva = PermissoesHelper.CalculateEffectivePermissions(CurrentTrustee, opRow.TipoOperationRow, depRow); //PermissoesHelper.PopulatePermission(item, colIndex, tdpRow, permissaoEfectiva); if (permissaoEfectiva == PermissoesHelper.PermissionType.ExplicitGrant) { item.SubItems[colIndex].Text = "Sim"; } else { item.SubItems[colIndex].Text = "Não"; } GISADataset.TrusteeDepositoPrivilegeRow[] tpRows = (GISADataset.TrusteeDepositoPrivilegeRow[])(GisaDataSetHelper.GetInstance().TrusteeDepositoPrivilege.Select(string.Format("IDTrustee={0} AND IDDeposito={1} AND IDTipoOperation={2}", user.ID, depRow.ID, opRow.IDTipoOperation))); if (tpRows.Length == 0) { tpRows = (GISADataset.TrusteeDepositoPrivilegeRow[])(GisaDataSetHelper.GetInstance().TrusteeDepositoPrivilege.Select(string.Format("IDTrustee={0} AND IDDeposito={1} AND IDTipoOperation={2}", user.ID, depRow.ID, opRow.IDTipoOperation), "", DataViewRowState.Deleted)); if (tpRows.Length == 0) { item.SubItems[colIndex].Font = PermissoesHelper.fontItalic; } else { item.SubItems[colIndex].Font = PermissoesHelper.fontBoldItalic; } } else { if (tpRows[0].RowState == DataRowState.Modified && !(tpRows[0].IsGrant ^ (bool)(tpRows[0]["IsGrant", DataRowVersion.Original]))) { item.SubItems[colIndex].Font = PermissoesHelper.fontRegular; } else { item.SubItems[colIndex].Font = PermissoesHelper.fontBold; } } }
public static void PopulatePermission(ListViewItem item, int colIndex, DataRow privilegeRow, PermissoesHelper.PermissionType permissaoEfectiva) { string grant = string.Empty; if (permissaoEfectiva == PermissoesHelper.PermissionType.ExplicitGrant || permissaoEfectiva == PermissoesHelper.PermissionType.ImplicitGrant) { grant = "Sim"; } else if (permissaoEfectiva == PermissoesHelper.PermissionType.ExplicitDeny || permissaoEfectiva == PermissoesHelper.PermissionType.ImplicitDeny) { grant = "Não"; } item.SubItems[colIndex].Text = grant; if (permissaoEfectiva == PermissoesHelper.PermissionType.ImplicitGrant || permissaoEfectiva == PermissoesHelper.PermissionType.ImplicitDeny) { if (privilegeRow == null || privilegeRow.RowState == DataRowState.Unchanged || privilegeRow.RowState == DataRowState.Added || privilegeRow.RowState == DataRowState.Detached) { item.SubItems[colIndex].Font = PermissoesHelper.fontItalic; } else { item.SubItems[colIndex].Font = PermissoesHelper.fontBoldItalic; } } else { if (privilegeRow.RowState == DataRowState.Unchanged || !Concorrencia.isModifiedRow(privilegeRow)) { item.SubItems[colIndex].Font = PermissoesHelper.fontRegular; } else { item.SubItems[colIndex].Font = PermissoesHelper.fontBold; } } }