示例#1
0
        //-------------------------------------------------------------------
        public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte)
        {
            CResultAErreur result = CResultAErreur.True;
            //Si le groupe nécéssite un groupe ou plus, vérifie que le acteur
            //appartient bien à ce groupe. Si non, la relation est créée.
            //Si le groupe nécéssite plusieurs groupes (plusieurs possibilités),
            //C'est le premier groupe nécéssaire qui est utilisé.
            DataTable table   = contexte.Tables[GetNomTable()];
            ArrayList lstRows = new ArrayList();

            //Copie pour éviter de modifier la collection dans foreach
            foreach (DataRow row in table.Rows)
            {
                lstRows.Add(row);
            }

            foreach (DataRow row in lstRows)
            {
                if (row.RowState == DataRowState.Added || row.RowState == DataRowState.Modified)
                {
                    IRelationGroupe relation = GetNewRelationObjetToGroupe(row);
                    if (relation.Groupe.RelationsGroupesNecessaires.Count > 0)
                    {
                        result = AssureRelationsGroupesNecessaires(relation);
                        if (!result)
                        {
                            return(result);
                        }
                    }
                }
            }
            return(result);
        }
示例#2
0
        //-------------------------------------------------------------------
        public CResultAErreur AssureRelationsGroupesNecessaires(IRelationGroupe relationToGroupe)
        {
            CResultAErreur result = CResultAErreur.True;
            Hashtable      tableGroupesNecessaires = new Hashtable();

            foreach (IRelationGroupeGroupeNecessaire relationNecessaire in relationToGroupe.Groupe.RelationsGroupesNecessaires)
            {
                tableGroupesNecessaires[relationNecessaire.GroupeNecessaire.Id] = true;
            }
            if (tableGroupesNecessaires.Count == 0)
            {
                return(result);
            }
            bool bExist = false;

            foreach (IRelationGroupe relationGroupe in relationToGroupe.ObjetDeGroupe.RelationsGroupes)
            {
                if (tableGroupesNecessaires[relationGroupe.Groupe.Id] != null)
                {
                    bExist = true;
                }
            }
            if (!bExist)
            {
                //Aucune relation n'existe sur un groupe nécéssaire, on en crée une sur le premier
                IRelationGroupe newRelation = relationToGroupe.ObjetDeGroupe.GetNewRelation();
                newRelation.ObjetDeGroupe = relationToGroupe.ObjetDeGroupe;
                newRelation.Groupe        = ((IRelationGroupeGroupeNecessaire)relationToGroupe.Groupe.RelationsGroupesNecessaires[0]).GroupeNecessaire;

                //il faut également s'assurer que les relations aux groupes nécéssaires de la
                //Nouvelle relation existent.
                AssureRelationsGroupesNecessaires(newRelation);
            }
            return(result);
        }
        //-------------------------------------------------------------------------
        public void SaveModifs()
        {
            ArrayList tableRelations = new ArrayList();

            foreach (IRelationGroupe rel in m_objet.RelationsGroupes)
            {
                tableRelations.Add(rel);
            }

            foreach (IRelationGroupe rel in tableRelations)
            {
                if (!TableGroupesIdChecked.ContainsKey(rel.Groupe.Id))
                {
                    rel.Delete();
                }
            }

            foreach (int nGroupeId in TableGroupesIdChecked.Keys)
            {
                using (CGroupeStructurant groupe = (CGroupeStructurant)Activator.CreateInstance(m_typeGroupe, new object[] { m_objet.ContexteDonnee }))
                {
                    groupe.Id = nGroupeId;
                    if (!m_objet.GetGroupesDirects().Contains(groupe))
                    {
                        IRelationGroupe relation = (IRelationGroupe)Activator.CreateInstance(m_objet.RelationsGroupes.TypeObjets, new object[] { m_objet.ContexteDonnee });
                        relation.CreateNewInCurrentContexte();
                        relation.Groupe        = groupe;
                        relation.ObjetDeGroupe = m_objet;
                    }
                }
            }
        }