Exemplo n.º 1
0
        public static void AutoexecInit()
        {
            lock (typeof(CGestionnaireDonneesQowisio))
            {
                if (m_bAutoexecDone)
                {
                    return;
                }
                m_bAutoexecDone = true;
            }
            m_bTraitementEnCours = true;

            CTimosServeur.OnMajStructureBaseEvent += new EventHandler(CTimosServeur_OnMajStructureBaseEvent);


            string strAppData = AppDataPath;

            if (!Directory.Exists(strAppData))
            {
                Directory.CreateDirectory(strAppData);
            }
            C2iEventLog.WriteInfo(strAppData);

            // Récupère le nom du dernier fichier traité
            CDataBaseRegistrePourClient registreClient = new CDataBaseRegistrePourClient(0);


            CContexteDonneeServeur.AddTraitementAvantSauvegarde(new TraitementSauvegardeExterne(TraitementAvantSauvegardeExterne));
        }
 //-------------------------------------------------------------------
 public static void Autoexec()
 {
     if (C2iAppliServeur.GetValeur(c_cleDesactivation) == null)
     {
         m_timer = new Timer(new TimerCallback(OnTachePlanifiee), null, 4 * 60000, 60000);
         C2iEventLog.WriteInfo("Gestionnaire d'évenements sur date démarré");
     }
 }
Exemplo n.º 3
0
        //-------------------------------------------------------------------
        public CResultAErreur ExecuteTache(int nIdIntervention, IIndicateurProgression indicateur)
        {
            CResultAErreur result = CResultAErreur.True;

            using (CContexteDonnee contexte = new CContexteDonnee(IdSession, true, false))
            {
                CTachePlanifiee tache = new CTachePlanifiee(contexte);
                if (!tache.ReadIfExists(nIdIntervention))
                {
                    result.EmpileErreur(I.T("The Planned Task '@1' does not exist|338", nIdIntervention.ToString()));
                    return(result);
                }
                int nNbErreurs = 0;
                C2iEventLog.WriteInfo(I.T("Starting planned task @1|339", tache.Libelle), NiveauBavardage.PetiteCausette);

                int    nNbFait   = 0;
                string strErreur = "";
                foreach (CRelationTachePlanifieeProcess rel in tache.RelationsProcess)
                {
                    if (indicateur != null)
                    {
                        indicateur.SetInfo(I.T("Action @1|340", rel.Process.Libelle));
                    }
                    CInfoDeclencheurProcess infoDeclencheur = new CInfoDeclencheurProcess(TypeEvenement.Date);
                    result = CProcessEnExecutionInDb.StartProcess(rel.Process.Process, infoDeclencheur, IdSession, null, null);
                    if (!result)
                    {
                        result.EmpileErreur(I.T("Action @1|341", rel.Process.Libelle));
                        strErreur += Environment.NewLine;
                        strErreur += result.Erreur.ToString() + Environment.NewLine + "-------------------------------------" + Environment.NewLine;
                        nNbErreurs++;
                        result = CResultAErreur.True;
                    }
                    nNbFait++;
                    if (indicateur != null)
                    {
                        indicateur.SetValue(nNbFait);
                    }
                }

                foreach (CRelationTachePlanifieeTypeDonneeCumulee relData in tache.RelationsTypesDonneesCumulees)
                {
                    result = relData.TypeDonneeCumulee.StockResultat(indicateur);
                    if (!result)
                    {
                        result.EmpileErreur(I.T("Cumulated data @1|342", relData.TypeDonneeCumulee.Libelle));
                        strErreur += result.Erreur.ToString() + "\r\n-------------------------------------\r\n";
                        nNbErreurs++;
                        result = CResultAErreur.True;
                    }
                }



                C2iEventLog.WriteInfo(I.T("End of planned task @1, @2 error(s)|343", tache.Libelle, nNbErreurs.ToString()), NiveauBavardage.PetiteCausette);
                return(result);
            }
        }
