Files
NKC/NKC_WF/WebUserControls/cmp_secScreen.ascx.cs
Samuele Locatelli 0df7a2cd81 Fix gestione Log instance
Aggiunta api alive x cancellazione vecchi dati redis e mongoDB
2023-11-29 09:55:45 +01:00

310 lines
9.1 KiB
C#

using AppData;
using NKC_SDK;
using NKC_WF.Controllers;
using Newtonsoft.Json;
using SteamWare;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
namespace NKC_WF.WebUserControls
{
public partial class cmp_secScreen : BaseUserControl
{
/// <summary>
/// Codice macchina
/// </summary>
public string machine
{
get
{
return hfMachine.Value;
}
set
{
hfMachine.Value = value;
setCurrData();
}
}
public int countDown
{
get
{
int answ = 0;
int.TryParse(hfCountDown.Value, out answ);
return answ;
}
set
{
hfCountDown.Value = value.ToString();
}
}
public int currNum
{
get
{
int answ = 0;
int.TryParse(hfNum.Value, out answ);
return answ;
}
set
{
hfNum.Value = $"{value:000000}";
}
}
public string itemCode
{
get
{
return hfItemCode.Value;
}
set
{
hfItemCode.Value = value;
}
}
public string itemDtmx
{
get
{
return hfItemDtmx.Value;
}
set
{
if (!string.IsNullOrEmpty(value))
{
cmp_ItemDet.Visible = true;
lblMessage.Visible = false;
hlPdfOpener.Enabled = true;
hlPdfOpener.CssClass = "btn btn-success btn-block";
hfItemDtmx.Value = value;
// cerco e salvo!
var tabItem = DLMan.taIL.getBySearch(0, value, 0, 9999);
if (tabItem != null && tabItem.Count > 0)
{
int ItemId = tabItem[0].ItemID;
cmp_ItemDet.ItemId = ItemId;
itemCode = tabItem[0].ItemExtCode;
pdfPath = tabItem[0].PdfFilePath.ToLower();
}
}
else
{
cmp_ItemDet.Visible = false;
lblMessage.Visible = true;
hlPdfOpener.Enabled = false;
hlPdfOpener.CssClass = "btn btn-outline-light text-light btn-block";
hfItemDtmx.Value = "";
}
}
}
public string newDtmx
{
get
{
string answ = ComLib.getSecScreenRequest(codSSC);
answ = string.IsNullOrEmpty(answ) ? "" : answ;
return answ;
}
}
public string pdfPath
{
get
{
return hfItemPdf.Value;
}
set
{
// check preliminare: deve essere un file ".pdf..."
if (value.ToLower().Trim().EndsWith(".pdf"))
{
// poiché è necessario copiare in locale il pdf...
string nameOnly = $"~/temp/{itemCode}.pdf";
hfItemPdf.Value = nameOnly;
// svuoto files vecchi...
removeOldTemp();
// faccio verifica SE sia necessario fare sostituzioni
string rawData = memLayer.ML.cdv("pdfPathSanitizer");
if (!string.IsNullOrEmpty(rawData))
{
string[] listaSubst = null;
try
{
listaSubst = rawData.Split('|');
}
catch
{ }
// se trovato..
if (listaSubst != null && listaSubst.Length > 0)
{
for (int i = 0; i < listaSubst.Length / 2; i++)
{
value = value.Replace(listaSubst[i], listaSubst[i + 1]);
}
}
}
try
{
// loggo che sto x copiare
Log.Instance.Info($"Requested copy from {value.Trim()} --> {Server.MapPath(nameOnly)}");
// copio in locale file...
File.Copy(value.Trim(), Server.MapPath(nameOnly));
}
catch (Exception exc)
{
string fullMessage = $"SecScreed: Exception on setPdfPath:{Environment.NewLine}{exc}";
Log.Instance.Error(fullMessage);
}
// update...
hlPdfOpener.NavigateUrl = nameOnly;
}
else
{
string fullMessage = $"SecScreed: Error on pdfPath set value: [{value}]";
Log.Instance.Info(fullMessage);
}
}
}
public int SheetId
{
get
{
int answ = 0;
int.TryParse(hfSheetId.Value, out answ);
return answ;
}
set
{
hfSheetId.Value = $"{value}";
hlShowCurrSheet.NavigateUrl = $"~/site/SvgFull?sheetId={value}";
}
}
protected string codSSC
{
get
{
return $"SSC{currNum:000000}";
}
}
/// <summary>
/// Aggiorna componente principale e child components
/// </summary>
public void doUpdate()
{
// valutato ma non usato pdf.js:
// https://mozilla.github.io/pdf.js/examples/index.html#interactive-examples
// se è variato da current...
if (newDtmx != itemDtmx)
{
itemDtmx = newDtmx;
}
}
/// <summary>
/// restituisce URL immagine QRCode
/// </summary>
/// <returns></returns>
public string getImageUrl()
{
string baseUrl = $"{memLayer.ML.CRS("matrixUrl")}/HOME/QR_site/JSON?val=";
string payload = "{'baseUrl':'{0}','parameters':['" + codSSC + "']}";
string answ = $"{baseUrl}{payload}";
return answ;
}
public void refreshCodPost()
{
// se NON HO PIU' un codice valido nella richiesta redis
if (string.IsNullOrEmpty(newDtmx))
{
currNum = ComLib.getSecScreenCode();
}
// genero nuovo QR
string qrUrl = getImageUrl();
imgQrMain.ImageUrl = qrUrl;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
refreshCodPost();
doUpdate();
// primo: 1 minuto
countDown = 60;
SheetId = 0;
itemDtmx = "IT";
}
}
protected void timerRefresh_Tick(object sender, EventArgs e)
{
countDown--;
if (countDown < 0)
{
refreshCodPost();
// count-down successivi: 2 minuti
countDown = 60 * 2;
}
setCurrData();
doUpdate();
}
private void removeOldTemp()
{
var fileList = fileMover.obj.elencoFilesDir(Server.MapPath("~/temp"));
foreach (var item in fileList)
{
// solo se NON sono placeholder o none...
if (!item.Nome.Contains("none.pdf") && !item.Nome.Contains("PlaceHolder.file"))
{
if (item.dataMod < DateTime.Now.AddHours(-1))
{
fileMover.deleteFile(Server.MapPath($"~/temp/{item.Nome}"));
}
}
}
}
/// <summary>
/// Imposta dati correnti (Bunk / Sheet)
/// </summary>
private void setCurrData()
{
// recupero bunk corrente...
DS_App.StackListRow currBunk = ComLib.getCurrBunk(machine);
if (currBunk != null)
{
DS_App.SheetListRow currSheet = ComLib.getCurrSheet(currBunk.BatchID, machine);
if (currSheet != null)
{
// se variato...
if (SheetId != currSheet.SheetID)
{
SheetId = currSheet.SheetID;
}
}
}
else
{
SheetId = 0;
}
}
}
}