Files
NKC/NKC_WF/WebUserControls/cmp_orderStatus.ascx.cs
T
Samuele E. Locatelli 2f4ead124d Avanzamento x OrderStatus
2019-07-31 19:26:09 +02:00

86 lines
2.5 KiB
C#

using AppData;
using Newtonsoft.Json;
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();
/// <summary>
/// Hash redis per il canale di comunicazione dei batch eseguiti/in esecuzione
/// </summary>
protected string batchInChannel = "NKC:IN:batchReq";
/// <summary>
/// Wrapper traduzione termini
/// </summary>
/// <param name="lemma"></param>
/// <returns></returns>
public string traduci(string lemma)
{
return SteamWare.user_std.UtSn.Traduci(lemma);
}
protected void Page_Load(object sender, EventArgs e)
{
updateStatus();
}
/// <summary>
/// ID del batch corrente
/// </summary>
protected int currBatchID
{
get
{
int answ = 0;
if (memLayer.ML.isInSessionObject("BatchID"))
{
answ = memLayer.ML.IntSessionObj("BatchID");
}
return answ;
}
}
/// <summary>
/// Aggiorna visualizzazione status processo
/// </summary>
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<orderStatus>(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.completed);
}
}
TimerUpdateStatus.Enabled = statusPresent;
}
protected void TimerUpdateStatus_Tick(object sender, EventArgs e)
{
updateStatus();
}
}
}