Exemplo n.º 1
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            CResultAErreur result = timos.client.CInitialiseurClientTimos.InitClientTimos(new CTimosConsoleRegistre());

            if (result)
            {
                IIdentity      id      = WindowsIdentity.GetCurrent();;
                CSessionClient session = CSessionClient.CreateInstance();
                result = session.OpenSession(new CAuthentificationSessionProcess(), "Timos Admin", ETypeApplicationCliente.Windows);
                if (!result)
                {
                    result.EmpileErreur("Erreur lors de l'authentification");
                }
            }
            if (result)
            {
                Application.Run(new CFormConsoleSuivi());
            }
            else
            {
                MessageBox.Show(result.Erreur.ToString());
            }
        }
Exemplo n.º 2
0
        //------------------------------------------------------------------------------------------------------
        public CResultAErreur OpenSession(string strLogin, string strPassword)
        {
            CResultAErreur result  = CResultAErreur.True;
            CSessionClient session = CSessionClient.CreateInstance();
            // DEBUG result = session.OpenSession(new CAuthentificationSessionSousSession(0), "Aspectize", ETypeApplicationCliente.Service);

            CAuthentificationSessionTimosLoginPwd authParams = new CAuthentificationSessionTimosLoginPwd(
                strLogin,
                strPassword,
                new CParametresLicence(new List <string>(), new List <string>()));

            result = session.OpenSession(authParams, "Timos Web App", ETypeApplicationCliente.Web);

            if (!result)
            {
                result.EmpileErreur("Erreur lors de l'ouverture de session Aspectize pour l'utilisateur " + strLogin);
                return(result);
            }
            CInfoSessionAspectize.OnCreateSession(session);

            DataTable        dt   = CUserTimosWebApp.GetStructureTable();
            CUserTimosWebApp user = new CUserTimosWebApp(session, dt.NewRow(), strLogin);

            dt.Rows.Add(user.Row);

            result.Data = user.Properties;

            return(result);
        }
Exemplo n.º 3
0
        private void m_btnOk_Click(object sender, System.EventArgs e)
        {
            string  []     macAddresses;
            CSessionClient session = CSessionClient.CreateInstance();
            int            i;

            NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();

            macAddresses = new string[nics.Length];

            i = 0;
            foreach (NetworkInterface adapter in nics)
            {
                macAddresses.SetValue(adapter.GetPhysicalAddress().ToString(), i);
                i++;
            }

            CResultAErreur result = session.OpenSession(new CAuthentificationSessionTimosLoginPwd(
                                                            m_txtLogin.Text,
                                                            m_txtPassword.Text,
                                                            new CParametresLicence(CAuthentificateurTimos.GetIdsSupportAmovibles(),
                                                                                   CAuthentificateurTimos.GetMACs())));

            if (!result)
            {
                CFormAlerte.Afficher(result.Erreur);
                return;
            }
            CTimosApp.SessionClient = session;
            DialogResult            = DialogResult.OK;
            Close();
        }
Exemplo n.º 4
0
        private void m_lnkOuvrir_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            CSessionClient nouvelleSession = CSessionClient.CreateInstance();

            CAuthentificationSessionTimosLoginPwd authParams = new CAuthentificationSessionTimosLoginPwd(
                m_txtLogin.Text,
                m_txtPassword.Text,
                new CParametresLicence(new List <string>(), new List <string>()));

            //CAuthentificationSessionLoginPassword authParams = new CAuthentificationSessionLoginPassword(m_txtLogin.Text, m_txtPassword.Text);

            CResultAErreur result = nouvelleSession.OpenSession(authParams, "Session de test", ETypeApplicationCliente.Windows);

            if (!result)
            {
                MessageBox.Show(result.Erreur.ToString());
                return;
            }



            DataSet ds = new DataSet("DS");

            RefreshAll();
        }
        protected override CResultAErreur CanOpenSession(CSessionClient sessionSurClient)
        {
            if (m_session == null)
            {
                m_session = CSessionClient.CreateInstance();
                m_session.OpenSession(new CAuthentificationSessionServer(), "Seesion manager", ETypeApplicationCliente.Service);
            }
            CResultAErreur result = CResultAErreur.False;

            System.Console.WriteLine(I.T("Waiting for openSession availiability|30001"));
            System.Console.WriteLine(I.T("Beginning Seesion opening|30002"));

            try
            {
                if (sessionSurClient.Authentification is CAuthentificationSessionServer)
                {
                    result = CanOpenSessionServeur(sessionSurClient);
                }
                if (sessionSurClient.Authentification is CAuthentificationSessionSousSession)
                {
                    result = CanOpenSessionSousSession(sessionSurClient);
                }
                if (sessionSurClient.Authentification is sc2i.process.CAuthentificationSessionProcess)
                {
                    result = CanOpenSessionProcess(sessionSurClient);
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }

            System.Console.WriteLine("Ending Session opening|30003");
            return(result);
        }
Exemplo n.º 6
0
        //----------------------------------------------------
        private CResultAErreur AssureSessionEtContexte()
        {
            CResultAErreur resErreur = CResultAErreur.True;

            System.Threading.Thread.CurrentThread.Priority = System.Threading.ThreadPriority.Lowest;
            if (m_sessionClient == null || !m_sessionClient.IsConnected)
            {
                m_sessionClient = CSessionClient.CreateInstance();
                resErreur       = m_sessionClient.OpenSession(new CAuthentificationSessionServer(),
                                                              I.T("Alarm management|20154"),
                                                              ETypeApplicationCliente.Service);
                if (!resErreur)
                {
                    resErreur.EmpileErreur(resErreur.Erreur);
                    C2iEventLog.WriteErreur(I.T("Error while open alarm management session|20155"));
                    resErreur.EmpileErreur(I.T("Error while open alarm management session|20155"));
                    return(resErreur);
                }
            }

            if (m_contexteDonnee == null)
            {
                m_contexteDonnee = new CContexteDonnee(m_sessionClient.IdSession, true, true);
                CListeObjetsDonnees lst = new CListeObjetsDonnees(m_contexteDonnee, typeof(CTypeAlarme));
                lst.AssureLectureFaite();
                lst.ReadDependances("RelationsChampsCustomListe");
                lst = new CListeObjetsDonnees(m_contexteDonnee, typeof(CSeveriteAlarme));
                lst.AssureLectureFaite();
            }

            return(resErreur);
        }
Exemplo n.º 7
0
 public bool HasInterventions(CDbKey keyUtilisateur)
 {
     if (keyUtilisateur == null)
     {
         return(false);
     }
     lock (typeof(CLockRechercheInterventions))
     {
         if (m_sessionPourRechercheInterventions == null)
         {
             m_sessionPourRechercheInterventions = CSessionClient.CreateInstance();
             CResultAErreur result = m_sessionPourRechercheInterventions.OpenSession(new sc2i.multitiers.server.CAuthentificationSessionServer(),
                                                                                     I.T("Search for interventions|101"),
                                                                                     ETypeApplicationCliente.Service);
             if (!result)
             {
                 return(false);
             }
         }
         using (CContexteDonnee contexte = new CContexteDonnee(m_sessionPourRechercheInterventions.IdSession, true, false))
         {
             CListeObjetsDonnees listeInterventions = new CListeObjetsDonnees(contexte, typeof(CBesoinInterventionProcess));
             //TESTDBKEYTODO
             listeInterventions.Filtre = new CFiltreData(
                 CBesoinInterventionProcess.c_champKeyUtilisateur + "=@1",
                 keyUtilisateur.StringValue);
             return(listeInterventions.CountNoLoad > 0);
         }
     }
 }
Exemplo n.º 8
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            CTimosAppRegistre timosRegistre = new CTimosAppRegistre();

            CResultAErreur result = timos.client.CInitialiseurClientTimos.InitClientTimos(timosRegistre, true, null);

            if (result)
            {
                CSessionClient session = CSessionClient.CreateInstance();
                result = session.OpenSession(
                    new CAuthentificationSessionSousSession(0),
                    "Myanmar documents import",
                    ETypeApplicationCliente.Service
                    );
                if (result)
                {
                    CImportMyanmarConst.SessionClient = session;
                }
            }
            if (!result)
            {
                MessageBox.Show("Error while connecting to Timos, limited functions !");
            }


            Application.Run(new CFormMain());
        }
