Esempio n. 1
0
        /// ////////////////////////////////////////////////////////
        protected override CResultAErreur  MyExecute(CContexteExecutionAction contexte)
        {
            CResultAErreur result = CResultAErreur.True;

            CContexteEvaluationExpression contexteEval = new CContexteEvaluationExpression(contexte.Branche.Process);

            contexteEval.AttacheObjet(typeof(CContexteDonnee), contexte.ContexteDonnee);
            if (FormuleDateLimite == null)
            {
                result.EmpileErreur(I.T("You have to specify a limit date|20008"));
                return(result);
            }
            result = FormuleDateLimite.Eval(contexteEval);
            if (!result)
            {
                return(result);
            }
            if (!(result.Data is DateTime))
            {
                result.EmpileErreur(I.T("Bad limit date|20009"));
                return(result);
            }
            result = CVersionDonnees.Purger((DateTime)result.Data, contexte.IdSession);
            return(result);
        }
Esempio n. 2
0
        private void RecalcIdsVersions()
        {
            CVersionDonnees v = m_audit.VersionCible;

            m_idsVersions = new List <string>();
            while (v != null)
            {
                m_idsVersions.Add(v.Id.ToString());
                v = v.VersionParente;
            }
            if (m_idsVersions.Count < 1)
            {
                //ERR
            }

            m_idsVersionsCibles = new List <string>(m_idsVersions);
            if (m_idsVersions.Count > 1)
            {
                m_idsVersionsCibles.RemoveAt(m_idsVersionsCibles.Count - 1);
            }

            m_idsVersionsSources = new List <string>(m_idsVersions);
            m_idsVersionsSources.RemoveAt(0);
            m_bRecalcIDs = false;
        }
Esempio n. 3
0
        public void Init()
        {
            CResultAErreur result = CResultAErreur.True;

            CTimosTestMetierApp.AssureInit();
            m_contexteDonnee = new CContexteDonnee(CTimosTestMetierApp.SessionClient.IdSession, true, false);
            using (CContexteDonnee contexte = new CContexteDonnee(CTimosTestMetierApp.SessionClient.IdSession, true, false))
            {
                CVersionDonnees version1 = null;
                for (int nVersion = 0; nVersion < m_nIdsVersions.Length; nVersion++)
                {
                    CVersionDonnees version = new CVersionDonnees(contexte);
                    if (version.ReadIfExists(new CFiltreData(CVersionDonnees.c_champLibelle + "=@1 and " +
                                                             CVersionDonnees.c_champTypeVersion + "=@2",
                                                             GetLibelleVersion(nVersion),
                                                             (int)CTypeVersion.TypeVersion.Previsionnelle)))
                    {
                        m_nIdsVersions[nVersion] = version.Id;
                    }
                    else
                    {
                        version.CreateNew();
                        version.Libelle         = GetLibelleVersion(nVersion);
                        version.CodeTypeVersion = (int)CTypeVersion.TypeVersion.Previsionnelle;
                        version.Date            = DateTime.Now;
                        if (nVersion == 2)
                        {
                            version.VersionParente = version1;
                        }
                        result = version.CommitEdit();
                        if (!result)
                        {
                            throw new CExceptionErreur(result.Erreur);
                        }
                        m_nIdsVersions[nVersion] = version.Id;
                    }
                    if (nVersion == 0)
                    {
                        version1 = version;
                    }
                }
            }
            //Création de l'acteur de test
            CActeur acteur = new CActeur(m_contexteDonnee);

            if (!acteur.ReadIfExists(new CFiltreData(CActeur.c_champPrenom + "=@1",
                                                     "NUNIT ACTEUR")))
            {
                acteur.CreateNew();
                acteur.Nom    = "NUnit acteur";
                acteur.Prenom = "NUNIT ACTEUR";
                result        = acteur.CommitEdit();
                Assert.IsTrue(result.Result);
            }
            m_nIdActeur = acteur.Id;


            //Remet le jeu de test à 0
            ResetModifs();
        }
