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()); } }
//------------------------------------------------------------------------------------------------------ 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); }
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(); }
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); }
//---------------------------------------------------- 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); }
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); } } }
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()); }
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); }
/// ///////////////////////////////////////////////////////// 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); }
/// <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(); }
/// <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); }
//--------------------------------------------------------------------------- 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); }
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); }
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); }
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()); } } }
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); }
//------------------------------------------------------------------------ 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; } } }
//---------------------------------------------------- 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); }
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; } }
//---------------------------------------------------------------------------------- /// <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; } }
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; } } }
/// ////////////////////////////////////////////////// ///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; } }
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; } }
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; } }
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; } }
//---------------------------------------------------------------------------------------------------- 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); } } }
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; } } }
/// ////////////////////////////////////////////////// ///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(); } } } }