/////////////////////////////////////////////////////////////////
        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);
        }
Esempio n. 2
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);
            }
        }