Esempio n. 4
0
        //--------------------------------------------------------
        public static CVersionDonnees GetVersionForInter(CIntervention intervention)
        {
            if (intervention.VersionDonneesAAppliquer != null)
            {
                CFormAlerte.Afficher(I.T("This intervention is already linked to a version|1355"), EFormAlerteType.Erreur);
                return(intervention.VersionDonneesAAppliquer);
            }
            CFormCreateVersionPourIntervention form = new CFormCreateVersionPourIntervention();

            form.m_intervention = intervention;
            CVersionDonnees version = null;

            if (form.ShowDialog() == DialogResult.OK)
            {
                if (form.m_radioLierNouveau.Checked)
                {
                    //S'assure que la version est bien sauvegardée, en la créant dans une nouveau contexte
                    CContexteDonnee contexteForVersion = new CContexteDonnee(intervention.ContexteDonnee.IdSession, true, false);
                    version = new CVersionDonnees(contexteForVersion);
                    version.CreateNew();
                    version.CodeTypeVersion = (int)CTypeVersion.TypeVersion.Previsionnelle;
                    version.Libelle         = form.m_txtLibelleVersion.Text;
                    version.VersionParente  = (CVersionDonnees)form.m_txtSelectVersionParente.ElementSelectionne;
                    version.Date            = DateTime.Now;
                }
                else
                {
                    version = (CVersionDonnees)form.m_txtSelectVersionExistante.ElementSelectionne;
                }
            }
            form.Dispose();
            return(version);
        }
Esempio n. 5
0
        public static void ShowDetail(CObjetDonneeAIdNumerique objet, CVersionDonnees version)
        {
            CFormDetailVersion form = new CFormDetailVersion();

            form.m_panelDetail.InitForObjet(objet, version);
            form.ShowDialog();
            form.Dispose();
        }
Esempio n. 6
0
        //----------------------------------------------------------
        public CResultAErreur AnnuleModificationPrevisionnelle(CVersionDonneesObjet versionObjet)
        {
            CContexteDonnee contexte    = versionObjet.ContexteDonnee;
            CResultAErreur  result      = CResultAErreur.True;
            int             nIdObjet    = versionObjet.IdElement;
            Type            typeObjet   = versionObjet.TypeElement;
            CVersionDonnees versionPrev = versionObjet.VersionDonnees;
            int             nIdVersion  = versionPrev.Id;

            //Vérifie que l'utilisateur peut travailler avec cette version
            result = versionPrev.EnregistreEvenement(CVersionDonnees.c_eventBeforeUtiliser, true);
            if (!result)
            {
                return(result);
            }
            contexte.SetVersionDeTravail(-1, false);



            //Suppression de l'objet associé
            string strPrimKey            = contexte.GetTableSafe(CContexteDonnee.GetNomTableForType(typeObjet)).PrimaryKey[0].ColumnName;
            CListeObjetsDonnees listeTmp = new CListeObjetsDonnees(contexte, typeObjet);

            listeTmp.Filtre = new CFiltreData(
                CSc2iDataConst.c_champIdVersion + "=@1 and " +
                "(" + CSc2iDataConst.c_champOriginalId + "=@2 or " +
                strPrimKey + "=@2)",
                nIdVersion,
                nIdObjet);
            listeTmp.Filtre.IgnorerVersionDeContexte = true;
            result = CObjetDonneeAIdNumerique.Delete(listeTmp);
            if (!result)
            {
                return(result);
            }

            //Suppression de la version objet
            result = versionObjet.Delete();
            if (!result)
            {
                return(result);
            }

            //Force la modification de l'objet pour mettre à jour les versions suivantes
            CObjetDonneeAIdNumerique objet = (CObjetDonneeAIdNumerique)Activator.CreateInstance(typeObjet, new object[] { contexte });

            if (objet.ReadIfExists(nIdObjet))
            {
                //Passe dans la version de l'objet
                result = contexte.SetVersionDeTravail(objet.IdVersionDatabase, false);
                if (!result)
                {
                    return(result);
                }
                objet.Row.Row.SetModified();
            }
            return(result);
        }