Exemplo n.º 4
0
        ///////////////////////////////////////////////
        public void CloseSession()
        {
            string strMessage = I.T("Closing session @1|110", IdSession.ToString());

            try
            {
                strMessage += " " + GetInfoUtilisateur().NomUtilisateur;
            }
            catch
            {
            }
            CAuthentificationSessionSousSession authSousSession = m_authentification as CAuthentificationSessionSousSession;

            if (authSousSession != null)
            {
                ISessionClientSurServeur sessionPrinc = CGestionnaireSessions.GetSessionClientSurServeurStatic(authSousSession.IdSessionPrincipale);
                if (sessionPrinc != null)
                {
                    sessionPrinc.RemoveSousSession(this);
                }
            }

            C2iEventLog.WriteInfo(strMessage, NiveauBavardage.VraiPiplette);
            int      nIdSession = IdSession;
            DateTime dt         = DateTime.Now;

            MyCloseSession();
            TimeSpan sp = DateTime.Now - dt;

            Console.WriteLine("SessionServeur closing " + nIdSession + " / 1 : " + sp.TotalMilliseconds);
            CGestionnaireObjetsAttachesASession.OnCloseSession(IdSession);
            sp = DateTime.Now - dt;
            Console.WriteLine("SessionServeur closing " + nIdSession + " / 2 : " + sp.TotalMilliseconds);
            CGestionnaireSessions.CloseSession(this);
            sp = DateTime.Now - dt;
            Console.WriteLine("SessionServeur closing " + nIdSession + " / 3 : " + sp.TotalMilliseconds);
            CGestionnaireObjetsAttachesASession.OnCloseSession(IdSession);            //Si jamais le close sessino a réaloué des éléments
            sp = DateTime.Now - dt;
            Console.WriteLine("SessionServeur closing " + nIdSession + " / 4 : " + sp.TotalMilliseconds);
            m_sponsor.Unregister(m_sessionSurClient);
            sp = DateTime.Now - dt;
            Console.WriteLine("SessionServeur closing " + nIdSession + " / 5 : " + sp.TotalMilliseconds);
            m_sessionSurClient = null;
        }
Exemplo n.º 5
0
        /// ///////////////////////////////////////////////////
        public CResultAErreur ReconnecteSession(CSessionClient sessionSurClient)
        {
            CResultAErreur           result            = CResultAErreur.True;
            ISessionClientSurServeur sessionSurServeur = GetSessionClientSurServeur(sessionSurClient.IdSession);

            if (sessionSurServeur != null)
            {
                sessionSurClient.SessionSurServeur = sessionSurServeur;
                return(result);
            }
            result = CanOpenSession(sessionSurClient);
            if (result)
            {
                sessionSurServeur = GetNewSessionSurServeur(sessionSurClient, result.Data);
                result.Data       = null;
                if (sessionSurServeur == null)
                {
                    result.EmpileErreur(I.T("Server session allocation impossible|105"));
                }
                else
                {
                    sessionSurClient.SessionSurServeur = sessionSurServeur;
                    lock (typeof(CLockerListeSessions))
                    {
                        m_listeSessions[sessionSurClient.IdSession] = sessionSurServeur;
                    }
                    string strMessage = I.T("Session Reconnection n°|111") + sessionSurClient.IdSession +
                                        "\r\n" + I.T("Type|107") + sessionSurClient.TypeApplicationCliente.ToString();
                    strMessage += I.T("\r\n|108") + sessionSurServeur.DescriptionApplicationCliente;
                    try
                    {
                        strMessage += I.T("\r\n|108") + sessionSurClient.GetInfoUtilisateur().NomUtilisateur;
                    }
                    catch
                    { }
                    C2iEventLog.WriteInfo(strMessage, NiveauBavardage.VraiPiplette);
                    CDonneeNotificationConnection donnee = new CDonneeNotificationConnection(sessionSurClient.IdSession, true);
                    CEnvoyeurNotification.EnvoieNotifications(new IDonneeNotification[] { donnee });
                }
            }
            return(result);
        }
            public int Compare(object x, object y)
            {
                try
                {
                    object val1, val2;
                    if (((DataRow)x).RowState == DataRowState.Deleted ||
                        ((DataRow)y).RowState == DataRowState.Deleted)
                    {
                        return(0);
                    }

                    val1 = ((DataRow)x)[m_strColonne];
                    val2 = ((DataRow)y)[m_strColonne];

                    if (val1 is IComparable && val2 is IComparable)
                    {
                        return(((IComparable)val1).CompareTo((IComparable)val2));
                    }
                    if (val1.Equals(val2))
                    {
                        return(0);
                    }
                    return(-1);
                }
                catch (Exception ex)
                {
                    object val1, val2;
                    val1 = ((DataRow)x)[m_strColonne];
                    val2 = ((DataRow)y)[m_strColonne];

                    string strInfosDebug = "DEBUG_OOREDOO" + Environment.NewLine;
                    strInfosDebug += "Error in Compare function" + Environment.NewLine;
                    strInfosDebug += "Val1 = " + val1.ToString() + Environment.NewLine;
                    strInfosDebug += "Val2 = " + val2.ToString() + Environment.NewLine;
                    C2iEventLog.WriteInfo(strInfosDebug);
                }
                return(0);
            }
