public static void ChangeDocPermissionPublicados(long docID, bool permissao) { GISADataset.TrusteeNivelPrivilegeRow tnpRow = null; GISADataset.TrusteeNivelPrivilegeRow[] tnpRows = (GISADataset.TrusteeNivelPrivilegeRow[]) GisaDataSetHelper.GetInstance().TrusteeNivelPrivilege.Select(string.Format("IDNivel={0} AND IDTrustee={1}", docID, PermissoesHelper.GrpAcessoPublicados.ID)); if (tnpRows.Length > 0) { tnpRow = tnpRows[0]; } else { tnpRow = GisaDataSetHelper.GetInstance().TrusteeNivelPrivilege.NewTrusteeNivelPrivilegeRow(); tnpRow.IDNivel = docID; tnpRow.IDTrustee = PermissoesHelper.GrpAcessoPublicados.ID; tnpRow.Versao = new byte[] { }; GisaDataSetHelper.GetInstance().TrusteeNivelPrivilege.AddTrusteeNivelPrivilegeRow(tnpRow); } if (permissao) { tnpRow.Ler = 1; } else { tnpRow["Ler"] = DBNull.Value; } }
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); }