Exemplo n.º 9
0
        public static CResultAErreur TryAuthentificationSupportAmovible()
        {
            CResultAErreur result = CResultAErreur.True;
            //Identification par Support Amovible
            List <string> idsSupports = GetIdsSupportAmovibles();
            bool          bFind       = false;

            foreach (string strIdSupport in idsSupports)
            {
                bFind = true;
                CSessionClient session = CSessionClient.CreateInstance();
                result = session.OpenSession(new CAuthentificationSessionTimosSupportAmovible(strIdSupport, new CParametresLicence(idsSupports, GetMACs())));
                if (result)
                {
                    CTimosApp.SessionClient = session;
                    break;
                }
            }
            if (!bFind)
            {
                result.EmpileErreur(I.T("There is no recognized removable device|30019"));
            }

            return(result);
        }
Exemplo n.º 10
0
        /// /////////////////////////////////////////////////////////
        public virtual CResultAErreur OpenSession()
        {
            m_session = CSessionClient.CreateInstance();
            m_session.UseSessionUtilisateurData = false;
            BeforeAuthentification(m_session);
            CResultAErreur result = CResultAErreur.True;

            result = MyOpenSession(m_session);
            return(result);
        }
Exemplo n.º 11
0
        /// <summary>
        /// Exemple ligne de commande
        /// TimosAuthDataBase.exe 127.0.0.1 TIMOS_USERS_PREPROD "Data Source=DESKTOP-VMDEVYK\SQLEXPRESS;Initial Catalog=TIMOS_USERS_DB;Integrated Security=True;Pooling=False"
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            CResultAErreur result = CResultAErreur.True;

            string strURL               = "tcp://127.0.0.1:8160";
            string strNomTable          = "TIMOS_USERS_PREPROD";
            string strChaineDeConnexion = @"Data Source=DESKTOP-VMDEVYK\SQLEXPRESS;Initial Catalog=TIMOS_USERS_DB;Integrated Security=True;Pooling=False";

            if (args.Length > 0)
            {
                strURL = "tcp://" + args[0] + ":8160";
                if (args.Length > 1)
                {
                    strNomTable = args[1];
                }
                if (args.Length > 2)
                {
                    strChaineDeConnexion = args[2];
                }
            }
            try
            {
                result = CInitialiseurClientTimos.InitClientTimos(strURL, 0, "", null);
            }
            catch { }

            if (result)
            {
                CSessionClient session = CSessionClient.CreateInstance();
                result = session.OpenSession(new CAuthentificationSessionProcess(), "Timos Auth Database", ETypeApplicationCliente.Process);
                if (!result)
                {
                    result.EmpileErreur("Erreur lors de l'authentification");
                }
                if (result)
                {
                    Console.WriteLine("Argument 1 = " + strURL);
                    Console.WriteLine("Argument 2 = " + strNomTable);

                    result = GetTimosUsers(session.IdSession, strNomTable);
                    if (result && result.Data != null)
                    {
                        DataSet dataSource = result.Data as DataSet;
                        result = UpdateDatabase(strChaineDeConnexion, strNomTable, dataSource);
                    }
                    session.CloseSession();
                }
            }
            if (!result)
            {
                Console.WriteLine(result.MessageErreur);
            }
            //Console.ReadKey();
        }
Exemplo n.º 12
0
        /// <summary>
        /// Le data du result contient la session
        /// </summary>
        /// <returns></returns>
        protected virtual CResultAErreur OpenSession( )
        {
            CResultAErreur result  = CResultAErreur.True;
            CSessionClient session = CSessionClient.CreateInstance();

            result = session.OpenSession(new CAuthentificationSessionSousSession(0), I.T("Web Session @1|30001", DynamicClassAttribute.GetNomConvivial(GetType())), ETypeApplicationCliente.Service);
            if (result)
            {
                result.Data = session;
            }
            return(result);
        }
Exemplo n.º 13
0
        //---------------------------------------------------------------------------
        public System.Data.DataSet OpenSession()
        {
            CSessionClient session = CSessionClient.CreateInstance();
            CResultAErreur result  = session.OpenSession(new CAuthentificationSessionSousSession(0), "Tiag", ETypeApplicationCliente.Service);

            if (!result)
            {
                return(GetResultDS(result));
            }
            CResultDataSet resDS = new CResultDataSet();

            CInfoSessionTiag.OnCreateSession(session);
            resDS.Data = session.IdSession;
            return(resDS);
        }
Exemplo n.º 14
0
        public static CResultAErreur TryAuthentificationAD()
        {
            CResultAErreur result  = CResultAErreur.True;
            IIdentity      id      = GetIdentiteAD();
            CSessionClient session = CSessionClient.CreateInstance();

            result = session.OpenSession(new CAuthentificationSessionTimosAD(id, new CParametresLicence(GetIdsSupportAmovibles(), GetMACs())));
            if (result)
            {
                CTimosApp.SessionClient = session;
            }
            else
            {
                result.EmpileErreur(I.T("Incorrect AD user|30020"));
            }

            return(result);
        }
Exemplo n.º 15
0
        public static CResultAErreur TryAuthentification(string strLogin, string strMdp)
        {
            CResultAErreur result  = CResultAErreur.True;
            CSessionClient session = CSessionClient.CreateInstance();

            result = session.OpenSession(new CAuthentificationSessionTimosLoginPwd(strLogin, strMdp, new CParametresLicence(GetIdsSupportAmovibles(), GetMACs())));

            if (result)
            {
                CTimosApp.SessionClient = session;
            }
            else
            {
                result.EmpileErreur(I.T("Login or password identification error|10092"));
            }

            return(result);
        }
Exemplo n.º 16
0
        public static void AssureInit()
        {
            CResultAErreur result = CResultAErreur.True;

            if (m_sessionClient == null)
            {
                result = CInitialiseurClientTimos.InitClientTimos(new CSpvTestRegistre());
                if (!result)
                {
                    throw new Exception(result.Erreur.ToString());
                }
                m_sessionClient = CSessionClient.CreateInstance();
                result          = m_sessionClient.OpenSession(new CAuthentificationSessionServiceClient());
                if (!result)
                {
                    throw new Exception(result.Erreur.ToString());
                }
            }
        }
Exemplo n.º 17
0
 public CSnmpProxyConfiguration GetConfigurationDeProxy(int nIdProxy)
 {
     using (CSessionClient session = CSessionClient.CreateInstance())
     {
         CResultAErreur result = session.OpenSession(new CAuthentificationSessionProcess());
         if (!result)
         {
             return(null);
         }
         using (CContexteDonnee ctx = new CContexteDonnee(session.IdSession, true, false))
         {
             CSnmpProxyInDb proxy = new CSnmpProxyInDb(ctx);
             if (proxy.ReadIfExists(nIdProxy))
             {
                 return(proxy.GetConfiguration());
             }
         }
     }
     return(null);
 }