Exemplo n.º 7
0
        /// ///////////////////////////////////////////////////
        public static void NettoieSessions(object state)
        {
            try
            {
                StringBuilder blInfo = new StringBuilder();
                blInfo.Append("Sessions cleaning : " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "\r\n");
                foreach (DictionaryEntry entry in new ArrayList(m_listeSessions))
                {
                    try
                    {
                        int nIdSession = (int)entry.Key;
                        blInfo.Append("Session ");
                        blInfo.Append(nIdSession);
                        CSessionClientSurServeur sessionServeur = (CSessionClientSurServeur)entry.Value;
                        CSessionClient           session        = CSessionClient.GetSessionForIdSession(nIdSession);
                        bool bIsConnected = false;
                        try
                        {
                            bIsConnected = session.IsConnected;
                            if (bIsConnected)
                            {
                                sessionServeur.DateHeureLastTestSessionClientSuccess = DateTime.Now;
                            }
                        }
                        catch
                        {
                            blInfo.Append("/Disconnected from client/");
                        }
                        if (session == null || !bIsConnected)
                        {
                            TimeSpan sp = DateTime.Now - sessionServeur.DateHeureLastTestSessionClientSuccess;
                            if (sp.TotalMinutes > LifetimeServices.SponsorshipTimeout.Minutes)
                            {
                                blInfo.Append("/Closing/");
                                C2iEventLog.WriteInfo("Loose " + nIdSession + " Automatic disconnect", NiveauBavardage.PetiteCausette);
                                try
                                {
                                    sessionServeur.CloseSession();
                                }
                                catch
                                {
                                    CloseSession(sessionServeur);
                                }

                                blInfo.Append("/Closed/");
                            }
                        }
                        else
                        {
                            blInfo.Append("/active/");
                        }
                        blInfo.Append(Environment.NewLine);
                    }
                    catch {
                        blInfo.Append("ERROR \r\n");
                    }
                }
                C2iEventLog.WriteInfo(blInfo.ToString(), NiveauBavardage.VraiPiplette);
            }
            catch {}
        }
Exemplo n.º 8
0
 //-------------------------------------------------------------------
 public static void Autoexec()
 {
     m_timer = new Timer(new TimerCallback(OnTachePlanifiee), null, c_nDelaiTachePlanifiee, c_nDelaiTachePlanifiee);
     C2iEventLog.WriteInfo(I.T("Planned Task Manager started|331"));
 }