Esempio n. 7
0
        //-------------------------------------------------------
        public static CResultAErreurType <CMacro> FromVersion(CVersionDonnees version)
        {
            CResultAErreurType <CMacro> result = new CResultAErreurType <CMacro>();

            using (CContexteDonnee contexte = new CContexteDonnee(version.ContexteDonnee.IdSession, true, false))
            {
                contexte.SetVersionDeTravail(version.Id, false);
                CMacro macro = new CMacro();
                macro.m_contexteDonnee = version.ContexteDonnee;
                macro.Libelle          = version.Libelle;

                CVariableDynamiqueSysteme variable = new CVariableDynamiqueSysteme();
                variable.SetTypeDonnee(new CTypeResultatExpression(typeof(string), false));
                variable.Nom        = "CurrentElement";
                variable.IdVariable = m_strIdVariableCurrentElement;
                macro.AddVariable(variable);

                Dictionary <int, CMacroObjet> dicMacrosObjets = new Dictionary <int, CMacroObjet>();
                Dictionary <CObjetDonneeAIdNumerique, CMacroObjet> dicObjetToMacros = new Dictionary <CObjetDonneeAIdNumerique, CMacroObjet>();
                foreach (CVersionDonneesObjet vo in version.VersionsObjets)
                {
                    if (!typeof(CRelationElementAChamp_ChampCustom).IsAssignableFrom(vo.TypeElement) && vo.TypeElement.GetCustomAttributes(typeof(NoMacroAttribute), true).Length == 0)
                    {
                        CMacroObjet mo = new CMacroObjet(macro);
                        mo.TypeObjet     = vo.TypeElement;
                        mo.IdObjet       = vo.IdElement;
                        mo.TypeOperation = vo.TypeOperation;
                        macro.AddObjet(mo);

                        dicMacrosObjets[vo.Id] = mo;
                        CObjetDonneeAIdNumerique objet = Activator.CreateInstance(vo.TypeElement, new object[] { contexte }) as CObjetDonneeAIdNumerique;
                        if (objet.ReadIfExists(vo.IdElement))
                        {
                            dicObjetToMacros[objet] = mo;
                        }
                        mo.CreateVariable(objet);
                    }
                }
                foreach (CVersionDonneesObjet vo in version.VersionsObjets)
                {
                    if (!typeof(CRelationElementAChamp_ChampCustom).IsAssignableFrom(vo.TypeElement) && vo.TypeElement.GetCustomAttributes(typeof(NoMacroAttribute), true).Length == 0)
                    {
                        CMacroObjet    mo    = dicMacrosObjets[vo.Id];
                        CResultAErreur resMo = CResultAErreur.True;
                        resMo = mo.FillFromVersion(vo, contexte, dicObjetToMacros);
                        if (!resMo)
                        {
                            result.EmpileErreur(resMo.Erreur);
                        }
                    }
                }
                result.DataType = macro;
                return(result);
            }
        }
Esempio n. 8
0
 //----------------------------------
 private void ResetModifs()
 {
     using (CContexteDonnee contexte = new CContexteDonnee(CTimosTestMetierApp.SessionClient.IdSession, true, false))
     {
         for (int nVersion = 0; nVersion < m_nIdsVersions.Length; nVersion++)
         {
             CVersionDonnees version = new CVersionDonnees(contexte);
             version.ReadIfExists(m_nIdsVersions[nVersion]);
             foreach (CVersionDonneesObjet dataObjet in version.VersionsObjets)
             {
                 Assert.IsTrue(dataObjet.AnnuleModificationsPrevisionnelles().Result);
             }
         }
     }
 }
Esempio n. 9
0
        //--------------------------------------------------------------------------
        private void m_btnExecuter_Click(object sender, EventArgs e)
        {
            CResultAErreur result = SaveAll();

            if (!result)
            {
                CFormAlerte.Afficher(result.Erreur);
                return;
            }
            using (CContexteDonnee ctx = new CContexteDonnee(m_releve.ContexteDonnee.IdSession, true, false))
            {
                CReleveSite     releve  = m_releve;
                CVersionDonnees version = releve.VersionDonneesPourApplication;
                if (version == null)
                {
                    releve.BeginEdit();
                    version = new CVersionDonnees(releve.ContexteDonnee);
                    version.CreateNewInCurrentContexte();
                    version.CodeTypeVersion = (int)CTypeVersion.TypeVersion.Previsionnelle;
                    version.Libelle         = I.T("Site @1 survey (@2)|20796",
                                                  releve.Site.LibelleComplet, releve.DateReleve.ToShortDateString());
                    releve.VersionDonneesPourApplication = version;
                    releve.CommitEdit();
                }
                version = releve.VersionDonneesPourApplication;
                //ctx.SetVersionDeTravail(version.Id, false);
                foreach (CTraitementReleveEquipement traitement in m_listeTraitements)
                {
                    result = traitement.Execute(ctx, null);
                    if (!result)
                    {
                        break;
                    }
                }
                if (result)
                {
                    result = ctx.SaveAll(true);
                }
                if (result)
                {
                    MessageBox.Show(I.T("Modifications have been applied|20798"));
                }
                if (!result)
                {
                    CFormAlerte.Afficher(result.Erreur);
                }
            }
        }
Esempio n. 10
0
 private void SetVersionEnCours(CContexteDonnee contexte)
 {
     if (contexte == null || contexte.IdVersionDeTravail == null)
     {
         m_timerClignote.Stop();
         m_panelVersion.Visible = false;
     }
     else
     {
         CVersionDonnees version = new CVersionDonnees(contexte);
         if (version.ReadIfExists((int)contexte.IdVersionDeTravail))
         {
             m_lblVersion.Text      = version.Libelle;
             m_panelVersion.Visible = true;
             m_timerClignote.Start();
         }
     }
 }