Exemplo n.º 18
0
 //------------------------------------------------------------------------
 private void AssureSession()
 {
     //S'assure de la validité de la session
     if (m_session != null && !m_session.IsConnected)
     {
         m_session.CloseSession();
         m_session.Dispose();
         m_session = null;
     }
     if (m_session == null)
     {
         m_session = CSessionClient.CreateInstance();
         CResultAErreur result = m_session.OpenSession(new CAuthentificationSessionProcess(), "Steps looper",
                                                       ETypeApplicationCliente.Service);
         if (!result)
         {
             //C2iEventLog.WriteErreur("DEBUG_TODO - AssureSession() - Failed to create Step session looper" + Environment.NewLine + result.MessageErreur);
             m_session = null;
         }
     }
 }
Exemplo n.º 19
0
        //----------------------------------------------------
        private CResultAErreur AssureSessionPolling()
        {
            CResultAErreur resErreur = CResultAErreur.True;

            System.Threading.Thread.CurrentThread.Priority = System.Threading.ThreadPriority.Lowest;
            if (m_sessionPolling == null || !m_sessionPolling.IsConnected)
            {
                m_sessionPolling = CSessionClient.CreateInstance();
                resErreur        = m_sessionPolling.OpenSession(new CAuthentificationSessionServer(),
                                                                "Snmp polling manager",
                                                                ETypeApplicationCliente.Service);
                if (!resErreur)
                {
                    resErreur.EmpileErreur(resErreur.Erreur);
                    C2iEventLog.WriteErreur("Error while open snmp polling management");
                    resErreur.EmpileErreur("Error while open snmp polling management");
                    return(resErreur);
                }
            }

            return(resErreur);
        }
Exemplo n.º 20
0
 public static void OnTimerGestionAuto(object state)
 {
     if (m_bGestionAutoEnCours)
     {
         return;
     }
     try
     {
         m_bGestionAutoEnCours = true;
         CSessionClient session = CSessionClient.CreateInstance();
         CResultAErreur result  = session.OpenSession(new CAuthentificationSessionServer(),
                                                      I.T("Automatic management of the diary states|314"),
                                                      ETypeApplicationCliente.Service);
         if (!result)
         {
             result.EmpileErreur(I.T("Error in the automatic management of expiration dates: Impossible to open a session|315"));
             C2iEventLog.WriteErreur(result.Erreur.ToString());
             return;
         }
         try
         {
             using (CContexteDonnee contexte = new CContexteDonnee(session.IdSession, true, false))
             {
                 DateTime            dt    = DateTime.Now;
                 CListeObjetsDonnees liste = new CListeObjetsDonnees(contexte, typeof(CEntreeAgenda));
                 liste.Filtre = new CFiltreData(
                     CEntreeAgenda.c_champEtatAutomatique + "=@1 and " +
                     CEntreeAgenda.c_champEtat + "<>@2 and " + CEntreeAgenda.c_champEtat + "<>@3 and (" +
                     "(" +
                     CEntreeAgenda.c_champDateDebut + "< @4 and " +
                     CEntreeAgenda.c_champDateFin + ">@4 and " +
                     CEntreeAgenda.c_champEtat + "<>@5) or (" +
                     CEntreeAgenda.c_champDateFin + "<@4 and " +
                     CEntreeAgenda.c_champEtat + "<@6) )",
                     true,
                     (int)EtatEntreeAgenda.Info,
                     (int)EtatEntreeAgenda.Annulee,
                     //dt.ToString("dd/MM/yyyy HH:mm:00"),
                     dt,
                     (int)EtatEntreeAgenda.EnCours,
                     (int)EtatEntreeAgenda.Terminee);
                 foreach (CEntreeAgenda entree in liste)
                 {
                     entree.EtatAuto = false;
                     if (entree.DateDebut < dt && entree.DateFin > dt)
                     {
                         entree.CodeEtatInt = (int)EtatEntreeAgenda.EnCours;
                     }
                     if (entree.DateFin < dt)
                     {
                         entree.CodeEtatInt = (int)EtatEntreeAgenda.Terminee;
                     }
                     entree.EtatAuto = true;
                 }
                 result = contexte.SaveAll(true);
                 if (!result)
                 {
                     result.EmpileErreur(I.T("AError in the automatic management of expiration dates:Error during backup operation|316"));
                     C2iEventLog.WriteErreur(result.Erreur.ToString());
                     return;
                 }
             }
         }
         finally
         {
             session.CloseSession();
         }
     }
     finally
     {
         m_bGestionAutoEnCours = false;
     }
 }
