protected bool CreateOrUpdateRelations(CGroupeActeur groupe, CAdGroup adGroupe, Hashtable tableElementsASupprimer, Hashtable tableEmpecheRecursInf) { if (tableEmpecheRecursInf[adGroupe.Id] != null) { return(false); } tableEmpecheRecursInf[adGroupe.Id] = true; //Trouve le groupe correspondant au groupe AD CGroupeActeur groupeCorrespondant = CGroupeActeur.FromAd(groupe.ContexteDonnee, adGroupe.Id); if (groupeCorrespondant == null) { foreach (CAdGroup adParent in adGroupe.GroupesParents) { if (CreateOrUpdateRelations(groupe, adParent, tableElementsASupprimer, tableEmpecheRecursInf)) { return(true); } } } else { //Le groupe correspondant existe. Existe-t-il la relation ? CListeObjetsDonnees liste = groupe.RelationsGroupesContenantsDirects; liste.Filtre = new CFiltreData(CRelationGroupeActeur_GroupeActeur.c_champIdGroupeContenant + "=@1", groupeCorrespondant.Id); if (liste.Count == 1) { CRelationGroupeActeur_GroupeActeur rel = (CRelationGroupeActeur_GroupeActeur)liste[0]; tableElementsASupprimer.Remove(rel); //On ne supprime pas } else { //Crée la relation CRelationGroupeActeur_GroupeActeur rel = new CRelationGroupeActeur_GroupeActeur(groupe.ContexteDonnee); rel.CreateNewInCurrentContexte(); rel.GroupeContenant = groupeCorrespondant; rel.GroupeContenu = groupe; } return(true); } return(false); }
/// //////////////////////////////////////////////////////////// public override CResultAErreur VerifieDonnees(CObjetDonnee objet) { CResultAErreur result = CResultAErreur.True; try { CRelationGroupeActeur_GroupeActeur relation = (CRelationGroupeActeur_GroupeActeur)objet; if (relation.GroupeContenant == null) { result.EmpileErreur(I.T("The containing group must be defined|277")); } if (relation.GroupeContenu == null) { result.EmpileErreur(I.T("The included group must be defined|278")); } } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); } return(result); }