Files
GMW/GMW_data/utils.cs
T
Samuele E. Locatelli 704015a872 vers 3.1 release iniziale
- fatta ristampa (da pagina storico postazioni globale) del cartellino
2015-06-22 16:42:51 +02:00

326 lines
12 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SteamWare;
namespace GMW_data
{
/// <summary>
/// classe gestione utility
/// </summary>
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;
/// <summary>
/// init dei table adapters
/// </summary>
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();
}
/// <summary>
/// effettua setup dei connection strings da web.config delal singola applicazione
/// </summary>
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();
}
/// <summary>
/// oggetto static per fare chiamate sul magazzino
/// </summary>
public static utils obj = new utils();
#endregion
#region area gestione config su DB
/// <summary>
/// Configurations da tabella DB COnfig
/// </summary>
/// <param name="chiave">Valore chiave</param>
/// <returns></returns>
public string configDbVal(string chiave)
{
string answ = "";
try
{
answ = taConfig.getByKey(chiave)[0].valore;
}
catch
{
answ = "";
}
return answ;
}
#endregion
#region area operatori
/// <summary>
/// oggetto elenco operatori, chiave codOperatore
/// </summary>
public Dictionary<string, string> elOperatori;
/// <summary>
/// resetta il vocabolario rileggendo i dati...
/// </summary>
public void resetElOperatori()
{
memLayer.ML.emptyCacheVal("elOperatori");
setupElOperatori();
}
/// <summary>
/// setup in ram elenco operatori
/// </summary>
private void setupElOperatori()
{
if (memLayer.ML.isInCacheObject("elOperatori"))
{
elOperatori = (Dictionary<string, string>)memLayer.ML.objCacheObj("elOperatori");
}
else
{
elOperatori = ricaricaElOperatori();
memLayer.ML.setCacheVal("elOperatori", elOperatori, false);
}
}
/// <summary>
/// ricarico elenco operatori
/// </summary>
/// <returns></returns>
private Dictionary<string, string> ricaricaElOperatori()
{
Dictionary<string, string> answ = new Dictionary<string, string>();
foreach (DS_Utility.v_selOperatoriRow riga in taSelOperatori.GetData())
{
answ.Add(riga.CodSoggetto, string.Format("{0} {1}", riga.Cognome, riga.Nome));
}
return answ;
}
/// <summary>
/// fornisce traduzione cognome nome da cod operatore (tab in ram)
/// </summary>
/// <param name="codOperatore"></param>
/// <returns></returns>
public string getOperatoreByCod(string codOperatore)
{
string answ = "n.d.";
try
{
answ = elOperatori[codOperatore];
}
catch
{ }
return answ;
}
#endregion
#region area gestione rPI
/// <summary>
///
/// </summary>
/// <param name="CodMacchina"></param>
/// <param name="IPv4"></param>
/// <param name="agent"></param>
/// <returns></returns>
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;
}
/// <summary>
/// scrive un evento di keepalive sulla tabella
/// </summary>
/// <param name="IdxMacchina"></param>
/// <param name="oraMacchina"></param>
/// <returns></returns>
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
}
/// <summary>
/// scrive un evento di start di keepalive sulla tabella
/// </summary>
/// <param name="IdxMacchina"></param>
/// <param name="oraMacchina"></param>
/// <returns></returns>
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
}
/// <summary>
/// Registra un evento di RemoteReboot sulla tabella
/// </summary>
/// <param name="IdxMacchina"></param>
/// <param name="IPv4"></param>
/// <param name="agent"></param>
/// <returns></returns>
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
}