using System; using System.Collections.Generic; using System.Diagnostics; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using SteamWare; using XPS_data; public partial class barcode : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { // Crea stopwatch. Stopwatch stopwatch = new Stopwatch(); // Avvio... stopwatch.Start(); traduciObj(); // registro che i valori in cache sono scaduti... lastDataRefresh = DateTime.Now.AddDays(-1); numDD = memLayer.ML.CRI("numDD"); cacheValSec = memLayer.ML.CRI("cacheValSec"); // registro stopwatch.Stop(); lastUpdDuration = stopwatch.Elapsed; } // effettuo load valori... setupComandiBarcode(); setupValoriBarcode(); // registro eventi mod_barcode1.eh_comandoRegistrato += new EventHandler(mod_barcode1_eh_comandoRegistrato); mod_btnComandi1.eh_clickComando += new EventHandler(mod_btnComandi1_eh_clickComando); } /// /// Numero comandi ammessi caricati /// public int nComandi { get { return comandiAmmessiBCode.Count; } } /// /// Numero record BCode caricati /// public int nBCodeRec { get { return valoriAmmessiBCode.Count; } } /// /// Memorizzo durata ultimo update (lettura record...) come timespan /// public TimeSpan lastUpdDuration { get { return (TimeSpan)memLayer.ML.objSessionObj("lastUpdDuration"); } set { memLayer.ML.setSessionVal("lastUpdDuration", value); } } /// /// inviato un comando dai link buttons /// /// /// void mod_btnComandi1_eh_clickComando(object sender, EventArgs e) { // chiamo metodo caricamento comandi in modulo barcode... mod_barcode1.loadBtnClickComando(); } private void traduciObj() { } /// /// imposta/recupera valore num gg da rileggere... /// public int numDD { get { int answ = 85; try { answ = Convert.ToInt32(txtNumDD.Text.Trim()); } catch { } return answ; } set { txtNumDD.Text = value.ToString(); } } /// /// logLevel impostato... /// public int logLevel { get { int answ = 1; try { answ = memLayer.ML.CRI("_logLevel"); } catch { } return answ; } } /// /// imposta/recupera valore num sec validità cache... /// public int cacheValSec { get { int answ = 55; try { answ = Convert.ToInt32(txtCacheSec.Text.Trim()); } catch { } return answ; } set { txtCacheSec.Text = value.ToString(); } } /// /// Variabile x controllo scadenza valori in cache /// protected DateTime lastDataRefresh { get { DateTime answ = DateTime.Now.AddDays(-1); try { answ = Convert.ToDateTime(memLayer.ML.objCacheObj("lastBCodeDataRead")); } catch { } return answ; } set { // registro che i valori in cache sono scaduti... memLayer.ML.setCacheVal("lastBCodeDataRead", value); if (logLevel > 5) logger.lg.scriviLog("impostata validità cache"); } } protected bool cacheValida { get { bool answ = false; try { if (DateTime.Now.Subtract(lastDataRefresh).TotalSeconds < cacheValSec) answ = true; } catch { } return answ; } } /// /// Elenco (da cache) dei valori ammessi x BCode /// protected Dictionary valoriAmmessiBCode { get { Dictionary answ = new Dictionary(); if (memLayer.ML.isInCacheObject("valoriAmmessiBCode") && cacheValida) { answ = (Dictionary)memLayer.ML.objCacheObj("valoriAmmessiBCode"); } return answ; } set { memLayer.ML.setCacheVal("valoriAmmessiBCode", value); } } /// /// Elenco (da cache) dei comandi ammessi x BCode /// protected Dictionary comandiAmmessiBCode { get { Dictionary answ = new Dictionary(); if (memLayer.ML.isInCacheObject("comandiAmmessiBCode")) { answ = (Dictionary)memLayer.ML.objCacheObj("comandiAmmessiBCode"); } return answ; } set { memLayer.ML.setCacheVal("comandiAmmessiBCode", value); } } /// /// effettuo il setup dei valori ammessi x il barcode... /// private void setupValoriBarcode() { if (valoriAmmessiBCode.Count > 0) { // assegno valori al barcode... mod_barcode1.tabValori = valoriAmmessiBCode; if (logLevel > 5) logger.lg.scriviLog("Letti da cache VALORI Barcode", tipoLog.INFO); } else { // Crea stopwatch. Stopwatch stopwatch = new Stopwatch(); // Avvio... stopwatch.Start(); // carico dati! if (logLevel > 5) logger.lg.scriviLog("Inizio setup valori Barcode", tipoLog.INFO); Dictionary valori = new Dictionary(); XPS_data.DS_applicazioneTableAdapters.v_commesseTableAdapter taCommesse = new XPS_data.DS_applicazioneTableAdapters.v_commesseTableAdapter(); DS_applicazione.v_commesseDataTable _tabComm = taCommesse.getLastDD(numDD); // aggiungo i DDT... foreach (DS_applicazione.v_commesseRow riga in _tabComm) { // QUI formattazione campi mostrati a barcode // 2017.05.23 tolto stato... valori.Add(riga.Cod.ToString(), string.Format("{0} - {6}
{1} DDT {2} del {3:dd MMM yyyy}
{4} colli ({5} kg)", riga.Cod, riga.Cliente, riga.DDT, riga.DataDDT, riga.Colli, riga.Peso, riga.Ciclo)); //valori.Add(riga.Cod.ToString(), string.Format("{0} - {7}
{1} DDT {2} del {3:dd MMM yyyy}
{4} colli ({5} kg)
{6}", riga.Cod, riga.Cliente, riga.DDT, riga.DataDDT, riga.Colli, riga.Peso, riga.Stato, riga.Ciclo)); } if (logLevel > 5) logger.lg.scriviLog("Caricato commesse per Barcode", tipoLog.INFO); // ora aggiungo i singoli ULP... XPS_data.DS_applicazioneTableAdapters.v_ULPTableAdapter taULP = new XPS_data.DS_applicazioneTableAdapters.v_ULPTableAdapter(); DS_applicazione.v_ULPDataTable _tabUlp = taULP.getLastDD(numDD); // aggiungo colli (ULP)... foreach (DS_applicazione.v_ULPRow riga in _tabUlp) { // QUI formattazione campi mostrati a barcode // 2017.05.23 tolto stato... valori.Add(riga.Cod.ToString(), string.Format("{0} - {6}
{1} DDT {2} del {3:dd MMM yyyy}
nr {4} items ({5} kg)", riga.Cod, riga.Cliente, riga.DDT, riga.DataDDT, riga.Qta, riga.Peso, riga.CodCli)); //valori.Add(riga.Cod.ToString(), string.Format("{0} - {7}
{1} DDT {2} del {3:dd MMM yyyy}
nr {4} items ({5} kg)
{6}", riga.Cod, riga.Cliente, riga.DDT, riga.DataDDT, riga.Qta, riga.Peso, riga.Stato, riga.CodCli)); } if (logLevel > 5) logger.lg.scriviLog("Caricato RIGHE per Barcode", tipoLog.INFO); // assegno valori al barcode... mod_barcode1.tabValori = valori; valoriAmmessiBCode = valori; lastDataRefresh = DateTime.Now; logger.lg.scriviLog("Letti da DB VALORI Barcode", tipoLog.INFO); stopwatch.Start(); lastUpdDuration = stopwatch.Elapsed; } } /// /// carico da tab i comandi ammessi per il barcode... /// private void setupComandiBarcode() { if (comandiAmmessiBCode.Count > 0) { // assegno valori al barcode... mod_barcode1.comandiAmmessi = comandiAmmessiBCode; if (logLevel > 5) logger.lg.scriviLog("Letti da cache COMANDI Barcode", tipoLog.INFO); } else { XPS_data.DS_applicazioneTableAdapters.TraEv2StatiTableAdapter taTrEv2St = new XPS_data.DS_applicazioneTableAdapters.TraEv2StatiTableAdapter(); DS_applicazione.TraEv2StatiDataTable _tabTran = taTrEv2St.getByCodMappa("E_BC"); Dictionary comandi = new Dictionary(); foreach (DS_applicazione.TraEv2StatiRow riga in _tabTran) { comandi.Add(riga.CodEvento, user_std.UtSn.Traduci(riga.text2show)); } // impongo i comandi al barcode... mod_barcode1.comandiAmmessi = comandi; comandiAmmessiBCode = comandi; logger.lg.scriviLog("Letti da DB COMANDI Barcode", tipoLog.INFO); } } /// /// il barcode ha registrato un evento... /// /// /// void mod_barcode1_eh_comandoRegistrato(object sender, EventArgs e) { switch (stateMachine.st.azioneComando(mod_barcode1.comandoRegistrato)) { case tipoAzione.annulla: mod_barcode1.resetMe(); break; case tipoAzione.conferma: // se input completo eseguo... if (mod_barcode1.comandoRegistrato.currCmdIn != "" && mod_barcode1.comandoRegistrato.valore != "") { eseguiComando(); } else // altrimenti warning... e rimetto valori precedenti { mod_barcode1.txtRich2show = user_std.UtSn.Traduci("codObjUnknown"); mod_barcode1.comandoRegistrato.currCmdIn = mod_barcode1.comandoRegistrato.prevCmdIn; mod_barcode1.comandoRegistrato.descrComando = mod_barcode1.comandoRegistrato.descrComandoPrev; mod_barcode1.txtInput2show = mod_barcode1.comandoRegistrato.descrComandoPrev; } break; case tipoAzione.esegui: // se ho auto conferma eseguo! if (memLayer.ML.confReadBool("autoConfCmd")) { mod_barcode1.comandoRegistrato.prevCmdIn = mod_barcode1.comandoRegistrato.currCmdIn; mod_barcode1.comandoRegistrato.currCmdIn = "ok"; eseguiComando(); } else { if (mod_barcode1.comandoRegistrato.valore != "") { mod_barcode1.txtRich2show = user_std.UtSn.Traduci("pleaseConfirm"); } else { mod_barcode1.txtRich2show = user_std.UtSn.Traduci("codObjUnknown"); } } break; case tipoAzione.noAct: break; default: break; } mod_btnComandi1.updateBtn(); } /// /// eseguo il comando /// private void eseguiComando() { // in primis: sono in esecuzione, x cui il comando è valido... string msg2show = ""; string currState = ""; DS_applicazione.IstObjRow rigaIstObj; // calcolo lo stato dell'oggetto... try { rigaIstObj = XPS_data.XPS.obj.taObj.getByIdxObj(mod_barcode1.comandoRegistrato.valore)[0]; currState = rigaIstObj.CodStato; } catch { } tipoEsito esito = stateMachine.st.doAction("E_Stati", mod_barcode1.comandoRegistrato.valore, currState, mod_barcode1.comandoRegistrato.prevCmdIn); if (esito == tipoEsito.ok) { msg2show = string.Format("{0}: {1}", mod_barcode1.comandoRegistrato.valore, user_std.UtSn.Traduci("chgStateDone")); } else if (esito == tipoEsito.error) { msg2show = user_std.UtSn.Traduci("cannotStateChange"); } else { msg2show = user_std.UtSn.Traduci("unknownCmd"); } // reset e mostro output... mod_barcode1.resetMe(); if (msg2show != "") mod_barcode1.txtInput2show = msg2show; } protected void btnReload_Click(object sender, EventArgs e) { resetCache(); } private void resetCache() { // resetto tutto! comandiAmmessiBCode = new Dictionary(); valoriAmmessiBCode = new Dictionary(); lastDataRefresh = DateTime.Now.AddDays(-1); } protected void txtCacheSec_TextChanged(object sender, EventArgs e) { resetCache(); } protected void txtNumDD_TextChanged(object sender, EventArgs e) { resetCache(); } }