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