/// ////////////////////////////////////////////////////// private void FillNode(TreeNodeCollection nodes, CDroitUtilisateur droitParent) { if (DesignMode) { return; } CListeObjetsDonnees lst = new CListeObjetsDonnees(sc2i.win32.data.CSc2iWin32DataClient.ContexteCourant, typeof(CDroitUtilisateur)); CFiltreData filtre = new CFiltreData(); if (droitParent == null) { filtre.Filtre = CDroitUtilisateur.c_champCodeDroitParent + " is null"; } else { filtre.Filtre = CDroitUtilisateur.c_champCodeDroitParent + "=@1"; filtre.Parametres.Add(droitParent.Code); } lst.Filtre = filtre; lst.Tri = CDroitUtilisateur.c_champNumOrdre; foreach (CDroitUtilisateur droit in lst) { CDroitNode node = new CDroitNode(droit); nodes.Add(node); m_tableCodeToNode[droit.Code] = node; FillNode(node.Nodes, droit); } }
/// ////////////////////////////////////////////////////// private void m_arbre_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) { ValideModifsDroitEnCours(); CDroitNode node = (CDroitNode)e.Node; CDroitUtilisateur droit = node.Droit; m_listeExtensions.Visible = droit.TypeAssocieURI != null && droit.TypeAssocieURI != ""; m_labelInfo.Text = droit.Infos; OptionsDroit[] options = droit.ListeOptionsPossibles; m_wndListeOptions.Items.Clear(); if (options.Length == 0) { m_wndListeOptions.Visible = false; } else { foreach (OptionsDroit option in options) { int nItem = m_wndListeOptions.Items.Add(new COptionDroitUtilisateur(option)); if (node.Relation != null) { m_wndListeOptions.SetItemChecked(nItem, node.Relation.HasOption(option)); } } m_wndListeOptions.Visible = true; } if (droit.TypeAssocieURI != null) { CListeObjetsDonnees lst = droit.ListeObjetsAssocies; m_listeExtensions.Remplir(lst); if (node.Relation != null) { //Coche ce qui doit l'être Hashtable tableCheck = new Hashtable(); foreach (CObjetDonnee obj in node.Relation.ListeObjetsOption) { tableCheck[obj] = true; } foreach (ListViewItem item in m_listeExtensions.Items) { if (tableCheck[item.Tag] != null) { item.Checked = true; } } } } if (e.Node.Checked && !m_bLockEdition) { m_listeExtensions.Enabled = true; m_wndListeOptions.Enabled = true; } else { m_listeExtensions.Enabled = false; m_wndListeOptions.Enabled = false; } m_lastNodeAffiche = (CDroitNode)e.Node; }
/// //////////////////////////////////////////////// public static void RegisterDroit( string strCode, string strLibelle, int nNumOrdre, string strDroitParent, string strInfoSurDroit, OptionsDroit nOptionsPossibles, Type typeObjetAssocie ) { #if !PDA_DATA AssureStructure(); CDroitUtilisateur droit = new CDroitUtilisateur(m_datasetDroits); if (!droit.ReadIfExists(new object[] { strCode })) { droit.CreateNewInCurrentContexte(new Object[] { strCode }); } droit.Libelle = strLibelle; droit.NumOrdre = nNumOrdre; droit.Infos = strInfoSurDroit; CDroitUtilisateur droitParent = null; if (strDroitParent != null && strDroitParent.Trim() != "") { droitParent = new CDroitUtilisateur(m_datasetDroits); if (!droitParent.ReadIfExists(new Object[] { strDroitParent })) { //Création du droit parent simple, il pourra être modifié par une autre définition droitParent.CreateNewInCurrentContexte(new object[] { strDroitParent }); droitParent.Libelle = strDroitParent; droitParent.NumOrdre = 0; } } droit.DroitParent = droitParent; if (typeObjetAssocie == null) { droit.TypeAssocieURI = null; } else { droit.TypeAssocieURI = typeObjetAssocie.ToString(); } droit.OptionsPossibles = nOptionsPossibles; #endif }
/// /////////////////////////////////////////////////////////////// public CDonneeDroitForUser GetDonneeDroit(int nIdDonneActeurUtilisateur, string strCode) { CDonneesActeurUtilisateur user = new CDonneesActeurUtilisateur(m_contexteCache); user.Id = nIdDonneActeurUtilisateur; CDroitUtilisateur droit = new CDroitUtilisateur(m_contexteCache); droit.PointeSurLigne(strCode); string strListeCodes = "'" + strCode + "'"; while (droit.DroitParent != null) { strListeCodes += ",'" + droit.DroitParent.Code + "'"; droit = droit.DroitParent; } //Recherche les relations de droit de cet utilisateur /*CFiltreData filtre = new CFiltreData ( CDonneesActeurUtilisateur.c_champId+"=@1 and "+ * CDroitUtilisateur.c_champCode+" in ("+strListeCodes+")"); * filtre.Parametres.Add ( nIdDonneActeurUtilisateur );*/ CListeObjetsDonnees liste = user.GetDependancesListe(CRelationActeurUtilisateur_Droit.c_nomTable, CDonneesActeurUtilisateur.c_champId); liste.Filtre = new CFiltreData(CDroitUtilisateur.c_champCode + " in (" + strListeCodes + ")"); //CListeObjetsDonnees liste = new CListeObjetsDonnees(m_contexteCache, typeof(CRelationActeurUtilisateur_Droit)); //liste.Filtre = filtre; CDonneeDroitForUser donneeRetour = null; if (liste.Count > 0) { donneeRetour = new CDonneeDroitForUser(strCode, OptionsDroit.Aucune); foreach (CRelationActeurUtilisateur_Droit rel in liste) { donneeRetour.CombineOptions(rel.Options); CObjetDonneeAIdNumerique[] listeOptions = rel.ListeObjetsOption; if (listeOptions != null) { foreach (CObjetDonnee obj in rel.ListeObjetsOption) { donneeRetour.AddObjetDonneeOption(obj); } } } } ///RECHERCHE DANS LES GROUPES DE L'utilisateur string strGroupes = ""; foreach (CGroupeActeur groupe in user.Acteur.TousLesGroupes()) //user.Acteur.HierarchieGroupes) { strGroupes += groupe.Id.ToString() + ","; } if (strGroupes.Length == 0) { return(donneeRetour); } strGroupes = strGroupes.Substring(0, strGroupes.Length - 1); CFiltreData filtre; filtre = new CFiltreData( CGroupeActeur.c_champId + " in (" + strGroupes + ") and " + CDroitUtilisateur.c_champCode + " in (" + strListeCodes + ")"); /*liste = new CListeObjetsDonnees(m_contexteCache, typeof(CRelationGroupe_Droit)); * liste.Filtre = filtre; * if ( liste.Count > 0 ) * { * if ( donneeRetour == null ) * donneeRetour = new CDonneeDroitForUser ( strCode, OptionsDroit.Aucune ); * foreach ( CRelationGroupe_Droit rel in liste ) * { * donneeRetour.CombineOptions ( rel.Options ); * CObjetDonneeAIdNumeriqueAuto[] listeOptions = rel.ListeObjetsOption; * if ( listeOptions != null ) * foreach ( CObjetDonnee obj in rel.ListeObjetsOption ) * donneeRetour.AddObjetDonneeOption( obj ); * } * }*/ return(donneeRetour); }
public CDroitNode(CDroitUtilisateur droit) : base(droit.Libelle) { Droit = droit; m_relation = null; }