Esempio n. 11
0
        //------------------------------------------------------
        public void InitForObjet(CObjetDonneeAIdNumerique objet, CVersionDonnees version)
        {
            CSessionClient   session = CSessionClient.GetSessionForIdSession(objet.ContexteDonnee.IdSession);
            IInfoUtilisateur info    = session.GetInfoUtilisateur();

            if (info != null)
            {
                m_bCanRestore = info.GetDonneeDroit(CDroitDeBaseSC2I.c_droitAdministration) != null;
            }
            m_bCanRestore         &= version != null && version.TypeVersion.Code == CTypeVersion.TypeVersion.Archive;
            m_panelRestore.Visible = m_bCanRestore;

            if (m_contexteDonnees != null)
            {
                m_contexteDonnees.Dispose();
            }
            m_tableValeurs.Clear();
            m_objetDepart = null;
            m_version     = null;
            m_arbreObjet.Nodes.Clear();
            if (objet == null || version == null)
            {
                return;
            }
            m_contexteDonnees = new CContexteDonnee(objet.ContexteDonnee.IdSession, true, false);
            m_contexteDonnees.SetVersionDeTravail(-1, false);            //Travaille sur toutes les versions
            m_objetDepart = (CObjetDonneeAIdNumerique)m_contexteDonnees.GetObjetInThisContexte(objet);
            m_version     = (CVersionDonnees)m_contexteDonnees.GetObjetInThisContexte(version);

            List <int> lstIds = new List <int>();

            if (m_version.TypeVersion.Code == CTypeVersion.TypeVersion.Previsionnelle)
            {
                CVersionDonnees verTmp = m_version.VersionParente;
                while (verTmp != null)
                {
                    lstIds.Add(verTmp.Id);
                    verTmp = verTmp.VersionParente;
                }
            }
            m_nIdsVersionsSuccessives = lstIds.ToArray();

            CreateNodeObjet(m_arbreObjet.Nodes, m_objetDepart);
        }
Esempio n. 12
0
        //-------------------------------------------------------
        public static CResultAErreurType <CMacro> FromVersion(CVersionDonnees version)
        {
            CResultAErreurType <CMacro> result = new CResultAErreurType <CMacro>();

            using (CContexteDonnee contexte = new CContexteDonnee(version.ContexteDonnee.IdSession, true, false))
            {
                contexte.SetVersionDeTravail(version.Id, false);
                CMacro macro = new CMacro();
                macro.m_contexteDonnee = version.ContexteDonnee;

                Dictionary <int, CMacroObjet> dicMacrosObjets = new Dictionary <int, CMacroObjet>();
                Dictionary <CObjetDonneeAIdNumerique, CMacroObjet> dicObjetToMacros = new Dictionary <CObjetDonneeAIdNumerique, CMacroObjet>();
                foreach (CVersionDonneesObjet vo in version.VersionsObjets)
                {
                    CMacroObjet mo = new CMacroObjet(macro);
                    mo.TypeObjet     = vo.TypeElement;
                    mo.IdObjet       = vo.IdElement;
                    mo.TypeOperation = vo.TypeOperation;
                    macro.AddObjet(mo);

                    dicMacrosObjets[vo.Id] = mo;
                    CObjetDonneeAIdNumerique objet = Activator.CreateInstance(vo.TypeElement, new object[] { contexte }) as CObjetDonneeAIdNumerique;
                    if (objet.ReadIfExists(vo.IdElement))
                    {
                        dicObjetToMacros[objet] = mo;
                    }
                    mo.CreateVariable(objet);
                }
                foreach (CVersionDonneesObjet vo in version.VersionsObjets)
                {
                    CMacroObjet    mo    = dicMacrosObjets[vo.Id];
                    CResultAErreur resMo = CResultAErreur.True;
                    resMo = mo.FillFromVersion(vo, contexte, dicObjetToMacros);
                    if (!resMo)
                    {
                        result.EmpileErreur(resMo.Erreur);
                    }
                }
                result.DataType = macro;
                return(result);
            }
        }
