using System; using System.Collections.Generic; using System.Linq; using System.Text; using SteamWare; namespace GMW_data { /// /// classe gestione utility /// public class utils { #region area table adapters public DS_UtilityTableAdapters.STPTableAdapter taSTP; public DS_UtilityTableAdapters.v_selTipoCellaTableAdapter taSelTipoCella; public DS_UtilityTableAdapters.v_selUdcByPartTableAdapter taUdcByPart; public DS_UtilityTableAdapters.v_selDestinatariListePrelievoTableAdapter taDestListePre; public DS_UtilityTableAdapters.v_selParticolariTableAdapter taSelPart; public DS_UtilityTableAdapters.v_selTipoListaTableAdapter taSelTipoLista; public DS_UtilityTableAdapters.v_selOperatoriTableAdapter taSelOperatori; public DS_UtilityTableAdapters.v_selParticolariTableAdapter taSelParticolari; public DS_UtilityTableAdapters.v_selImballiTableAdapter taSelImballi; public DS_UtilityTableAdapters.ConfigTableAdapter taConfig; public DS_UtilityTableAdapters.RemoteRebootLogTableAdapter taRRL; public DS_UtilityTableAdapters.RT_PageValTableAdapter taRTPV; public DS_batchTableAdapters.AS400_ComandiTableAdapter taAs400; /// /// init dei table adapters /// protected void initTA() { taSTP = new GMW_data.DS_UtilityTableAdapters.STPTableAdapter(); taSelTipoCella = new GMW_data.DS_UtilityTableAdapters.v_selTipoCellaTableAdapter(); taUdcByPart = new GMW_data.DS_UtilityTableAdapters.v_selUdcByPartTableAdapter(); taDestListePre = new GMW_data.DS_UtilityTableAdapters.v_selDestinatariListePrelievoTableAdapter(); taSelPart = new GMW_data.DS_UtilityTableAdapters.v_selParticolariTableAdapter(); taSelTipoLista = new GMW_data.DS_UtilityTableAdapters.v_selTipoListaTableAdapter(); taSelOperatori = new DS_UtilityTableAdapters.v_selOperatoriTableAdapter(); taSelParticolari = new DS_UtilityTableAdapters.v_selParticolariTableAdapter(); taSelImballi = new DS_UtilityTableAdapters.v_selImballiTableAdapter(); taConfig = new DS_UtilityTableAdapters.ConfigTableAdapter(); taRRL = new DS_UtilityTableAdapters.RemoteRebootLogTableAdapter(); taRTPV = new DS_UtilityTableAdapters.RT_PageValTableAdapter(); taAs400 = new GMW_data.DS_batchTableAdapters.AS400_ComandiTableAdapter(); } /// /// effettua setup dei connection strings da web.config delal singola applicazione /// protected virtual void setupConnectionStringBase() { string connString = memLayer.ML.confReadString("GMWConnectionString"); // connections del db taSTP.Connection.ConnectionString = connString; taSelTipoCella.Connection.ConnectionString = connString; taUdcByPart.Connection.ConnectionString = connString; taDestListePre.Connection.ConnectionString = connString; taSelPart.Connection.ConnectionString = connString; taSelTipoLista.Connection.ConnectionString = connString; taSelOperatori.Connection.ConnectionString = connString; taSelParticolari.Connection.ConnectionString = connString; taSelImballi.Connection.ConnectionString = connString; taConfig.Connection.ConnectionString = connString; taRRL.Connection.ConnectionString = connString; taRTPV.Connection.ConnectionString = connString; taAs400.Connection.ConnectionString = connString; } #endregion #region Inizializzazione protected utils() { initTA(); setupConnectionStringBase(); setupElOperatori(); } /// /// oggetto static per fare chiamate sul magazzino /// public static utils obj = new utils(); #endregion #region area gestione config su DB /// /// Configurations da tabella DB COnfig /// /// Valore chiave /// public string configDbVal(string chiave) { string answ = ""; try { answ = taConfig.getByKey(chiave)[0].valore; } catch { answ = ""; } return answ; } #endregion #region area operatori /// /// oggetto elenco operatori, chiave codOperatore /// public Dictionary elOperatori; /// /// resetta il vocabolario rileggendo i dati... /// public void resetElOperatori() { memLayer.ML.emptyCacheVal("elOperatori"); setupElOperatori(); } /// /// setup in ram elenco operatori /// private void setupElOperatori() { if (memLayer.ML.isInCacheObject("elOperatori")) { elOperatori = (Dictionary)memLayer.ML.objCacheObj("elOperatori"); } else { elOperatori = ricaricaElOperatori(); memLayer.ML.setCacheVal("elOperatori", elOperatori, false); } } /// /// ricarico elenco operatori /// /// private Dictionary ricaricaElOperatori() { Dictionary answ = new Dictionary(); foreach (DS_Utility.v_selOperatoriRow riga in taSelOperatori.GetData()) { answ.Add(riga.CodSoggetto, string.Format("{0} {1}", riga.Cognome, riga.Nome)); } return answ; } /// /// fornisce traduzione cognome nome da cod operatore (tab in ram) /// /// /// public string getOperatoreByCod(string codOperatore) { string answ = "n.d."; try { answ = elOperatori[codOperatore]; } catch { } return answ; } #endregion #region area gestione rPI /// /// /// /// /// /// /// public inputComando registraStartup(string CodMacchina, string IPv4, string agent) { if (memLayer.ML.confReadInt("_logLevel") > 6) { logger.lg.scriviLog(string.Format("{0}---------------------------{0}Richiesta registrazione (ri)avvio Macchina {1}", Environment.NewLine, CodMacchina), tipoLog.INFO); } // formatto output inputComando answ = new inputComando(); // scrivo remote reboot alive! scriviRemoteReboot(CodMacchina, IPv4, agent); // scrivo PRIMO keep alive scriviPrimoKeepAlive(CodMacchina, DateTime.Now); return answ; } /// /// scrive un evento di keepalive sulla tabella /// /// /// /// public void scriviKeepAlive(string IdxMacchina, DateTime oraMacchina) { #if false // salvo in variabile boolean se registrare keep alive su db o meno bool doWrite = false; string nomeVar = string.Format("KA{0}", IdxMacchina); // in primis controllo se in cache c'è oggetto keep alive x macchina... formato KA{ID-MACCHINA} if (memLayer.ML.isInCacheObject(nomeVar)) { // leggo data ora, se è + vecchia di corrente - kaMinUpdSec segno da aggiornare DateTime adesso = DateTime.Now; DateTime lastKA = DateTime.Now; try { lastKA = (DateTime)memLayer.ML.objCacheObj(nomeVar); } catch { } if (adesso.AddSeconds(-memLayer.ML.CRI("kaMinUpdSec")) > lastKA) { doWrite = true; } } else { // non c'è in sessione, lo salvo memLayer.ML.setCacheVal(nomeVar, oraMacchina); // indico di fare refresh doWrite = true; } if (doWrite) { try { if (memLayer.ML.confReadBool("forceResetKeepAlive")) { taKeepAlive.Connection.Close(); taKeepAlive.Connection.Open(); } else { if (taKeepAlive.Connection.State == ConnectionState.Closed) { taKeepAlive.Connection.Open(); } } taKeepAlive.UpdateQueryNoStartTime(DateTime.Now, oraMacchina, IdxMacchina); } catch (Exception exc) { logger.lg.scriviLog(string.Format("Errore in scrittura keep alive!{0}oraMacchina:{1} - IdxMacchina:{2}{0}{3}", Environment.NewLine, oraMacchina, IdxMacchina, exc), tipoLog.EXCEPTION); } } #endif } /// /// scrive un evento di start di keepalive sulla tabella /// /// /// /// public void scriviPrimoKeepAlive(string IdxMacchina, DateTime oraMacchina) { #if false // se non c'è riga macchina insert... if (taKeepAlive.GetData().FindByIdxMacchina(IdxMacchina) == null) { taKeepAlive.Insert(IdxMacchina, DateTime.Now, oraMacchina, DateTime.Now); } else // altrimenti update! { taKeepAlive.UpdateQuery(DateTime.Now, oraMacchina, DateTime.Now, IdxMacchina); } #endif } /// /// Registra un evento di RemoteReboot sulla tabella /// /// /// /// /// public void scriviRemoteReboot(string IdxMacchina, string IPv4, string agent) { taRRL.Insert(IdxMacchina, IPv4, agent, DateTime.Now); } #endregion } } public enum tipoCartellino { cartAL, cartALRX, cartALTT, cartAnime, cartFiniti, cartFinitiSP, cartFusi, cartLiquidiF10, cartLiquidiF18, cartOdette, cartMP, cartSterr, cartTara, cartTratt, cartWip, cartND } public enum tipoSelettore { cdc, cellaMagazzino, magazzino, UDC_byPart }