Exemplo n.º 9
0
        protected virtual CResultAErreur UpdateTable(CStructureTable structure, ArrayList strChampsAutorisesANull)
        {
            CResultAErreur result = CResultAErreur.True;

            ArrayList champsCrees = new ArrayList();
            DataTable dt          = GetDataTableForUpdateTable(structure);

            //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            #region M.A.J des champs de la table
            string strNomTable = structure.NomTableInDb;

            foreach (CInfoChampTable champ in structure.Champs)
            {
                bool bExists = false;

                bool bModifiedType    = false;
                bool bModifiedNotNull = false;
                bool bModifiedLength  = false;
                bool bModifiedIndex   = false;

                if (strChampsAutorisesANull.Contains(champ.NomChamp))
                {
                    champ.NullAuthorized = true;
                }

                // 1 - Verification d'existance de la colonne et des modifs à faire si elle existe
                foreach (DataColumn colonne in dt.Columns)
                {
                    if (champ.NomChamp == colonne.ColumnName)
                    {
                        bModifiedType    = Champ_ModifiedType(champ, colonne);
                        bModifiedLength  = Champ_ModifiedLength(champ, colonne);
                        bModifiedNotNull = Champ_ModifiedNotNull(champ, colonne, strChampsAutorisesANull);
                        bModifiedIndex   = Champ_ModifiedIndex(strNomTable, champ);

                        bExists = true;
                        break;
                    }
                }

                // 2 - Creation d'une colonne inexistante
                if (!bExists)
                {
                    result = CreateChamp(structure.NomTableInDb, champ);
                    if (result)
                    {
                        champsCrees.Add(champ.NomChamp);
                    }
                }
                // 3 - Modification d'une colonne
                else if (bModifiedType || bModifiedNotNull || bModifiedLength)
                {
                    result = UpdateChamp(strNomTable, champ, bModifiedNotNull, bModifiedLength, bModifiedType);
                }
                if (!result)
                {
                    return(result);
                }
                if (bModifiedIndex)
                {
                    if (champ.IsIndex)
                    {
                        result = CreateIndex(strNomTable, false, champ.NomChamp);
                    }
                    else
                    {
                        result = DeleteIndex(strNomTable, champ.NomChamp);
                    }
                    if (!result)
                    {
                        return(result);
                    }
                }
            }


            // Suppression d'une colonne de la table
            foreach (DataColumn colonne in dt.Columns)
            {
                bool bExists = false;
                foreach (CInfoChampTable info in structure.Champs)
                {
                    if (info.NomChamp == colonne.ColumnName)
                    {
                        bExists = true;
                        break;
                    }
                }

                if (!bExists)
                {
                    //SC le 17082009 : Plus de suppression automatique de colonne
                    //Par UpdateTable. Pour supprimer une colonne, il faut utiliser une opération
                    //de suppression de colonne
                    C2iEventLog.WriteInfo("Field " + colonne.ColumnName + " in table " + structure.NomTableInDb + " should be deleted");
                    //result = DeleteChamp(structure.NomTableInDb, colonne.ColumnName);
                    if (!result)
                    {
                        return(result);
                    }
                }
            }

            #endregion
            //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            #region M.A.J des contraintes de la table
            List <CInfoRelation> relationsActuelles = new List <CInfoRelation>();
            result = GetRelationsExistantes(strNomTable, ref relationsActuelles);
            if (!result)
            {
                return(result);
            }

            List <CInfoRelation> relationsVoulues = new List <CInfoRelation>();
            foreach (CInfoRelation r in structure.RelationsParentes)
            {
                if (r.IsInDb)
                {
                    relationsVoulues.Add(r);
                }
            }

            List <CInfoRelation> nouvellesRelations = GetRelationsInnexistantes(relationsActuelles, relationsVoulues);
            List <CInfoRelation> relationsObseletes = GetRelationsInnexistantes(relationsVoulues, relationsActuelles);

            foreach (CInfoRelation rel in nouvellesRelations)
            {
                foreach (string strChampFils in rel.ChampsFille)
                {
                    if (strChampsAutorisesANull.Contains(strChampFils))
                    {
                        rel.Obligatoire = false;
                    }
                }
                string strRequeteRelation = GetRequeteCreateCleEtrangere(rel);
                result = Connection.RunStatement(strRequeteRelation);
                if (result)
                {
                    AfterChangeContraintes(CContexteDonnee.GetNomTableInDbForNomTable(rel.TableFille));
                }
                string strNomTableFilleInDb = CContexteDonnee.GetNomTableInDbForNomTable(rel.TableFille);
                if (result && rel.Indexed)
                {
                    result = CreateIndex(strNomTableFilleInDb, rel.IsClustered, rel.ChampsFille);
                    if (result)
                    {
                        AfterChangeIndexs(CContexteDonnee.GetNomTableInDbForNomTable(rel.TableFille));
                    }
                }

                if (!result)
                {
                    result.EmpileErreur(I.T("Error while creating foreign key of @1 table (@2)|127", structure.NomTableInDb, strRequeteRelation));
                    return(result);
                }
            }
            foreach (CInfoRelation rel in relationsObseletes)
            {
                string strNomTableFilleInDb = CContexteDonnee.GetNomTableInDbForNomTable(rel.TableFille);
                result = DeleteIndex(strNomTableFilleInDb, rel.ChampsFille);
                string strRequeteRelation = GetRequeteDeleteClefEtrangere(rel);
                result = Connection.RunStatement(strRequeteRelation);
                if (result)
                {
                    AfterChangeContraintes(strNomTableFilleInDb);
                }
                if (!result)
                {
                    result.EmpileErreur(I.T("Error while deleting foreign key of @1 table (@2)|212", structure.NomTableInDb, strRequeteRelation));
                    return(result);
                }
            }

            //Vérification des indexs des relations
            foreach (CInfoRelation rel in relationsVoulues)
            {
                if (!nouvellesRelations.Contains(rel))
                {
                    string strNomTableFilleInDb = CContexteDonnee.GetNomTableInDbForNomTable(rel.TableFille);
                    if (rel.Indexed)
                    {
                        result = CreateIndex(strNomTableFilleInDb, rel.IsClustered, rel.ChampsFille);
                    }
                    else if (ShouldDeleteIndexRelation(strNomTableFilleInDb, rel))
                    {
                        result = DeleteIndex(strNomTableFilleInDb, rel.ChampsFille);
                    }
                    if (!result)
                    {
                        return(result);
                    }
                }
            }

            //Gestion des attributs Index sur la classe
            foreach (CInfoIndexTable info in structure.IndexSupplementaires)
            {
                result = CreateIndex(strNomTable, info.IsCluster, info.Champs);
                if (!result)
                {
                    return(result);
                }
            }

            #endregion
            //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            return(result);
        }