Esempio n. 13
0
        //-------------------------------------------------------------------------------
        //Annule les modifications réalisées sur l'objet
        public CResultAErreur AnnuleModificationsPrevisionnelles(int nIdVersionObjet)
        {
            CResultAErreur result = CResultAErreur.True;

            using (CContexteDonnee contexte = new CContexteDonnee(IdSession, true, false))
            {
                CSessionClient session = CSessionClient.GetSessionForIdSession(IdSession);
                result = session.BeginTrans();
                if (!result)
                {
                    return(result);
                }
                CVersionDonneesObjet versionObjet = new CVersionDonneesObjet(contexte);
                if (!versionObjet.ReadIfExists(nIdVersionObjet))
                {
                    return(result);                   //Rien à annuler
                }
                CVersionDonnees versionPrev = versionObjet.VersionDonnees;
                if (versionPrev.TypeVersion.Code != CTypeVersion.TypeVersion.Previsionnelle)
                {
                    result.EmpileErreur(I.T("Cannot cancel archive operation|220"));
                    return(result);
                }
                result = AnnuleModificationPrevisionnelle(versionObjet);
                if (result)
                {
                    result = contexte.SaveAll(true);
                    if (result)
                    {
                        result = session.CommitTrans();
                    }
                    else
                    {
                        result = session.RollbackTrans();
                    }
                }
            }
            return(result);
        }
Esempio n. 14
0
        void item_Click(object sender, EventArgs e)
        {
            ToolStripMenuItem item    = sender as ToolStripMenuItem;
            CVersionDonnees   version = item != null ? item.Tag as CVersionDonnees : null;

            if (version != null)
            {
                CResultAErreurType <CMacro> res = CMacro.FromVersion(version);
                bool bAdd = res;
                if (!res)
                {
                    if (CFormAlerte.Afficher(res.Erreur) == DialogResult.Ignore)
                    {
                        bAdd = true;
                    }
                }
                if (bAdd)
                {
                    CListeMacros.AddMacro(res.DataType);
                    FillListe();
                }
            }
        }
Esempio n. 15
0
        private void m_txtSelectVersionCible_ElementSelectionneChanged(object sender, EventArgs e)
        {
            if (!m_bInitialise)
            {
                return;
            }
            CVersionDonnees vSourceSelec = VersionSourceSelectionnee;

            if (IdsVersionsSourcesPossibles.Count > 0)
            {
                m_txtSelectVersionSource.InitAvecFiltreDeBase <CVersionDonnees>(
                    "Libelle",
                    new CFiltreData(CVersionDonnees.c_champId + " in(" + string.Join(",", IdsVersionsSourcesPossibles.ToArray()) + ")"),
                    true);
            }
            else
            {
                m_txtSelectVersionSource.InitAvecFiltreDeBase <CVersionDonnees>(
                    "Libelle",
                    new CFiltreDataImpossible(),
                    true);
            }
            VersionSourceSelectionnee = vSourceSelec;
        }
Esempio n. 16
0
        /// ////////////////////////////////////////////////////////
        protected override CResultAErreur MyExecute(CContexteExecutionAction contexte)
        {
            CResultAErreur result = CResultAErreur.True;

            //Calcule le fichier ou l'url
            CContexteEvaluationExpression contexteEval = new CContexteEvaluationExpression(contexte.Branche.Process);

            contexteEval.AttacheObjet(typeof(CContexteDonnee), contexte.ContexteDonnee);
            result = FormuleLibelle.Eval(contexteEval);
            if (!result)
            {
                result.EmpileErreur(I.T("Error during the Label evaluation|20002"));
                return(result);
            }
            CVersionDonnees version = new CVersionDonnees(contexte.ContexteDonnee);

            version.CreateNew();
            version.CodeTypeVersion = (int)CTypeVersion.TypeVersion.Etiquette;
            version.Libelle         = (string)result.Data;
            version.Date            = DateTime.Now;
            result = version.CommitEdit();
            if (!result)
            {
                return(result);
            }
            foreach (CLienAction lien in GetLiensSortantHorsErreur())
            {
                if (!(lien is CLienUtilisateurAbsent))
                {
                    result.Data = lien;
                    return(result);
                }
            }
            result.Data = null;
            return(result);
        }
