Exemplo n.º 1
0
        /////////////////////////////////////////////////////////////////
        public static CResultAErreur Delete(CListeObjetsDonnees liste, bool bDansContexteCourant)
        {
            CResultAErreur result = CanDelete(liste);

            if (!result)
            {
                return(result);
            }

            CContexteDonnee contexte = liste.ContexteDonnee;

            if (liste.Count == 0)
            {
                return(result);
            }
            bool bEditAuto = !(contexte.IsEnEdition) && !contexte.IsModeDeconnecte && !bDansContexteCourant;

            if (bEditAuto)
            {
                bEditAuto = contexte.BeginModeDeconnecte();
            }
            try
            {
                foreach (CObjetDonneeAIdNumerique obj in liste.ToArrayList())
                {
                    result = obj.BeforeDelete();
                    if (!result)
                    {
                        return(result);
                    }
                }
                result = DoDeleteInterneACObjetDonneeNePasUtiliserSansBonneRaison(liste, bDansContexteCourant);
                if (result)
                {
                    if (bEditAuto)
                    {
                        result = contexte.CommitModifsDeconnecte();
                    }
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
                result.EmpileErreur(I.T("Delete error|157"));
            }
            finally
            {
                if (bEditAuto && !result)
                {
                    contexte.CancelModifsEtEndModeDeconnecte();
                }
            }
            return(result);
        }
        public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte)
        {
            CResultAErreur result = base.TraitementAvantSauvegarde(contexte);

            if (!result)
            {
                return(result);
            }
            DataTable table    = contexte.Tables[GetNomTable()];
            bool      bOldMode = contexte.IsModeDeconnecte;

            if (!bOldMode)
            {
                contexte.BeginModeDeconnecte();
            }
            ArrayList lst = new ArrayList(table.Rows);

            foreach (DataRow row in lst)
            {
                if (row.RowState == DataRowState.Deleted)
                {
                    CRelationDossierSuivi_Element relation = new CRelationDossierSuivi_Element(row);
                    relation.VersionToReturn = DataRowVersion.Original;
                    if (relation.RelationParametre_TypeElement.SuppressionAutomatique && relation.DossierSuivi.Row.RowState != DataRowState.Deleted)
                    {
                        bool bIsRemplace = false;
                        foreach (CRelationDossierSuivi_Element rel in relation.DossierSuivi.RelationsElements)
                        {
                            if (rel.RelationParametre_TypeElement.Id == relation.RelationParametre_TypeElement.Id)
                            {
                                bIsRemplace = true;
                                break;
                            }
                        }
                        if (!bIsRemplace)
                        {
                            result = relation.DossierSuivi.Delete();
                            if (!result)
                            {
                                return(result);
                            }
                        }
                    }
                }
            }
            if (!bOldMode)
            {
                contexte.EndModeDeconnecteSansSauvegardeEtSansReject();
            }
            return(result);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Force l'appartenance des groupes comme définit dans la base AD
        /// </summary>
        /// <returns></returns>
        public CResultAErreur SynchroniseGroupesAD( )
        {
            CResultAErreur result = CResultAErreur.True;

            CAdGroup[] adGroups = CAdGroup.GetGroups(IdSession);
            using (CContexteDonnee contexte = new CContexteDonnee(IdSession, true, false))
            {
                contexte.BeginModeDeconnecte();
                CListeObjetsDonnees liste  = new CListeObjetsDonnees(contexte, typeof(CGroupeActeur));
                CFiltreData         filtre = new CFiltreData(CGroupeActeur.c_champGroupeWindowsCorrespondant + "<>@1", "");
                liste.Filtre = filtre;

                if (result)
                {
                    contexte.CommitModifsDeconnecte();
                }
            }
            return(result);
        }
Exemplo n.º 4
0
        /// //////////////////////////////////////////////////////////////
        public CResultAErreur Supprimer(ArrayList listeElementsASupprimer)
        {
            using (CWaitCursor waiter = new CWaitCursor())
            {
                CResultAErreur result = CResultAErreur.True;
                if (listeElementsASupprimer.Count <= 0)
                {
                    return(result);
                }

                string strListeIds = "";
                CObjetDonneeAIdNumeriqueAuto objetPourSuppressionGlobale = null;
                //Crée une liste de tous les ids éléments  à supprimer
                try
                {
                    foreach (CObjetDonneeAIdNumeriqueAuto objet in listeElementsASupprimer)
                    {
                        strListeIds += objet.Id.ToString() + ",";
                        if (objetPourSuppressionGlobale == null)
                        {
                            objetPourSuppressionGlobale = objet;
                        }
                    }
                    strListeIds = strListeIds.Substring(0, strListeIds.Length - 1);

                    using (CContexteDonnee contexteToDelete = new CContexteDonnee(objetPourSuppressionGlobale.ContexteDonnee.IdSession, true, false))
                    {
                        result = contexteToDelete.SetVersionDeTravail(objetPourSuppressionGlobale.ContexteDonnee.IdVersionDeTravail, true);
                        if (!result)
                        {
                            return(result);
                        }
                        contexteToDelete.BeginModeDeconnecte();


                        CListeObjetsDonnees liste = new CListeObjetsDonnees(contexteToDelete,
                                                                            objetPourSuppressionGlobale.GetType(), false);

                        liste.Filtre = new CFiltreData(
                            objetPourSuppressionGlobale.GetChampId() + " in (" +
                            strListeIds + ")");

                        result = CObjetDonneeAIdNumeriqueAuto.Delete(liste);
                        if (!result)
                        {
                            contexteToDelete.CancelModifsEtEndModeDeconnecte();
                            result.EmpileErreur(I.T("Error while deleting element|30032"));
                            return(result);
                        }
                        else
                        {
                            result = contexteToDelete.CommitModifsDeconnecte();
                        }
                    }
                }
                catch
                {
                    foreach (CObjetDonnee objet in listeElementsASupprimer)
                    {
                        result = objet.Delete();
                        if (!result)
                        {
                            CSc2iWin32DataClient.ContexteCourant.CancelModifsEtEndModeDeconnecte();
                            result.EmpileErreur(I.T("Error while deleting element|30032"));
                            break;
                        }
                    }
                    if (result)
                    {
                        result = CSc2iWin32DataClient.ContexteCourant.CommitModifsDeconnecte();
                    }
                }
                return(result);
            }
        }