using AppData; using Newtonsoft.Json; using NKC_SDK; using SteamWare; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace NKC_WF.WebUserControls { public partial class cmp_orderStatus : System.Web.UI.UserControl { public orderStatus statoBatch = new orderStatus(); /// /// Hash redis per il canale di comunicazione dei batch eseguiti/in esecuzione /// protected string batchInChannel = "NKC:IN:batchReq"; /// /// Wrapper traduzione termini /// /// /// public string traduci(string lemma) { return SteamWare.user_std.UtSn.Traduci(lemma); } protected void Page_Load(object sender, EventArgs e) { updateStatus(); } /// /// ID del batch corrente /// protected int currBatchID { get { int answ = 0; if (memLayer.ML.isInSessionObject("BatchID")) { answ = memLayer.ML.IntSessionObj("BatchID"); } return answ; } } /// /// Aggiorna visualizzazione status processo /// private void updateStatus() { // se trova batch non riportati in REDIS li scrive x richiedere processing string batchKey = $"{batchInChannel}:{currBatchID}"; // per prima cosa recupero da REDIS lo stato... bool statusPresent = !string.IsNullOrEmpty(memLayer.ML.getRSV(batchKey)); if (statusPresent) { string payload = memLayer.ML.getRSV(batchKey); if (!string.IsNullOrEmpty(payload)) { try { statoBatch = JsonConvert.DeserializeObject(payload); } catch { } // aggiorno componente... lblStatusCode.Text = statoBatch.ProcessStatus.ToString(); lblProcNotes.Text = statoBatch.ProcessNotes; lblNestingRuntime.Text = statoBatch.ProcessingRuntime.ToString(); lblWrktimeEst.Text = (statoBatch.EstimatedWorktime / 60).ToString(); // secondo status mostro barra... divProgress.Visible = (statoBatch.ProcessStatus > procStatus.waiting && statoBatch.ProcessStatus < procStatus.error); divButtons.Visible = (statoBatch.ProcessStatus > procStatus.error && statoBatch.ProcessStatus < procStatus.accepted); } } TimerUpdateStatus.Enabled = statusPresent; } protected void TimerUpdateStatus_Tick(object sender, EventArgs e) { updateStatus(); } protected void lbtConfirm_Click(object sender, EventArgs e) { // accettazione ordine: scrivo su DB e QUINDI su redis indico accepted } protected void lbtCancel_Click(object sender, EventArgs e) { // rifiuto ordine: ELIMINO su DB e QUINDI su redis indico refused } } }