using SteamWare; using System; using System.Collections.Generic; namespace C_TRACK.WebUserControls { public partial class mod_btnComandi : System.Web.UI.UserControl { /// /// evento comando clicked /// public event EventHandler eh_clickComando; protected void Page_Load(object sender, EventArgs e) { setupComandiBarcode(); updateBtn(); } /// /// Restituisce email dest da codCliente + check conf da web.config con forzatura a email interna /// /// /// protected string getEmailDest(string CodCliente) { string answ = ""; #if false if (memLayer.ML.CRS("_forcedDestEmail") != "") { answ = memLayer.ML.CRS("_forcedDestEmail"); } else { answ = XPS_data.XPS.obj.taAnCli.getByKey(CodCliente)[0].email; } #endif return answ; } /// /// Aggiorna stato buttons /// public void updateBtn() { // determino visibilità lbt4: SOLO se ho un UDC valido ed è in stato 05... int currState = 0; bool emailReq = false; string emailSent = ""; string emailDest = ""; string CodCliente = ""; #if false DS_applicazione.IstObjRow rigaIstObj; // calcolo lo stato dell'oggetto... try { rigaIstObj = XPS_data.XPS.obj.taObj.getByIdxObj(comando.valore)[0]; currState = Convert.ToInt32(rigaIstObj.CodStato); emailReq = rigaIstObj.emailReq; CodCliente = rigaIstObj.CodCliente; emailDest = getEmailDest(CodCliente); } catch { } try { rigaIstObj = XPS_data.XPS.obj.taObj.getByIdxObj(comando.valore)[0]; emailSent = rigaIstObj.emailSent.ToString("dd/MM/yy HH:mm"); } catch { } #endif switch (currState) { case 1: case 2: case 3: lbt1.Enabled = true; lbt2.Enabled = false; lbt3.Enabled = false; lbt4.Enabled = false; break; case 4: lbt1.Enabled = false; lbt2.Enabled = true; lbt3.Enabled = false; lbt4.Enabled = false; break; case 5: lbt1.Enabled = false; lbt2.Enabled = false; lbt3.Enabled = true; lbt4.Enabled = true; break; case 6: case 7: lbt1.Enabled = false; lbt2.Enabled = false; lbt3.Enabled = false; lbt4.Enabled = true; break; default: lbt1.Enabled = false; lbt2.Enabled = false; lbt3.Enabled = false; lbt4.Enabled = false; break; } // fix CSS... inizio togliendo disabled... lbt1.CssClass = lbt1.CssClass.Replace("disabled", "").Trim(); lbt2.CssClass = lbt2.CssClass.Replace("disabled", "").Trim(); lbt3.CssClass = lbt3.CssClass.Replace("disabled", "").Trim(); lbt4.CssClass = lbt4.CssClass.Replace("disabled", "").Trim(); lbt5.CssClass = lbt5.CssClass.Replace("disabled", "").Trim(); lbt6.CssClass = lbt6.CssClass.Replace("disabled", "").Trim(); // rimetto dove serve disabled... if (!lbt1.Enabled) { lbt1.CssClass += " disabled"; } if (!lbt2.Enabled) { lbt2.CssClass += " disabled"; } if (!lbt3.Enabled) { lbt3.CssClass += " disabled"; } if (!lbt4.Enabled) { lbt4.CssClass += " disabled"; } if (!lbt5.Enabled) { lbt5.CssClass += " disabled"; } if (!lbt6.Enabled) { lbt6.CssClass += " disabled"; } if (currState >= 5) { // controllo se c'è email del cliente... if (emailDest != "") { lbt4.Enabled = true; } else { lbt4.Enabled = false; } // controllo se era indicato email richiesta! if (emailReq) { lbt4.Text = string.Format("{0}{1}{2}", comandiAmmessi["07"], Environment.NewLine, user_std.UtSn.Traduci("emailReq")); } else { lbt4.Enabled = false; } // controllo se mai spedita email... if (emailSent != "") { lbt4.Text += string.Format("{0}{1}: {2}", Environment.NewLine, user_std.UtSn.Traduci("emailSent"), emailSent); } } // se autoconferma nascondo button conferma... if (memLayer.ML.confReadBool("autoConfCmd")) { lbt5.Visible = false; } else { lbt5.Visible = true; } } /// /// carico da tab i comandi ammessi per il barcode... /// private void setupComandiBarcode() { // da rivedere, x ora metto BRUTALMENTE alcuni comandi... Dictionary comandi = new Dictionary(); for (int i = 0; i < 10; i++) { comandi.Add((i + 1).ToString("00"), string.Format("COD_{0:00}", i + 1)); } comandi.Add("ok", "ok"); comandi.Add("ko", "ko"); comandiAmmessi = comandi; #if false 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... comandiAmmessi = comandi; #endif } /// /// dictionary comandi ammessi /// protected Dictionary _comandi = new Dictionary(); /// /// elenco dei comandi riconosciuti /// public Dictionary comandiAmmessi { get { return _comandi; } set { _comandi = value; } } /// /// segnala click su button comando /// public void segnalaClick() { if (eh_clickComando != null) { eh_clickComando(this, new EventArgs()); } } protected void lbt1_Click(object sender, EventArgs e) { memLayer.ML.setSessionVal("btnCmdPress", "04", false); segnalaClick(); } protected void lbt2_Click(object sender, EventArgs e) { memLayer.ML.setSessionVal("btnCmdPress", "05", false); segnalaClick(); } protected void lbt3_Click(object sender, EventArgs e) { memLayer.ML.setSessionVal("btnCmdPress", "06", false); segnalaClick(); } protected void lbt4_Click(object sender, EventArgs e) { #if false logger.lg.scriviLog("Richiesto invio email..."); // mi limito a mandare email e non segnalo altro... carico dati! // determino visibilità lbt4: SOLO se ho un UDC valido ed è in stato 05... int currState = 0; bool emailReq = false; string emailSent = ""; string emailDest = ""; string CodCliente = ""; string ddt = ""; string dataRif = ""; string descr = ""; string peso = ""; DS_applicazione.IstObjRow rigaIstObj = null; // calcolo lo stato dell'oggetto... try { rigaIstObj = XPS_data.XPS.obj.taObj.getByIdxObj(comando.valore)[0]; currState = Convert.ToInt32(rigaIstObj.CodStato); emailReq = rigaIstObj.emailReq; CodCliente = rigaIstObj.CodCliente; emailDest = getEmailDest(CodCliente); logger.lg.scriviLog(string.Format("Recuperati dati per invio email: {0} | {1} | {2}", comando.valore, CodCliente, emailDest)); } catch (Exception exc) { logger.lg.scriviLog(String.Format("Eccezione in recupero dati commessa x email: {0}", exc), tipoLog.EXCEPTION); } try { rigaIstObj = XPS_data.XPS.obj.taObj.getByIdxObj(comando.valore)[0]; emailSent = rigaIstObj.emailSent.ToString("dd/MM/yy HH:mm"); } catch (Exception exc) { logger.lg.scriviLog(String.Format("Eccezione in invio email: {0}", exc), tipoLog.EXCEPTION); } try { ddt = rigaIstObj.Nome; dataRif = rigaIstObj.DataRif.ToString("dd/MM/yy HH:mm"); descr = rigaIstObj.Note; peso = rigaIstObj.Peso.ToString(); } catch (Exception exc) { ddt = "n.d."; dataRif = "n.d."; descr = "n.d."; peso = "n.d."; logger.lg.scriviLog(String.Format("Eccezione in recupero dati x email: {0}", exc), tipoLog.EXCEPTION); } if (currState >= 5 && emailDest != "") { // invio email string subject = user_std.UtSn.Traduci("emailSubject"); // 'Notifica merce pronta' string bodyMsg = string.Format(user_std.UtSn.Traduci("emailBody"), ddt, dataRif, descr, peso); //'Attenzione, la merce relativa al DDT {0} del {1}, ({2}, peso {3} kg) è pronta per il ritiro presso EQUA s.p.a di Pedrengo' // se è forzato invio interno cambio subject e body... if (memLayer.ML.CRS("_forcedDestEmail") != "") { DS_applicazione.v_commesseRow rigaComm = XPS_data.XPS.obj.taComm.getByCod(comando.valore)[0]; subject += string.Format(" | cliente: {0}", rigaComm.Cliente); bodyMsg += string.Format("

Link diretto al DDT {2} - {3}", memLayer.ML.CRS("mainSite"), rigaComm.Cod, rigaComm.DDT, rigaComm.descrizione); } // invio email! bool fatto = gestEmail.geAuth.mandaEmail(memLayer.ML.confReadString("_emailUser"), emailDest, subject, bodyMsg); if (fatto) { // aggiorno stato obj XPS_data.XPS.obj.taObj.updateEmailSent(comando.valore); } } #endif updateBtn(); } protected void lbt5_Click(object sender, EventArgs e) { memLayer.ML.setSessionVal("btnCmdPress", "ok", false); segnalaClick(); } protected void lbt6_Click(object sender, EventArgs e) { memLayer.ML.setSessionVal("btnCmdPress", "ko", false); segnalaClick(); } /// /// oggetto comando locale alla classe /// protected inputComando comando { get { inputComando answ; if (memLayer.ML.isInSessionObject("barcodeCmd")) { answ = (inputComando)memLayer.ML.objSessionObj("barcodeCmd"); } else { answ = new inputComando(); } return answ; } } } }