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;
            }
        }
Esempio n. 2
0
        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;
                }
            }
        }
Esempio n. 6
0
        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;
                }
            }
        }