Exemplo n.º 21
0
        //----------------------------------------------------------------------------------
        /// <summary>
        ///
        /// </summary>
        /// <param name="target"></param>
        public static void OnTimerTraitement(object target)
        {
            CResultAErreur result = CResultAErreur.True;

            TimeSpan ts = DateTime.Now - m_lastDateDebutTraitementShort;

            if (m_bTraitementEnCours)
            {
                if (ts.TotalMinutes < 5)
                {
                    return;
                }
                else
                {
                    C2iEventLog.WriteErreur("CCamusatQowisioDataServeur : data processing >= 5 minutes");
                    return;
                }
            }

            m_bTraitementEnCours           = true;
            m_lastDateDebutTraitementShort = DateTime.Now;

            // Determine le mode du traitement SHORT/MEDIUM/FULL
            EModeTraitment modeTraitement = EModeTraitment.SHORT;

            ts = DateTime.Now - m_lastDateDebutTraitementMedium;
            if (ts.TotalMilliseconds >= c_nDelaiTraitementMedium)
            {
                modeTraitement = modeTraitement | EModeTraitment.MEDIUM;
                m_lastDateDebutTraitementMedium = DateTime.Now;
            }
            ts = DateTime.Now - m_lastDateDebutTraitementMedium;
            if (ts.TotalMilliseconds >= c_nDelaiTraitementFull)
            {
                modeTraitement = modeTraitement | EModeTraitment.FULL;
                m_lastDateDebutTraitementFull = DateTime.Now;
            }

            try
            {
                System.Threading.Thread.CurrentThread.Priority = System.Threading.ThreadPriority.Lowest;
                try
                {
                    m_sessionClient = CSessionClient.CreateInstance();
                    result          = m_sessionClient.OpenSession(new CAuthentificationSessionServer(),
                                                                  "Qowisio XML data processing",
                                                                  ETypeApplicationCliente.Service);
                    if (!result)
                    {
                        C2iEventLog.WriteErreur("Working session openning error for CCamusatQowisioDataServeur");
                        return;
                    }

                    try
                    {
                        //Récupère les fichiers FTP
                        string strFTPserver         = CCamusatQowisioServeurRegistre.FTPServer;
                        string strFTPuser           = CCamusatQowisioServeurRegistre.FTPUser;
                        string strFTPpassword       = CCamusatQowisioServeurRegistre.FTPPassword;
                        int    nFTPport             = CCamusatQowisioServeurRegistre.FTPPort;
                        string strIncomingDirectory = CCamusatQowisioServeurRegistre.FTPIncomingDirectory;

                        List <string> listeFichiersATraiter = new List <string>();
                        ArrayList     listFiles             = null;

                        string strLastFile = new CDataBaseRegistrePourClient(m_sessionClient.IdSession).GetValeurString(c_strCleDernierFichierTraité, "");

                        Sftp ftp = new Sftp(strFTPserver, strFTPuser, strFTPpassword);
                        try
                        {
                            ftp.Connect(); /* Open the FTP connection */


                            listFiles = ftp.GetFileList(strIncomingDirectory);
                            listFiles.Sort();
                            listFiles.Reverse();

                            /*
                             *                              // constitue la liste des fichiers à traiter
                             *                              listFiles.AddRange(ftp.GetFiles());
                             *                              listFiles.Sort(new CFtpFileInfoComparer());
                             *                              listFiles.Reverse();*/

                            foreach (string strFtpFile in listFiles)
                            {
                                if (strFtpFile.CompareTo(strLastFile) <= 0)
                                {
                                    break;
                                }
                                string strWorkFile = WorkDir + "\\" + strFtpFile;
                                if (strFtpFile.ToUpper().EndsWith("XML"))
                                {
                                    if (!File.Exists(strWorkFile))
                                    {
                                        ftp.Get(strIncomingDirectory + "/" + strFtpFile, strWorkFile);
                                        //ftp.GetFile(fileInfo.Name, strWorkFile, false); /* download /incoming/file.txt as file.txt to current executing directory, overwrite if it exists */
                                        //ftp.RemoveFile(fileInfo.Name);
                                    }
                                    listeFichiersATraiter.Insert(0, strFtpFile);
                                }
                            }
                            if (listeFichiersATraiter.Count > 0)
                            {
                                new CDataBaseRegistrePourClient(m_sessionClient.IdSession).SetValeur(c_strCleDernierFichierTraité, listeFichiersATraiter[listeFichiersATraiter.Count - 1]);
                            }


                            ftp.Close();
                        }
                        catch (Exception ex)
                        {
                            C2iEventLog.WriteErreur("CCamusatQowisioDataServeur error openning FTP connection: " + ex.Message);
                        }
                        finally
                        {
                            ftp.Close();
                        }

                        // Traite la liste des fichiers à traiter
                        using (CContexteDonnee contexte = new CContexteDonnee(m_sessionClient.IdSession, true, false))
                        {
                            List <string> lstFichiersWork = new List <string>(Directory.GetFiles(WorkDir, "*.xml"));
                            lstFichiersWork.Sort();

                            //CCamusatQowisioDataServeur serveur = new CCamusatQowisioDataServeur(m_sessionClient.IdSession);
                            foreach (string strWorkFile in lstFichiersWork)
                            {
                                try
                                {
                                    string strNomFichier = Path.GetFileName(strWorkFile);

                                    // Traitement d'un fichier XML
                                    result = TraiteFichierQowisio(strWorkFile, contexte, modeTraitement);
                                    string strArchive = DoneDir + "\\" + strNomFichier;
                                    if (result)
                                    {
                                        MoveSafely(strWorkFile, ref strArchive);
                                    }
                                    else
                                    {
                                        strArchive = ErrorDir + "\\" + strNomFichier;
                                        MoveSafely(strWorkFile, ref strArchive);
                                        FileStream   stream = new FileStream(strArchive + ".Err", FileMode.CreateNew, FileAccess.Write);
                                        StreamWriter writer = new StreamWriter(stream);
                                        writer.Write(result.MessageErreur);
                                        writer.Close();
                                        stream.Close();
                                    }
                                }
                                catch (Exception e)
                                {
                                    C2iEventLog.WriteErreur("CCamusatQowisioDataServeur error while processing file : " + strWorkFile + " - " + e.Message);
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        C2iEventLog.WriteErreur("CCamusatQowisioDataServeur error processing files : " + ex.Message);
                    }
                    finally
                    {
                        try
                        {
                            m_sessionClient.CloseSession();
                        }
                        catch { }
                    }
                }
                catch (Exception e)
                {
                    C2iEventLog.WriteErreur("CCamusatQowisioDataServeur error in OnTimerTraitement : " + e.Message);
                }
            }
            catch (Exception ex)
            {
                C2iEventLog.WriteErreur("CCamusatQowisioDataServeur error in OnTimerTraitement : " + ex.Message);
            }
            finally
            {
                m_bTraitementEnCours = false;
            }
        }
Exemplo n.º 22
0
        public static void Demasque()
        {
            int c_nAttente     = 500;                   // 500 ms d'attente dans la boucle
            int nNbToursBoucle = 1800000 / c_nAttente;  // Nb de tours de boucle pour 1/2h d'attente

            Thread.Sleep(50000);

            CSessionClient session = CSessionClient.CreateInstance();

            session.OpenSession(new CAuthentificationSessionServer(), "Unmask alarms", ETypeApplicationCliente.Service);


            IDatabaseConnexion connexion = CSc2iDataServer.GetInstance().GetDatabaseConnexion(session.IdSession, CSpvServeur.c_spvConnection);
            string             stSQL     = "Begin MaskModified; end;";
            CResultAErreur     result;
            int nErreur1 = 0, nErreur2 = 0;

            while (true)
            {
                // Démasquage
                result = CResultAErreur.True;
                try
                {
                    // Démasquage
                    result += connexion.BeginTrans();
                    if (result)
                    {
                        result += connexion.ExecuteScalar(stSQL);
                    }

                    if (result)
                    {
                        result += connexion.CommitTrans();
                    }
                    else
                    {
                        connexion.RollbackTrans();
                    }
                }
                catch (Exception e)
                {
                    result.EmpileErreur(e.Message);
                }

                if (!result)
                {
                    if (nErreur1 == 0)
                    {
                        C2iEventLog.WriteErreur(I.T("Problem with unmasking alarms automatically|50000"));
                        nErreur1++;
                    }
                }

                // Pour ne pas trop encombrer les événements windows
                if (nErreur1 > 0)
                {
                    nErreur1++;
                }
                else if (nErreur1 > nNbToursBoucle) // Equipvaut à 1/2 heure
                {
                    nErreur1 = 0;
                }

                // Démasquage alarmes filles (traitement déconnecté du précédent)
                try
                {
                    result = connexion.BeginTrans();
                    if (result)
                    {
                        result += connexion.ExecuteScalar("DELETE " + CSpvFinalarm.c_nomTableInDb);
                    }

                    if (result)
                    {
                        result += connexion.CommitTrans();
                    }
                    else
                    {
                        connexion.RollbackTrans();
                    }
                }
                catch (Exception e)
                {
                    result.EmpileErreur(e.Message);
                }

                if (!result)
                {
                    if (nErreur2 == 0)
                    {
                        C2iEventLog.WriteErreur(I.T("Problem with unmasking child alarms automatically|50001"));
                        nErreur2++;
                    }
                }

                // Pour ne pas trop encombrer les événements windows
                if (nErreur2 > 0)
                {
                    nErreur2++;
                }
                else if (nErreur2 > nNbToursBoucle) // Equipvaut à 1/2 heure
                {
                    nErreur2 = 0;
                }

                if (C2iStopApp.AppStopper.WaitOne(c_nAttente, false))
                {
                    break;
                }
            }
        }
Exemplo n.º 23
0
        /// //////////////////////////////////////////////////
        ///Démarre une étape.
        ///Attention, un étape ne peut démarrer que si elle n'est pas déjà démarrée
        public void RunEtape(int nIdSessionMain, int nIdEtape)
        {
            CResultAErreur result  = CResultAErreur.True;
            CDbKey         keyUser = null;
            //Attend la fin des transactions en cours pour la session principale
            IDatabaseConnexion cnx = null;

            do
            {
                CSessionClient session = CSessionClient.GetSessionForIdSession(IdSession);
                if (session != null && session.IsConnected)
                {
                    IInfoUtilisateur info = session.GetInfoUtilisateur();
                    //TESTDBKEYTODO
                    if (info != null)
                    {
                        keyUser = info.KeyUtilisateur;
                    }
                    try
                    {
                        cnx = CSc2iDataServer.GetInstance().GetDatabaseConnexion(IdSession, typeof(CEtapeWorkflow));
                    }
                    catch //En cas d'erreur, c'est probablement que la session a été fermée, du coup, on peut y aller !
                    {
                        cnx = null;
                    }
                    System.Threading.Thread.Sleep(50);
                }
                else
                {
                    cnx = null;
                }
            }while (cnx != null && cnx.IsInTrans());
            lock (typeof(CLockerStartEtape))//S'assure que deux étapes ne démarrent pas en même temps !
            {
                List <CDonneeNotificationWorkflow> lstNotifications = new List <CDonneeNotificationWorkflow>();

                CAuthentificationSessionProcess auth = new CAuthentificationSessionProcess();

                using (CSessionClient sousSession = CSessionClient.CreateInstance())
                {
                    try
                    {
                        Console.WriteLine("Thread : " + System.Diagnostics.Process.GetCurrentProcess().Threads.Count);
                        sousSession.OpenSession(auth, "Workflow step " + nIdEtape, ETypeApplicationCliente.Process);
                        //TESTDBKEYTODO
                        if (keyUser != null)
                        {
                            sousSession.ChangeUtilisateur(keyUser);
                        }
                        using (CContexteDonnee ctx = new CContexteDonnee(sousSession.IdSession, true, true))
                        {
                            CEtapeWorkflow etape   = new CEtapeWorkflow(ctx);
                            int            nWaiter = 10;
                            while (!etape.ReadIfExists(nIdEtape) && nWaiter > 0)
                            {
                                //On ne trouve pas l'étape, c'est peut être que l'écriture en base n'est pas completement terminée
                                //On va retenter toutes les 2 secondes pendant 20 secondes, si elle n'existe jamais,
                                //c'est qu'il y a eu suppression (ou au moins non commit).
                                nWaiter--;
                                Thread.Sleep(2000);
                            }
                            if (etape.ReadIfExists(nIdEtape))
                            {
                                result         = etape.InternalSetInfosDemarrageInCurrentContext();
                                etape.EtatCode = (int)EEtatEtapeWorkflow.Démarrée;
                                result         = ctx.SaveAll(true);
                                if (result)
                                {
                                    result = etape.InternalRunAndSaveifOk();
                                }
                                if (result && etape.CodeAffectations.Length > 0 && etape.DateFin == null)
                                {
                                    CDonneeNotificationWorkflow donneeWorkflow = new CDonneeNotificationWorkflow(
                                        nIdSessionMain,
                                        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);
                                }
                                if (!result)
                                {
                                    NoteErreurSurEtape(etape, result.Erreur.ToString());
                                    return;
                                }
                            }
                        }
                    }
                    catch (Exception e)
                    {
                    }
                    finally
                    {
                        sousSession.CloseSession();
                    }
                }
                if (lstNotifications != null)
                {
                    CEnvoyeurNotification.EnvoieNotifications(lstNotifications.ToArray());
                }
            }
        }
        private static void OnTachePlanifiee(object state)
        {
            if (m_bTraitementEnCours || m_bIsSuspended)
            {
                return;
            }
            m_bTraitementEnCours = true;
            try
            {
                //La session dévolue aux tâches planifiées est fermée régulierement pour
                //Eviter des problèmes de déconnexion (qui ne sont jamais arrivés, mais
                //on ne sait jamais ).
                if (m_sessionClient == null || !m_sessionClient.IsConnected || m_sessionClient.DateHeureConnexion.AddDays(1) < DateTime.Now)
                {
                    if (m_sessionClient != null)
                    {
                        try
                        {
                            m_sessionClient.CloseSession();
                        }
                        catch
                        {
                        }
                    }

                    //Ouvre une session pour executer l'action
                    m_sessionClient = CSessionClient.CreateInstance();
                    CResultAErreur result = m_sessionClient.OpenSession(new CAuthentificationSessionServer(),
                                                                        "Evenements sur date",
                                                                        ETypeApplicationCliente.Service);
                    if (!result)
                    {
                        C2iEventLog.WriteErreur("Erreur ouverture de session pour Evenements sur date");
                        return;
                    }
                }
                try
                {
                    using (CContexteDonnee contexte = new CContexteDonnee(m_sessionClient.IdSession, true, false))
                    {
                        CListeObjetsDonnees liste = new CListeObjetsDonnees(contexte, typeof(CHandlerEvenement));
                        liste.Filtre = new CFiltreData(CHandlerEvenement.c_champDateHeureDeclenchement + " < @1 and " +
                                                       CHandlerEvenement.c_champEtatExecution + "=@2",
                                                       DateTime.Now,
                                                       (int)EtatHandlerAction.AExecuter
                                                       );
                        foreach (CHandlerEvenement handler in liste)
                        {
                            CResultAErreur result           = CResultAErreur.True;
                            C2iExpression  formuleCondition = handler.FormuleCondition;
                            bool           bShouldDeclenche = false;
                            CContexteEvaluationExpression ctxEval;
                            ctxEval = new CContexteEvaluationExpression(handler.ElementSurveille);
                            if (formuleCondition != null)
                            {
                                result = formuleCondition.Eval(ctxEval);
                                if (!result)
                                {
                                    bShouldDeclenche = false;
                                    C2iEventLog.WriteErreur("Erreur déclenchement handler " + handler.Id + " : erreur lors de l'évaluation de la condition");
                                }
                                else
                                {
                                    if (result.Data is bool)
                                    {
                                        bShouldDeclenche = (bool)result.Data;
                                    }
                                    else
                                    {
                                        bShouldDeclenche = result.Data != null && result.Data.ToString() != "" && result.Data.ToString() != "0";
                                    }
                                }
                            }
                            if (bShouldDeclenche)
                            {
                                if (handler.EvenementLie != null)
                                {
                                    CInfoDeclencheurProcess infoDeclencheur = new CInfoDeclencheurProcess();
                                    infoDeclencheur.TypeDeclencheur = TypeEvenement.Date;
                                    infoDeclencheur.Info            = handler.EvenementLie.Libelle;
                                    result = handler.EvenementLie.RunEvent(handler.ElementSurveille, infoDeclencheur, null);
                                }
                                else if (handler.ProcessSource != null)
                                {
                                    result = handler.RunEvent(
                                        false,
                                        handler.ElementSurveille,
                                        new CInfoDeclencheurProcess(TypeEvenement.Date),
                                        null);
                                }
                                else if (handler.EtapeWorkflowATerminer != null)
                                {
                                    result = handler.RunEvent(
                                        false,
                                        handler.ElementSurveille,
                                        new CInfoDeclencheurProcess(TypeEvenement.Date),
                                        null);
                                }
                            }
                            handler.EndHandler(result);
                        }
                    }
                }
                catch (Exception e)
                {
                    C2iEventLog.WriteErreur("Erreur Taches planifiées " + e.ToString());
                }
                finally
                {
                }
            }
            finally
            {
                m_bTraitementEnCours = false;
            }
        }
Exemplo n.º 25
0
        private static void OnRetrieveMails(object state)
        {
            if (m_bTraitementEnCours)
                return;
            m_bTraitementEnCours = true;

            try
            {
                System.Threading.Thread.CurrentThread.Priority = System.Threading.ThreadPriority.Lowest;
                CResultAErreur result;
                if (m_sessionRecherche == null || !m_sessionRecherche.IsConnected)
                {
                    m_sessionRecherche = CSessionClient.CreateInstance();
                    result = m_sessionRecherche.OpenSession(new CAuthentificationSessionServer(),
                        I.T("MAIL ACCOUNT SERVICE|10001"),
                        ETypeApplicationCliente.Service);
                    if (!result)
                    {
                        C2iEventLog.WriteErreur(I.T("Session Opening error for Mail Account Management Service|10003"));
                        return;
                    }
                }
                try
                {
                    CFiltreData filtre = new CFiltreData(
                        CCompteMail.c_champIsActive + " = @1",
                        true);
                    if (new CCompteMailServeur(m_sessionRecherche.IdSession).CountRecords(
                        CCompteMail.c_nomTable, filtre) > 0)
                    {
                        CSessionClient sessionTravail = new CSessionProcessServeurSuivi();
                        result = sessionTravail.OpenSession(new CAuthentificationSessionServer(),
                            I.T("RECEIVE MAILS SERVICE|10004"),
                            ETypeApplicationCliente.Service);
                        if (!result)
                        {
                            C2iEventLog.WriteErreur(I.T("Working session openning error for Receive Mails Service|10005"));
                            return;
                        }
                        try
                        {
                            using (CContexteDonnee contexteTravail = new CContexteDonnee(sessionTravail.IdSession, true, false))
                            {
                                //CCompteMailServeur compteServeur = new CCompteMailServeur(sessionTravail.IdSession);
                                CListeObjetsDonnees liste = new CListeObjetsDonnees(contexteTravail, typeof(CCompteMail));
                                liste.Filtre = filtre;
                                ArrayList lstLock = liste.ToArrayList();

                                foreach (CCompteMail compteMail in lstLock)
                                {
                                    if (compteMail.DateDernierReleve == null ||
                                        compteMail.DateDernierReleve.Value.AddMinutes(compteMail.PeriodeReleve) < DateTime.Now)
                                    {
                                        result += compteMail.RetrieveMails();
                                    }
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            C2iEventLog.WriteErreur(I.T("Error while receiving Mail : @1|10006", e.ToString()));
                        }
                        finally
                        {
                            try
                            {
                                sessionTravail.CloseSession();
                            }
                            catch { }
                        }
                    }
                }
                catch (Exception e)
                {
                    C2iEventLog.WriteErreur(I.T("Error while receiving Mail : @1|10006", e.ToString()));
                }
            }
            catch (Exception e)
            {
                {
                    C2iEventLog.WriteErreur(I.T("Error while receiving Mail : @1|10006", e.ToString()));
                }
            }
            finally
            {
                m_bTraitementEnCours = false;
            }
        }
Exemplo n.º 26
0
        private static void OnSendSMS(object state)
        {
            if (m_bTraitementEnCours)
            {
                return;
            }
            m_bTraitementEnCours = true;

            try
            {
                System.Threading.Thread.CurrentThread.Priority = System.Threading.ThreadPriority.Lowest;
                CResultAErreur result;
                if (m_sessionRecherche == null || !m_sessionRecherche.IsConnected)
                {
                    m_sessionRecherche = CSessionClient.CreateInstance();
                    result             = m_sessionRecherche.OpenSession(new CAuthentificationSessionServer(),
                                                                        I.T("SMS SERVICE|20159"),
                                                                        ETypeApplicationCliente.Service);
                    if (!result)
                    {
                        C2iEventLog.WriteErreur(I.T("Session Opening error for SMS Service|20160"));
                        return;
                    }
                }
                try
                {
                    CFiltreData filtre = new CFiltreData(CMessageSMS.c_champNextSendDate + " < @1 and " +
                                                         CMessageSMS.c_champDateEnvoi + " is null and " +
                                                         CMessageSMS.c_champNbEssais + " < 10",
                                                         DateTime.Now
                                                         );
                    if (new CMessageSMSServeur(m_sessionRecherche.IdSession).CountRecords(
                            CMessageSMS.c_nomTable, filtre) > 0)
                    {
                        CSessionClient sessionTravail = new CSessionProcessServeurSuivi();
                        result = sessionTravail.OpenSession(new CAuthentificationSessionProcess(),
                                                            I.T("Send SMS|20161"),
                                                            ETypeApplicationCliente.Service);
                        if (!result)
                        {
                            C2iEventLog.WriteErreur(I.T("Working session openning error for SMS send|20162"));
                            return;
                        }
                        try
                        {
                            using (CContexteDonnee contexteTravail = new CContexteDonnee(sessionTravail.IdSession, true, false))
                            {
                                CMessageSMSServeur  serveur = new CMessageSMSServeur(sessionTravail.IdSession);
                                CListeObjetsDonnees liste   = new CListeObjetsDonnees(contexteTravail, typeof(CMessageSMS));
                                liste.Filtre = filtre;
                                ArrayList lstLock = liste.ToArrayList();

                                foreach (CMessageSMS message in lstLock)
                                {
                                    CMessageSMSPourEnvoi toSend = new CMessageSMSPourEnvoi(message.Destinataires, message.Texte);
                                    result = toSend.Send(sessionTravail.IdSession);
                                    message.BeginEdit();
                                    if (!result)
                                    {
                                        message.NextSendDate = DateTime.Now.AddMinutes(3);
                                        message.NbEssais++;
                                        message.LastErreur = result.Erreur.ToString();
                                    }
                                    else
                                    {
                                        message.DateEnvoi  = DateTime.Now;
                                        message.LastErreur = "";
                                    }
                                    message.CommitEdit();

                                    result.SetTrue();
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            C2iEventLog.WriteErreur(I.T("Error while sendind SMS : @1|20163", e.ToString()));
                        }
                        finally
                        {
                            try
                            {
                                sessionTravail.CloseSession();
                            }
                            catch { }
                        }
                    }
                }
                catch (Exception e)
                {
                    C2iEventLog.WriteErreur(I.T("Error while sendind SMS : @1|20163", e.ToString()));
                }
            }
            catch (Exception e)
            {
                {
                    C2iEventLog.WriteErreur(I.T("Error while sendind SMS : @1|20163", e.ToString()));
                }
            }
            finally
            {
                m_bTraitementEnCours = false;
            }
        }
Exemplo n.º 27
0
        private static void OnTachePlanifiee(object state)
        {
            //14/12/2010 : si un traitement est en cours depuis plus de 24H, lance d'autres traitements
            TimeSpan sp = DateTime.Now - m_lastDateDebutTraitement;

            if (m_bTraitementEnCours && sp.TotalHours < 24)
            {
                return;
            }
            m_bTraitementEnCours      = true;
            m_lastDateDebutTraitement = DateTime.Now;
            try
            {
                System.Threading.Thread.CurrentThread.Priority = System.Threading.ThreadPriority.Lowest;
                CResultAErreur result;
                if (m_sessionRecherche == null || !m_sessionRecherche.IsConnected)
                {
                    m_sessionRecherche = CSessionClient.CreateInstance();
                    result             = m_sessionRecherche.OpenSession(new CAuthentificationSessionServer(),
                                                                        I.T("Search of planned tasks|332"),
                                                                        ETypeApplicationCliente.Service);
                    if (!result)
                    {
                        C2iEventLog.WriteErreur(I.T("Session Opening error for planned tasks|333"));
                        return;
                    }
                }
                try
                {
                    CFiltreData filtre = new CFiltreData(CTachePlanifiee.c_champProchaineExecution + " < @1 and " +
                                                         CTachePlanifiee.c_champBloquer + "=@2",
                                                         DateTime.Now,
                                                         false
                                                         );
                    if (new CTachePlanifieeServeur(m_sessionRecherche.IdSession).CountRecords(
                            CTachePlanifiee.c_nomTable, filtre) > 0)
                    {
                        CSessionClient sessionTravail = new CSessionProcessServeurSuivi();
                        result = sessionTravail.OpenSession(new CAuthentificationSessionProcess(),
                                                            I.T("Planned Tasks execution|334"),
                                                            ETypeApplicationCliente.Service);
                        if (!result)
                        {
                            C2iEventLog.WriteErreur(I.T("Working session openning error for Planned Tasks|335"));
                            return;
                        }
                        try
                        {
                            using (CContexteDonnee contexteTravail = new CContexteDonnee(sessionTravail.IdSession, true, false))
                            {
                                CTachePlanifieeServeur serveur = new CTachePlanifieeServeur(sessionTravail.IdSession);
                                CListeObjetsDonnees    liste   = new CListeObjetsDonnees(contexteTravail, typeof(CTachePlanifiee));
                                liste.Filtre = filtre;

                                foreach (CTachePlanifiee tache in liste)
                                {
                                    CInfoDeclencheurProcess infoDeclencheur = new CInfoDeclencheurProcess(TypeEvenement.Date);
                                    try
                                    {
                                        serveur.ExecuteTache(tache.Id, null);
                                    }
                                    catch (Exception e)
                                    {
                                        string strLibelle = I.T("Error planned task @1|336", tache.Libelle) + Environment.NewLine;
                                        strLibelle += e.ToString();
                                        C2iEventLog.WriteErreur(strLibelle);
                                    }
                                    tache.BeginEdit();
                                    CDateTimeEx dt = tache.ParametrePlanification.GetNextOccurence(tache.DateProchaineExecution, false);
                                    while (dt != null && (DateTime)dt < DateTime.Now)
                                    {
                                        dt = tache.ParametrePlanification.GetNextOccurence(dt, false);
                                    }
                                    tache.DateProchaineExecution = dt;
                                    tache.CommitEdit();
                                    //Ouvre une session pour chaque tâche. Comme ça s'il y a une erreur sur une tâche,
                                    //les autres ne peuvent pas être impactées
                                    sessionTravail.CloseSession();
                                    result = sessionTravail.OpenSession(new CAuthentificationSessionProcess(),
                                                                        I.T("Planned Tasks execution|334"),
                                                                        ETypeApplicationCliente.Service);
                                    if (!result)
                                    {
                                        throw new CExceptionErreur(result.Erreur);
                                    }
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            C2iEventLog.WriteErreur(I.T("Error in planned tasks : @1|337", e.ToString()));
                        }
                        finally
                        {
                            try
                            {
                                sessionTravail.CloseSession();
                            }
                            catch { }
                        }
                    }
                }
                catch (Exception e)
                {
                    C2iEventLog.WriteErreur(I.T("Error in planned tasks : @1|337", e.ToString()));
                }
            }
            catch (Exception e)
            {
                {
                    C2iEventLog.WriteErreur(I.T("Error in planned tasks : @1|337", e.ToString()));
                }
            }
            finally
            {
                m_bTraitementEnCours = false;
            }
        }
Exemplo n.º 28
0
        //----------------------------------------------------------------------------------------------------
        public IDonneeSynchronisationMediation GetUpdatesForProxy(int nIdProxy, int nIdLastSyncSession)
        {
            using (CSessionClient session = CSessionClient.CreateInstance())
            {
                CResultAErreur result = session.OpenSession(new CAuthentificationSessionProcess());
                if (!result)
                {
                    return(null);
                }
                using (CContexteDonneesSynchro ctx = new CContexteDonneesSynchro(session.IdSession, true))
                {
                    CSc2iDataServer connexionManager = CSc2iDataServer.GetInstance();

                    IDatabaseConnexionSynchronisable cnxSync = connexionManager.GetDatabaseConnexion(session.IdSession, typeof(CTypeAgentSnmpServeur)) as IDatabaseConnexionSynchronisable;
                    if (cnxSync == null)
                    {
                        return(null);
                    }
                    cnxSync.IncrementeSyncSession();
                    int nIdSyncMax = cnxSync.IdSyncSession - 1;

                    CFiltresSynchronisation filtres = new CFiltresSynchronisation();
                    filtres.AddFiltreForTable(CTypeAlarme.c_nomTable, null, false);
                    filtres.AddFiltreForTable(CSeveriteAlarme.c_nomTable, null, false);
                    filtres.AddFiltreForTable(CTypeAgentSnmp.c_nomTable, null, false);
                    filtres.AddFiltreForTable(CAgentSnmp.c_nomTable,
                                              new CFiltreData(CSnmpProxyInDb.c_champId + "=@1",
                                                              nIdProxy)
                                              , false);
                    filtres.AddFiltreForTable(CTypeEntiteSnmp.c_nomTable, null, false);
                    filtres.AddFiltreForTable(CEntiteSnmp.c_nomTable, new CFiltreDataAvance(
                                                  CEntiteSnmp.c_nomTable,
                                                  CAgentSnmp.c_nomTable + "." +
                                                  CSnmpProxyInDb.c_champId + "=@1",
                                                  nIdProxy), false);
                    filtres.AddFiltreForTable(CRelationTypeEntiteSnmp_ChampCustom.c_nomTable, null, false);
                    filtres.AddFiltreForTable(CRelationEntiteSnmp_ChampCustom.c_nomTable,
                                              new CFiltreDataAvance(CRelationEntiteSnmp_ChampCustom.c_nomTable,
                                                                    CEntiteSnmp.c_nomTable + "." +
                                                                    CAgentSnmp.c_nomTable + "." +
                                                                    CSnmpProxyInDb.c_champId + "=@1",
                                                                    nIdProxy), false);
                    // Prend uniquement les Filtrages d'alarme compris entre les dates de validité et marqués Enabled
                    filtres.AddFiltreForTable(CParametrageFiltrageAlarmes.c_nomTable,
                                              new CFiltreData(
                                                  CParametrageFiltrageAlarmes.c_champIsActif + " = @1 AND " +
                                                  CParametrageFiltrageAlarmes.c_champDateDebutValidite + " <= @2 AND " +
                                                  CParametrageFiltrageAlarmes.c_champDateFinValidite + " > @2",
                                                  true,
                                                  DateTime.Now.Date), false);
                    filtres.AddFiltreForTable(CCategorieMasquageAlarme.c_nomTable, null, false);
                    DateTime dt = DateTime.Now;
                    // Créer le MemoryDB
                    bool bHasData = false;
                    result = ctx.FillWithModifsFromVersion(nIdLastSyncSession, nIdSyncMax, ref bHasData, filtres, true);
                    if (!result)
                    {
                        return(null);
                    }
                    TimeSpan sp = DateTime.Now - dt;
                    Console.WriteLine("Lecture modifs médiation : " + sp.TotalMilliseconds);
                    dt = DateTime.Now;
                    CDonneesSynchronisationMediation donneesSynchro = new CDonneesSynchronisationMediation(
                        CMemoryDbPourSupervision.GetMemoryDb(ctx), nIdSyncMax);


                    CListeObjetsDonnees lstObjets = new CListeObjetsDonnees(ctx, typeof(CSeveriteAlarme));
                    lstObjets.InterditLectureInDB = true;
                    foreach (CSeveriteAlarme severite in lstObjets)
                    {
                        severite.GetTypeForSupervision(donneesSynchro.Database);
                    }

                    lstObjets = new CListeObjetsDonnees(ctx, typeof(CTypeAlarme));
                    lstObjets.InterditLectureInDB = true;
                    foreach (CTypeAlarme type in lstObjets)
                    {
                        type.GetTypeForSupervision(donneesSynchro.Database, true);
                    }

                    lstObjets = new CListeObjetsDonnees(ctx, typeof(CTypeAgentSnmp));
                    lstObjets.InterditLectureInDB = true;
                    lstObjets.ReadDependances("TypesEntites");
                    foreach (CTypeAgentSnmp type in lstObjets)
                    {
                        type.GetTypeAgentPourSupervision(donneesSynchro.Database);
                    }

                    lstObjets = new CListeObjetsDonnees(ctx, typeof(CAgentSnmp));
                    lstObjets.InterditLectureInDB = true;
                    lstObjets.ReadDependances("EntitesSnmp", "EntitesSnmp.RelationsChampsCustom",
                                              "EntitesSnmp.SiteSupervise",
                                              "EntitesSnmp.EquipementLogiqueSupervise",
                                              "EntitesSnmp.EquipementLogiqueSupervise.Site",
                                              "EntitesSnmp.LienReseauSupervise");
                    foreach (CAgentSnmp agent in lstObjets)
                    {
                        agent.GetAgentPourSupervision(donneesSynchro.Database, true);
                    }

                    lstObjets = new CListeObjetsDonnees(ctx, typeof(CParametrageFiltrageAlarmes));
                    lstObjets.InterditLectureInDB = true;
                    foreach (CParametrageFiltrageAlarmes parametreFiltre in lstObjets)
                    {
                        parametreFiltre.GetLocalParametrageForSupervision(donneesSynchro.Database);
                    }

                    lstObjets = new CListeObjetsDonnees(ctx, typeof(CCategorieMasquageAlarme));
                    lstObjets.InterditLectureInDB = true;
                    foreach (CCategorieMasquageAlarme categorie in lstObjets)
                    {
                        categorie.GetLocalCategorieForSupervision(donneesSynchro.Database);
                    }

                    //S'assure que les entités des valeurs de champ entité sont chargés
                    lstObjets = new CListeObjetsDonnees(ctx, typeof(CRelationEntiteSnmp_ChampCustom));
                    lstObjets.InterditLectureInDB = true;
                    foreach (CRelationEntiteSnmp_ChampCustom rel in lstObjets)
                    {
                        if (rel != null && rel.ElementAChamps != null)
                        {
                            ((CObjetDonnee)rel.ElementAChamps).AssureData();
                        }
                    }

                    lstObjets = new CListeObjetsDonnees(ctx, typeof(CEntiteSnmp));
                    lstObjets.InterditLectureInDB = true;
                    foreach (CEntiteSnmp entite in lstObjets)
                    {
                        CTypeEntiteSnmp typeEntite = entite.TypeEntiteSnmp;
                        futurocom.snmp.entitesnmp.CTypeEntiteSnmpPourSupervision te = typeEntite.GetTypeEntitePourSupervision(donneesSynchro.Database, true);
                        entite.GetEntitePourSupervision(te);
                    }

                    sp = DateTime.Now - dt;
                    Console.WriteLine("Intégration modifs médiation : " + sp.TotalMilliseconds);
                    return(donneesSynchro);
                }
            }
        }
Exemplo n.º 29
0
        public static void MonitorAlarmes()
        {
            int nCptWatchDogAlSyst = 0;

            Thread.Sleep(50000);
            CSessionClient session = CSessionClient.CreateInstance();

            session.OpenSession(new CAuthentificationSessionServer());

            while (true)
            {
                //Thread.Sleep(200);    // inhibition pour faciliter debug des autres objets
                //continue;
                nCptWatchDogAlSyst++;
                using (CContexteDonnee ctx = new CContexteDonnee(session.IdSession, true, true))
                {
                    CListeObjetsDonnees lst = new CListeObjetsDonnees(ctx, typeof(CSpvMessalrm));
                    if (lst.Count > 0)
                    {
                        List <CEvenementAlarm> lstAlarm = new List <CEvenementAlarm>();

                        StringBuilder bl = new StringBuilder();
                        foreach (CSpvMessalrm message in lst)
                        {
                            try
                            {
                                CEvenementAlarm eventAlarm = message.GetNewEvenementAlarm();
                                if (eventAlarm != null)
                                {
                                    lstAlarm.Add(eventAlarm);
                                }
                            }
                            catch (Exception e)
                            {
                                C2iEventLog.WriteErreur(e.Message);
                            }

                            bl.Append(message.Id);

                            bl.Append(',');
                        }
                        bl.Remove(bl.Length - 1, 1);

                        if (lstAlarm.Count > 0)
                        {
                            CDonneeNotificationAlarmes notif = new CDonneeNotificationAlarmes(session.IdSession, lstAlarm);
                            CEnvoyeurNotification.EnvoieNotifications(new IDonneeNotification[] { notif });
                        }

                        SendMailsDelegate sndMail = new SendMailsDelegate(SendMails);
                        sndMail.BeginInvoke(lstAlarm, ctx, null, null);

                        IDatabaseConnexion connexion = CSc2iDataServer.GetInstance().GetDatabaseConnexion(session.IdSession, CSpvServeur.c_spvConnection);
                        connexion.RunStatement("Delete from " + CSpvMessalrm.c_nomTableInDb + " where " +
                                               CSpvMessalrm.c_champMESSALRM_ID + " in (" + bl.ToString() + ")");

                        /* TimeSpan sp = DateTime.Now - dt;
                         * double fTime = sp.TotalMilliseconds;*/
                    }//if (lst.Count > 0)

                    if (nCptWatchDogAlSyst >= 200)  // vérification toutes les 20 secondes
                    {
                        nCptWatchDogAlSyst = 0;
                        IDatabaseConnexion cnx = CSc2iDataServer.GetInstance().GetDatabaseConnexion(session.IdSession, CSpvServeur.c_spvConnection);
                        cnx.RunStatement("begin WatchDog; end;");
                    }
                }

                if (C2iStopApp.AppStopper.WaitOne(100, false))
                {
                    break;
                }
            }
        }
Exemplo n.º 30
0
        /// //////////////////////////////////////////////////
        ///Lance le calcul
        public static void DoCalc(CElementsProjetARecalculer lstElements)
        {
            CResultAErreur result  = CResultAErreur.True;
            CDbKey         keyUser = null;
            //Attend la fin des transactions en cours pour la session principale
            IDatabaseConnexion cnx = null;

            do
            {
                CSessionClient session = CSessionClient.GetSessionForIdSession(lstElements.IdSession);
                if (session != null && session.IsConnected)
                {
                    IInfoUtilisateur info = session.GetInfoUtilisateur();
                    //TESTDBKEYOK
                    if (info != null)
                    {
                        keyUser = info.KeyUtilisateur;
                    }
                    try
                    {
                        cnx = CSc2iDataServer.GetInstance().GetDatabaseConnexion(lstElements.IdSession, typeof(CProjet));
                    }
                    catch //En cas d'erreur, c'est probablement que la session a été fermée, du coup, on peut y aller !
                    {
                        cnx = null;
                    }
                    System.Threading.Thread.Sleep(50);
                }
                else
                {
                    cnx = null;
                }
            }while (cnx != null && cnx.IsInTrans());
            lock (typeof(CLockerStartEtape))//S'assure que deux étapes ne démarrent pas en même temps !
            {
                CAuthentificationSessionProcess auth = new CAuthentificationSessionProcess();

                using (CSessionClient sousSession = CSessionClient.CreateInstance())
                {
                    try
                    {
                        sousSession.OpenSession(auth, "Projet asynchronous calc ", ETypeApplicationCliente.Process);
                        if (keyUser != null)
                        {
                            sousSession.ChangeUtilisateur(keyUser);
                        }
                        using (CContexteDonnee ctx = new CContexteDonnee(sousSession.IdSession, true, true))
                        {
                            SetModeCalculProjet(ctx);
                            foreach (int nIdProjet in lstElements.IdsProjets)
                            {
                                CProjet projet = new CProjet(ctx);
                                if (projet.ReadIfExists(nIdProjet))
                                {
                                    projet.RecalculateDates(false);
                                }
                            }
                            foreach (int nIdMetaProjet in lstElements.IdsMetaProjets)
                            {
                                CMetaProjet meta = new CMetaProjet(ctx);
                                if (meta.ReadIfExists(nIdMetaProjet))
                                {
                                    meta.UpdateDateDebutPlanifieeFromChilds(false);
                                    meta.UpdateDateFinPlanifieeFromChilds(false);
                                    meta.UpdateDateDebutReelleFromChilds(false);
                                    meta.UpdateDateFinReelleFromChilds(false);
                                    meta.CalcProgress(false);
                                }
                            }

                            result = ctx.SaveAll(false);
                        }
                    }
                    catch (Exception e)
                    {
                    }
                    finally
                    {
                        sousSession.CloseSession();
                    }
                }
            }
        }