Exemplo n.º 10
0
        //------------------------------------------------------------------------
        private void ExecuteEtape(CParametresStartEtapeInPile parametreStart)
        {
            //C2iEventLog.WriteInfo("DEBUG_TODO - ExecuteEtape()");
            List <CDonneeNotificationWorkflow> lstNotifications = new List <CDonneeNotificationWorkflow>();

            //TESTDBKEYTODO
            if (parametreStart.KeyUtilisateur != null)
            {
                m_session.ChangeUtilisateur(parametreStart.KeyUtilisateur);
            }
            try
            {
                using (CContexteDonnee ctx = new CContexteDonnee(m_session.IdSession, true, false))
                {
                    CResultAErreur result = CResultAErreur.True;
                    CEtapeWorkflow etape  = new CEtapeWorkflow(ctx);
                    //C2iEventLog.WriteInfo("DEBUG_TODO - ExecuteEtape() - etape.ReadIfExists(" + parametreStart.IdEtape + ")");
                    if (etape.ReadIfExists(parametreStart.IdEtape))
                    {
                        //C2iEventLog.WriteInfo("DEBUG_TODO - ExecuteEtape() OK étape existe Id = " + parametreStart.IdEtape);
                        result = etape.InternalSetInfosDemarrageInCurrentContext();
                        //C2iEventLog.WriteInfo("DEBUG_TODO - etape.InternalSetInfosDemarrageInCurrentContext() Id = " + parametreStart.IdEtape);
                        etape.EtatCode = (int)EEtatEtapeWorkflow.Démarrée;
                        result         = ctx.SaveAll(true);
                        //C2iEventLog.WriteInfo("DEBUG_TODO - ctx.SaveAll(true) Id = " + parametreStart.IdEtape + " - result = " + result.Result);

                        if (result)
                        {
                            //C2iEventLog.WriteInfo("DEBUG_TODO - before InternalRunAndSaveifOk() Id = " + parametreStart.IdEtape);
                            result = etape.InternalRunAndSaveifOk();
                            //C2iEventLog.WriteInfo("DEBUG_TODO - after InternalRunAndSaveifOk() Id = " + parametreStart.IdEtape);
                        }
                        else
                        {
                            C2iEventLog.WriteInfo("DEBUG_TODO - InternalRunAndSaveifOk() - Erreur : " + result.MessageErreur);
                        }
                        if (result && etape.CodeAffectations.Length > 0 && etape.DateFin == null)
                        {
                            CDonneeNotificationWorkflow donneeWorkflow = new CDonneeNotificationWorkflow(
                                m_session.IdSession,
                                etape.Id,
                                etape.Libelle,
                                etape.CodeAffectations,
                                etape.TypeEtape.ExecutionAutomatique);
                            lstNotifications.Add(donneeWorkflow);
                            // Déclenche l'evenement spécifique au démarrage de l'étape
                            result = etape.EnregistreEvenement(CEtapeWorkflow.c_codeEvenementOnRunStep, true);
                            //C2iEventLog.WriteInfo("DEBUG_TODO - ExecuteEtape() - etape.EnregistreEvenement()");
                        }
                        if (!result)
                        {
                            NoteErreurSurEtape(etape, result.MessageErreur);
                            return;
                        }
                        //C2iEventLog.WriteInfo("DEBUG_TODO - ExecuteEtape() - Fin traitement étape Id = " + parametreStart.IdEtape);
                    }
                }
            }
            catch (Exception e)
            {
                C2iEventLog.WriteErreur("DEBUG_TODO - ExecuteEtape() - Exception executing step Id  = " + parametreStart.IdEtape + Environment.NewLine + e.Message);
            }
            if (lstNotifications != null)
            {
                CEnvoyeurNotification.EnvoieNotifications(lstNotifications.ToArray());
            }
        }
Exemplo n.º 11
0
 //-------------------------------------------------------------------
 public static void Autoexec()
 {
     m_timer = new Timer(new TimerCallback(OnRetrieveMails), null, c_nDelaiEnvoi, 1000 * 60);
     C2iEventLog.WriteInfo(I.T("Receive Mails Service started|10000"));
 }
Exemplo n.º 12
0
 //-------------------------------------------------------------------
 public static void Autoexec()
 {
     m_timer = new Timer(new TimerCallback(OnSendSMS), null, c_nDelaiEnvoi, 1000 * 60);
     C2iEventLog.WriteInfo(I.T("SMS service started|20158"));
 }