Esempio n. 17
0
        //---------------------------------------------------------------------------------
        public CResultAErreurType <CSessionImport> DoSmartImport(
            DataTable tableSource,
            CConfigMappagesSmartImport config,
            COptionExecutionSmartImport options,
            IIndicateurProgression indicateur)
        {
            CResultAErreur result        = CResultAErreur.True;
            CSessionImport sessionImport = new CSessionImport();

            sessionImport.TableSource   = tableSource;
            sessionImport.ConfigMappage = config;
            CResultAErreurType <CSessionImport> resSession = new CResultAErreurType <CSessionImport>();

            resSession.DataType = sessionImport;

            int nTaillePaquet = options.TaillePaquets == null ? tableSource.Rows.Count : options.TaillePaquets.Value;
            int nStartLigne   = options.StartLine == null ? 0 : options.StartLine.Value;
            int nEndLigne     = options.EndLine == null ? tableSource.Rows.Count - 1 : Math.Min(options.EndLine.Value, tableSource.Rows.Count - 1);
            int nNbToDo       = nEndLigne - nStartLigne + 1;
            int nNbDone       = 0;

            int?nIdVersionDonnees = null;

            if (options.UtiliserVersionDonnee)
            {
                using (CContexteDonnee ctx = new CContexteDonnee(IdSession, true, false))
                {
                    CVersionDonnees version = new CVersionDonnees(ctx);
                    version.CreateNew();
                    version.TypeVersion = new CTypeVersion(CTypeVersion.TypeVersion.Previsionnelle);
                    version.Libelle     = I.T("Import data @1|20013", DateTime.Now.ToString("G"));
                    result = version.CommitEdit();
                    if (!result)
                    {
                        resSession.EmpileErreur(result.Erreur);
                        return(resSession);
                    }
                    nIdVersionDonnees = version.Id;
                }
            }

            if (nStartLigne > 0)
            {
                sessionImport.AddLog(new CLigneLogImport(ETypeLigneLogImport.Info,
                                                         null,
                                                         "",
                                                         0,
                                                         nStartLigne - 1,
                                                         "Lines 0 to " + (nStartLigne - 1) + " are ignored"));
                sessionImport.SetNonImportees(0, nStartLigne - 1);
            }
            if (nEndLigne < tableSource.Rows.Count - 1)
            {
                sessionImport.AddLog(new CLigneLogImport(ETypeLigneLogImport.Info,
                                                         null,
                                                         "",
                                                         nEndLigne + 1,
                                                         tableSource.Rows.Count - 1,
                                                         "Lines " + (nEndLigne + 1) + " to " + (tableSource.Rows.Count - 1) + " are ignored"));
                sessionImport.SetNonImportees(nEndLigne + 1, tableSource.Rows.Count - 1);
            }

            //Ajoute dans la liste des lignes non importées, les lignes ignorées

            using (C2iSponsor sponsor = new C2iSponsor())
            {
                if (indicateur != null)
                {
                    sponsor.Register(indicateur);
                    indicateur.SetBornesSegment(0, nNbToDo);
                }
                try
                {
                    while (nStartLigne <= nEndLigne)
                    {
                        using (CContexteDonnee ctxDonnees = new CContexteDonnee(IdSession, true, false))
                        {
                            if (m_nIdSession != null)
                            {
                                ctxDonnees.SetVersionDeTravail(nIdVersionDonnees, false);
                            }
                            CContexteImportDonnee ctxImport = new CContexteImportDonnee(ctxDonnees);
                            ctxImport.BestEffort = options.BestEffort;

                            ctxImport.StartLine = nStartLigne;
                            ctxImport.EndLine   = Math.Min(nStartLigne + nTaillePaquet - 1, tableSource.Rows.Count - 1);
                            if (ctxImport.EndLine > nEndLigne)
                            {
                                ctxImport.EndLine = nEndLigne;
                            }
                            if (indicateur != null)
                            {
                                indicateur.PushSegment(nNbDone, nNbDone + ctxImport.EndLine.Value - ctxImport.StartLine.Value);
                            }
                            result = config.ImportTable(
                                tableSource,
                                ctxImport,
                                indicateur);
                            sessionImport.AddLogs(ctxImport.Logs);
                            if (indicateur != null)
                            {
                                indicateur.PopSegment();
                            }
                            if (result)
                            {
                                if (indicateur != null)
                                {
                                    indicateur.SetInfo(I.T("Saving|20012"));
                                }
                                result = ctxDonnees.SaveAll(true);
                                if (!result)
                                {
                                    sessionImport.SetNonImportees(ctxImport.StartLine.Value,
                                                                  ctxImport.EndLine.Value);
                                    sessionImport.AddLog(new CLigneLogImport(
                                                             ETypeLigneLogImport.Error,
                                                             null,
                                                             "",
                                                             ctxImport.StartLine.Value,
                                                             ctxImport.EndLine.Value,
                                                             "Error saving lines " + ctxImport.StartLine.Value + " to " + ctxImport.EndLine.Value + " " +
                                                             result.Erreur.ToString()));
                                }
                                if (!result && !ctxImport.BestEffort)
                                {
                                    return(resSession);
                                }
                                if (result)
                                {
                                    sessionImport.SetImportees(ctxImport.StartLine.Value,
                                                               ctxImport.EndLine.Value);
                                }
                            }
                            else
                            {
                                sessionImport.SetNonImportees(ctxImport.StartLine.Value,
                                                              ctxImport.EndLine.Value);
                            }
                            if (!result && !options.BestEffort)
                            {
                                return(resSession);
                            }
                            nStartLigne += nTaillePaquet;
                            nNbDone     += nTaillePaquet;
                            if (indicateur != null)
                            {
                                indicateur.SetValue(nNbDone);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    resSession.EmpileErreur(new CErreurException(e));
                }
                finally
                {
                    if (!result && !options.BestEffort)
                    {
                        resSession.EmpileErreur(result.Erreur);
                    }
                }
                return(resSession);
            }
        }
Esempio n. 18
0
        //--------------------------------------------------------------------
        private void m_lnkEditerModificationsPrevisionnelles_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (m_gestionnaireModeEdition.ModeEdition)
            {
                Intervention.VersionDonneesAAppliquer = (CVersionDonnees)m_txtSelectVersionLiee.ElementSelectionne;
            }
            if (Intervention.VersionDonneesAAppliquer == null)
            {
                if (!m_gestionnaireModeEdition.ModeEdition)
                {
                    CFormAlerte.Afficher(I.T("No planified modification for that intervention|1359"), EFormAlerteType.Erreur);
                    return;
                }
                //Si nouvelle inter, il faut la valider
                if (CFormAlerte.Afficher(I.T("You have to save your intervention before associate it to planified modification. Would you like to save now ?|1356"),
                                         EFormAlerteType.Question) == DialogResult.No)
                {
                    return;
                }
                if (SaveRequired != null)
                {
                    CancelEventArgs args = new CancelEventArgs();
                    args.Cancel = false;
                    SaveRequired(this, args);
                    if (args.Cancel)
                    {
                        return;
                    }
                }
                else
                {
                    CFormAlerte.Afficher("Error", EFormAlerteType.Erreur);
                    return;
                }

                CResultAErreur result = CResultAErreur.True;

                //Création de la version
                CVersionDonnees version = CFormCreateVersionPourIntervention.GetVersionForInter(Intervention);
                if (version != null)
                {
                    if (version.IsNew())
                    {
                        result = version.CommitEdit();
                        if (!result)
                        {
                            CFormAlerte.Afficher(I.T("Error while creating data version|1357"), EFormAlerteType.Erreur);
                            return;
                        }
                    }

                    //Affectation de la version à l'intervention
                    CIntervention intervention = Intervention;
                    bool          bStartEdit   = intervention.ContexteDonnee.IsEnEdition;
                    if (!bStartEdit)
                    {
                        intervention.BeginEdit();
                    }
                    intervention.VersionDonneesAAppliquer = version;
                    if (!bStartEdit)
                    {
                        result = intervention.CommitEdit();
                    }
                    if (!result)
                    {
                        intervention.CancelEdit();
                        CFormAlerte.Afficher(I.T("Error while affecting version do intervention|1358"), EFormAlerteType.Erreur);
                    }
                    InitChamps(intervention);
                }
            }

            //La version de données est maintenant normallement associée à l'intervention
            CSite site = Intervention.Site;

            if (site == null)
            {
                return;
            }
            if (Intervention.VersionDonneesAAppliquer == null)
            {
                return;
            }
            //Crée un contexte dans la version
            using (CContexteDonnee contexte = new CContexteDonnee(Intervention.ContexteDonnee.IdSession, true, false))
            {
                CResultAErreur result = contexte.SetVersionDeTravail(Intervention.VersionDonneesAAppliquer.Id, true);
                if (!result)
                {
                    CFormAfficheErreur.Show(result.Erreur);
                    return;
                }

                site = (CSite)site.GetObjetInContexte(contexte);
                CFormNavigateurPopup.Show(new CFormEditionSite(site));
            }
        }
        /// ////////////////////////////////
        public CResultAErreur ExecuteRequete(C2iRequeteAvancee requete)
        {
            CResultAErreur result   = CResultAErreur.True;
            string         strTable = requete.TableInterrogee;
            //S'il y a un filtre sur la requête avancée,
            //On prépare d'abord la sous requête de sélection des ids qui nous
            //Interessent

            Type typeReference = CContexteDonnee.GetTypeForTable(strTable);

            if (typeReference == null)
            {
                result.EmpileErreur(I.T("Impossible to define the associated type with @1|121", strTable));
                return(result);
            }

            IDatabaseConnexion con;

            if (typeReference == null)
            {
                con = CSc2iDataServer.GetInstance().GetDatabaseConnexion(IdSession, "");
            }
            else
            {
                con = CSc2iDataServer.GetInstance().GetDatabaseConnexion(IdSession, typeReference);
            }


            CFiltreData filtre = requete.FiltreAAppliquer;
            CArbreTable arbre  = null;
            bool        bHasVersionSurTablePrincipale = false;
            Type        tpObjet = CContexteDonnee.GetTypeForTable(requete.TableInterrogee);

            if (tpObjet != null && !typeof(IObjetSansVersion).IsAssignableFrom(tpObjet) &&
                typeof(CObjetDonneeAIdNumerique).IsAssignableFrom(tpObjet))
            {
                bHasVersionSurTablePrincipale = true;
            }
            if (bHasVersionSurTablePrincipale)
            {
                CFiltreDataAvance filtreVersion = new CFiltreDataAvance(strTable, "");
                //Lecture dans le référentiel
                if (requete.IdVersionDeTravail == null && (filtre == null || !filtre.IgnorerVersionDeContexte))
                {
                    filtreVersion.Filtre = "HasNo(" + CSc2iDataConst.c_champIdVersion + ")";
                }
                //Ignorer les suppressions
                if (filtre != null && !filtre.IntegrerLesElementsSupprimes)
                {
                    if (filtreVersion.Filtre != "")
                    {
                        filtreVersion.Filtre += " and ";
                    }
                    filtreVersion.Filtre += CSc2iDataConst.c_champIsDeleted + "=0";
                }


                //Lecture dans une version
                if (requete.IdVersionDeTravail != null && (filtre == null || !filtre.IgnorerVersionDeContexte) && requete.IdVersionDeTravail >= 0)
                {
                    if (filtre == null)
                    {
                        filtre = new CFiltreData();
                    }
                    filtre.IdsDeVersionsALire = CVersionDonnees.GetVersionsToRead(IdSession, (int)requete.IdVersionDeTravail);
                }

                if (filtreVersion.Filtre != "")
                {
                    filtre = CFiltreData.GetAndFiltre(filtre, filtreVersion);
                }
            }
            if (filtre != null && filtre is CFiltreDataAvance)
            {
                result = ((CFiltreDataAvance)filtre).GetArbreTables();
                if (!result)
                {
                    return(result);
                }
                arbre = (CArbreTable)result.Data;
            }

            result = requete.CalculeArbre(arbre);
            if (!result)
            {
                return(result);
            }
            arbre = (CArbreTable)result.Data;

            int nOldTimeOut = con.CommandTimeOut;

            con.CommandTimeOut = 60 * 2;
            result             = con.ExecuteRequeteComplexe(requete.Champs, arbre, filtre);
            con.CommandTimeOut = nOldTimeOut;
            return(result);
        }
Esempio n. 20
0
        //-------------------------------------------------------------------------
        public CVersionDonneesObjet JournaliseDonnees(System.Data.DataRow row, CVersionDonnees version)
        {
            if (row.RowState == DataRowState.Modified ||
                row.RowState == DataRowState.Added ||
                row.RowState == DataRowState.Deleted)
            {
                Type tp = CContexteDonnee.GetTypeForTable(row.Table.TableName);
                if (!typeof(CRelationElementAChamp_ChampCustom).IsAssignableFrom(tp))
                {
                    return(null);
                }
                //Récupère l'objet associé
                DataRowVersion rowVersion = DataRowVersion.Current;
                if (row.RowState == DataRowState.Deleted)
                {
                    if (row.HasVersion(DataRowVersion.Original))
                    {
                        rowVersion = DataRowVersion.Original;
                    }
                    else
                    {
                        return(null);
                    }
                }
                CRelationElementAChamp_ChampCustom rel = (CRelationElementAChamp_ChampCustom)Activator.CreateInstance(tp, new object[] { row });
                rel.VersionToReturn = rowVersion;
                try
                {
                    IElementAChamps objet = rel.ElementAChamps;
                    //Si l'objet est ajouté, on n'archive pas !
                    if (objet is CObjetDonneeAIdNumerique &&
                        ((CObjetDonneeAIdNumerique)objet).Row.RowState != DataRowState.Added)
                    {
                        CObjetDonneeAIdNumerique objetAId = (CObjetDonneeAIdNumerique)objet;
                        if (objetAId != null)
                        {
                            //Récupère un version pour l'objet
                            CVersionDonneesObjet versionObjet = version.GetVersionObjetAvecCreation(objetAId.Row.Row);
                            if (versionObjet == null)
                            {
                                return(null);
                            }

                            //Stef 14082008 : en cas d'ajout, on ne fait rien. le datarow de l'objet n'est pas added
                            //car l'objet a déjà été sauvé quand on passe par là !
                            if (versionObjet.CodeTypeOperation == (int)CTypeOperationSurObjet.TypeOperation.Ajout)
                            {
                                return(null);
                            }

                            new CJournaliseurValeurChampCustom().JournaliseDonneeInContexte(versionObjet, rel.ChampCustom, row);
                            return(versionObjet);
                        }
                    }
                }
                catch
                {
                    return(null);
                }
            }
            return(null);
        }