示例#1
0
		public static void DeleteTrusteeAndRelatedRows(GISADataset.TrusteeRow truRow)
		{
			GISADataset.TrusteeGroupRow[] grpRows = truRow.GetTrusteeGroupRows();
			GISADataset.TrusteeUserRow[] usrRows = truRow.GetTrusteeUserRows();
			GISADataset.UserGroupsRow[] ugRows = null;
            List<long> UserIDs = new List<long>();

            if (grpRows.Length > 0)
            {
                ugRows = grpRows[0].GetUserGroupsRows();
                foreach (GISADataset.UserGroupsRow ugRow in ugRows)
                    UserIDs.Add(ugRow.IDUser);
            }
            else if (usrRows.Length > 0)
                ugRows = usrRows[0].GetUserGroupsRows();

			GISADataset.TrusteePrivilegeRow[] tpRows = (GISADataset.TrusteePrivilegeRow[])(GisaDataSetHelper.GetInstance().TrusteePrivilege.Select(string.Format("IDTrustee={0}", truRow.ID)));

			foreach (GISADataset.TrusteePrivilegeRow tpRow in tpRows)
				tpRow.Delete();

            if (ugRows != null) 
                foreach (GISADataset.UserGroupsRow ugRow in ugRows)
                    ugRow.Delete();

			foreach (GISADataset.TrusteeGroupRow grpRow in grpRows)
				grpRow.Delete();

			foreach (GISADataset.TrusteeUserRow usrRow in usrRows)
			{
				foreach (GISADataset.TrusteeUserRow uRowAuth in usrRow.GetTrusteeUserRows())
					uRowAuth.SetIDTrusteeUserDefaultAuthorityNull();

				usrRow.Delete();
			}

			truRow.Delete();

			try
			{
                PersistencyHelper.save();
				PersistencyHelper.cleanDeletedData();
			}
			catch (Exception ex)
			{
				Trace.WriteLine(ex);
				throw;
			}
		}
		//metodo responsavel por eliminar toda a nuvem do CA actual em memoria
		public static PersistencyHelper.DeleteCAXPreConcArguments DeleteCAX(GISADataset.ControloAutRow caRow)
		{
			GISADataset.ControloAutDicionarioRow[] cadRows = caRow.GetControloAutDicionarioRows();
			GISADataset.DicionarioRow dRow = null;
			PersistencyHelper.DeleteCAXPreConcArguments args = new PersistencyHelper.DeleteCAXPreConcArguments();

			// eliminar registos de "Dicionario" e de "ControloAutDicionario"
            cadRows.ToList().ForEach(cadRow =>
            {
                dRow = cadRow.DicionarioRow;
                args.termos.Add(dRow);
                cadRow.Delete();
            });
			args.caRowID = caRow.ID;
			args.catCode = getCatCode(caRow.TipoNoticiaAutRow);

			// eliminar registos de IndexFRDCA
            caRow.GetIndexFRDCARows().ToList().ForEach(idx => idx.Delete());

			// Somente para notícias de autoridade relacionaveis
            caRow.GetControloAutRelRowsByControloAutControloAutRel().ToList().ForEach(carRow => carRow.Delete());
            caRow.GetControloAutRelRowsByControloAutControloAutRelAlias().ToList().ForEach(carRow => carRow.Delete());
            caRow.GetControloAutEntidadeProdutoraRows().ToList().ForEach(caepRow => caepRow.Delete());
            caRow.GetControloAutDatasExistenciaRows().ToList().ForEach(cadeRow => cadeRow.Delete());

			caRow.Delete();
			return args;
		}