diff --git a/AppData/ComLib.cs b/AppData/ComLib.cs
index 0e7773d..f3e7468 100644
--- a/AppData/ComLib.cs
+++ b/AppData/ComLib.cs
@@ -2150,5 +2150,17 @@ namespace AppData
#endregion
+ #region metodi per SecScreen
+
+ public static int getSecScreenCode()
+ {
+ int answ = 0;
+ Random rnd = new Random();
+ return rnd.Next(10000);
+ }
+
+ #endregion
+
+
}
}
diff --git a/NKC_SDK/NKC.cs b/NKC_SDK/NKC.cs
index 4fb0746..62aafa7 100644
--- a/NKC_SDK/NKC.cs
+++ b/NKC_SDK/NKC.cs
@@ -6,315 +6,315 @@ using System.Net.NetworkInformation;
namespace NKC_SDK
{
- public class NKC
- {
- #region utils comunicazione HTTP
+ public class NKC
+ {
+ #region utils comunicazione HTTP
- ///
- /// Effettua chiamata URL e restituisce risultato
- ///
- ///
- ///
- public static string callUrl(string URL)
- {
- string answ = "";
- var client = new WebClientWT();
- //var client = new WebClient();
- client.Headers.Add("user-agent", "NKC_SDK");
- try
- {
- answ = client.DownloadString(URL);
- }
- catch (Exception exc)
- {
- Log.Instance.Error($"Eccezione durante callUrl per URL: {URL}{Environment.NewLine}{exc}");
- answ = exc.Message;
- }
- // restituisco valore!
- return answ;
- }
- ///
- /// Effettua chiamata URL e restituisce risultato
- ///
- ///
- ///
- ///
- public static string callUrl(string URL, string payload)
- {
- string answ = "";
- var client = new WebClientWT();
- client.Headers.Add("user-agent", "NKC_SDK");
- try
- {
- answ = client.UploadString(URL, payload);
- }
- catch (Exception exc)
- {
- Log.Instance.Error($"Eccezione durante callUrl per URL: {URL} | payload: {payload}{Environment.NewLine}{exc}");
- answ = exc.Message;
- }
- // restituisco valore!
- return answ;
- }
-
- ///
- /// Effettua chiamata PUT
- ///
- ///
- ///
- ///
- public static string putData(string URL, string payload)
- {
- string answ = "";
- var client = new WebClientWT();
- client.Headers.Add("user-agent", "NKC_SDK");
- // importante x evitare errore 415 di dataType non ammesso
- client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
- try
- {
- // va messo "PUT" e va configurato IIS per accettare PUT
- answ = client.UploadString(URL, "PUT", payload);
- answ = "ok";
- }
- catch (Exception exc)
- {
- Log.Instance.Error($"Eccezione durante putData per {URL}{Environment.NewLine}{exc}");
- answ = exc.Message;
- }
- // restituisco valore!
- return answ;
- }
-
-
- #endregion
-
- #region URL di base
-
- protected string urlAlive
- {
- get
- {
- return $"{_baseUrl}api/Alive";
- }
- }
- protected string urlAliveClock
- {
- get
- {
- return $"{_baseUrl}api/Alive/1";
- }
- }
- protected string urlCurrBunk
- {
- get
- {
- return $"{_baseUrl}api/Bunk";
- }
- }
- protected string urlCurrSheet4Mac
- {
- get
- {
- return $"{_baseUrl}api/Sheet/{_codPost}";
- }
- }
- protected string urlGetBunk(int currBunkId)
- {
- return $"{_baseUrl}api/Bunk/{currBunkId}?showNext=false";
- }
- protected string urlNextBunk(int currBunkId)
- {
- return $"{_baseUrl}api/Bunk/{currBunkId}?showNext=true";
- }
- protected string urlPutBunk(int currBunkId)
- {
- return $"{_baseUrl}api/Bunk/{currBunkId}";
- }
- ///
- /// URL x salvataggio dati SHEET
- ///
- ///
- protected string urlPutSheetList
- {
- get
- {
- return $"{_baseUrl}api/Sheet/{_codPost}";
- }
- }
- ///
- /// file locale per persistenza BUNK
- ///
- protected string persistFileName = "data/persistFile.json";
-
- #endregion
-
- ///
- /// URL di base per la comunicazione
- ///
- /// PROD: http://seriate.steamware.net:8083/NKC/
- /// DEV: https://localhost:44388/
- ///
- protected string _baseUrl { get; set; } = @"http://seriate.steamware.net:8083/NKC/";
- ///
- /// DnsName/IP di base x chaimate
- ///
- protected string _baseIp { get; set; } = "seriate.steamware.net";
- ///
- /// COD macchina x cui si effettua chiamata
- ///
- protected string _codPost { get; set; } = "";
-
- ///
- /// Classe per effettuare comunicazioni con NKC
- ///
- /// IP di base x ping
- /// URL di abse x chiamate REST
- /// Codice posstazione/macchina x cui si fa chiamata
- public NKC(string baseIp, string baseUrl, string codPost)
- {
- _baseIp = baseIp;
- _baseUrl = baseUrl;
- _codPost = codPost;
- }
- ///
- /// Effettua test ping all'indirizzo del server
- ///
- public PingReply testPing
- {
- get
- {
- Ping myPing = new Ping();
- // timeout a 1 sec!
- PingReply answ = myPing.Send(_baseIp, 1000);
- // rendo!
- return answ;
- }
- }
- ///
- /// Effettua test alive all'indirizzo del server
- ///
- public bool testAlive
- {
- get
- {
- bool answ = false;
- string returnData = callUrl(urlAlive);
- returnData = JsonConvert.DeserializeObject(returnData);
- answ = returnData == "OK";
- // rendo!
- return answ;
- }
- }
- ///
- /// Effettua test ping all'indirizzo del server
- ///
- public DateTime testClock
- {
- get
- {
- DateTime oggi = DateTime.Today;
- DateTime answ = oggi.AddYears(-oggi.Year + 1900).AddMonths(-oggi.Month).AddDays(-oggi.Day + 1);
- // recupero!
- string returnData = callUrl(urlAliveClock);
- try
+ ///
+ /// Effettua chiamata URL e restituisce risultato
+ ///
+ ///
+ ///
+ public static string callUrl(string URL)
{
- DateTime.TryParse(JsonConvert.DeserializeObject(returnData), out answ);
+ string answ = "";
+ var client = new WebClientWT();
+ //var client = new WebClient();
+ client.Headers.Add("user-agent", "NKC_SDK");
+ try
+ {
+ answ = client.DownloadString(URL);
+ }
+ catch (Exception exc)
+ {
+ Log.Instance.Error($"Eccezione durante callUrl per URL: {URL}{Environment.NewLine}{exc}");
+ answ = exc.Message;
+ }
+ // restituisco valore!
+ return answ;
}
- catch (Exception exc)
+ ///
+ /// Effettua chiamata URL e restituisce risultato
+ ///
+ ///
+ ///
+ ///
+ public static string callUrl(string URL, string payload)
{
- Log.Instance.Error($"Eccezione durante testClock, ricevuto {returnData}{Environment.NewLine}{exc}");
+ string answ = "";
+ var client = new WebClientWT();
+ client.Headers.Add("user-agent", "NKC_SDK");
+ try
+ {
+ answ = client.UploadString(URL, payload);
+ }
+ catch (Exception exc)
+ {
+ Log.Instance.Error($"Eccezione durante callUrl per URL: {URL} | payload: {payload}{Environment.NewLine}{exc}");
+ answ = exc.Message;
+ }
+ // restituisco valore!
+ return answ;
}
- // rendo!
- return answ;
- }
- }
- #region metodi per SheetWorklist
+ ///
+ /// Effettua chiamata PUT
+ ///
+ ///
+ ///
+ ///
+ public static string putData(string URL, string payload)
+ {
+ string answ = "";
+ var client = new WebClientWT();
+ client.Headers.Add("user-agent", "NKC_SDK");
+ // importante x evitare errore 415 di dataType non ammesso
+ client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
+ try
+ {
+ // va messo "PUT" e va configurato IIS per accettare PUT
+ answ = client.UploadString(URL, "PUT", payload);
+ answ = "ok";
+ }
+ catch (Exception exc)
+ {
+ Log.Instance.Error($"Eccezione durante putData per {URL}{Environment.NewLine}{exc}");
+ answ = exc.Message;
+ }
+ // restituisco valore!
+ return answ;
+ }
- ///
- /// Recupera elenco dei fogli ATTIVI
- /// - effettua chiamata tramite REST API HTTP
- /// - il risutlato viene deserializzato nell'oggetto richiesto
- ///
- ///
- public SheetWorkList getCurrentSheets()
- {
- SheetWorkList answ = null;
- string rawdata = "";
- // chiamo metodo x recupero WBunk...
- try
- {
- rawdata = callUrl(urlCurrSheet4Mac);
- answ = JsonConvert.DeserializeObject(rawdata);
- }
- catch (Exception exc)
- {
- Log.Instance.Error($"Eccezione durante getCurrentSheets, ricevuto {rawdata}{Environment.NewLine}{exc}");
- }
- return answ;
- }
- ///
- /// Effettua salvataggio dell'elenco dei fogli (1..n) su NKC
- ///
- ///
- public bool saveSheets(SheetWorkList updatedSheetList)
- {
- bool answ = false;
- string rawdata = "";
- try
- {
- // serializzo oggetto
- rawdata = JsonConvert.SerializeObject(updatedSheetList);
- // invio con metodo put!
- putData(urlPutSheetList, rawdata);
- answ = true;
- }
- catch (Exception exc)
- {
- Log.Instance.Error($"Eccezione durante saveSheets, ricevuto {rawdata}{Environment.NewLine}{exc}");
- }
- return answ;
- }
- ///
- /// Oggetto che contiene l'oggetto SHEET WorkList corrente salvato LOCALMENTE
- ///
- public SheetWorkList persistedSheetList
- {
- get
- {
- SheetWorkList answ = new SheetWorkList();
- try
- {
- string rawdata = File.ReadAllText(persistFileName);
- answ = JsonConvert.DeserializeObject(rawdata);
- }
- catch (Exception exc)
- {
- Log.Instance.Error($"Eccezione durante recupero locale della SheetList{Environment.NewLine}{exc}");
- }
- return answ;
- }
- set
- {
- try
- {
- // serializzo oggetto
- string rawdata = JsonConvert.SerializeObject(value);
- // salvo in locale
- File.WriteAllText(persistFileName, rawdata);
- }
- catch (Exception exc)
- {
- Log.Instance.Error($"Eccezione durante salvataggio locale della SheetList{Environment.NewLine}{exc}");
- }
- }
- }
- #endregion
+ #endregion
+
+ #region URL di base
+
+ protected string urlAlive
+ {
+ get
+ {
+ return $"{_baseUrl}api/Alive";
+ }
+ }
+ protected string urlAliveClock
+ {
+ get
+ {
+ return $"{_baseUrl}api/Alive/1";
+ }
+ }
+ protected string urlCurrBunk
+ {
+ get
+ {
+ return $"{_baseUrl}api/Bunk";
+ }
+ }
+ protected string urlCurrSheet4Mac
+ {
+ get
+ {
+ return $"{_baseUrl}api/Sheet/{_codPost}";
+ }
+ }
+ protected string urlGetBunk(int currBunkId)
+ {
+ return $"{_baseUrl}api/Bunk/{currBunkId}?showNext=false";
+ }
+ protected string urlNextBunk(int currBunkId)
+ {
+ return $"{_baseUrl}api/Bunk/{currBunkId}?showNext=true";
+ }
+ protected string urlPutBunk(int currBunkId)
+ {
+ return $"{_baseUrl}api/Bunk/{currBunkId}";
+ }
+ ///
+ /// URL x salvataggio dati SHEET
+ ///
+ ///
+ protected string urlPutSheetList
+ {
+ get
+ {
+ return $"{_baseUrl}api/Sheet/{_codPost}";
+ }
+ }
+ ///
+ /// file locale per persistenza BUNK
+ ///
+ protected string persistFileName = "data/persistFile.json";
+
+ #endregion
+
+ ///
+ /// URL di base per la comunicazione
+ ///
+ /// PROD: http://seriate.steamware.net:8083/NKC/
+ /// DEV: https://localhost:44388/
+ ///
+ protected string _baseUrl { get; set; } = @"http://seriate.steamware.net:8083/NKC/";
+ ///
+ /// DnsName/IP di base x chaimate
+ ///
+ protected string _baseIp { get; set; } = "seriate.steamware.net";
+ ///
+ /// COD macchina x cui si effettua chiamata
+ ///
+ protected string _codPost { get; set; } = "";
+
+ ///
+ /// Classe per effettuare comunicazioni con NKC
+ ///
+ /// IP di base x ping
+ /// URL di abse x chiamate REST
+ /// Codice posstazione/macchina x cui si fa chiamata
+ public NKC(string baseIp, string baseUrl, string codPost)
+ {
+ _baseIp = baseIp;
+ _baseUrl = baseUrl;
+ _codPost = codPost;
+ }
+ ///
+ /// Effettua test ping all'indirizzo del server
+ ///
+ public PingReply testPing
+ {
+ get
+ {
+ Ping myPing = new Ping();
+ // timeout a 1 sec!
+ PingReply answ = myPing.Send(_baseIp, 1000);
+ // rendo!
+ return answ;
+ }
+ }
+ ///
+ /// Effettua test alive all'indirizzo del server
+ ///
+ public bool testAlive
+ {
+ get
+ {
+ bool answ = false;
+ string returnData = callUrl(urlAlive);
+ returnData = JsonConvert.DeserializeObject(returnData);
+ answ = returnData == "OK";
+ // rendo!
+ return answ;
+ }
+ }
+ ///
+ /// Effettua test ping all'indirizzo del server
+ ///
+ public DateTime testClock
+ {
+ get
+ {
+ DateTime oggi = DateTime.Today;
+ DateTime answ = oggi.AddYears(-oggi.Year + 1900).AddMonths(-oggi.Month).AddDays(-oggi.Day + 1);
+ // recupero!
+ string returnData = callUrl(urlAliveClock);
+ try
+ {
+ DateTime.TryParse(JsonConvert.DeserializeObject(returnData), out answ);
+ }
+ catch (Exception exc)
+ {
+ Log.Instance.Error($"Eccezione durante testClock, ricevuto {returnData}{Environment.NewLine}{exc}");
+ }
+ // rendo!
+ return answ;
+ }
+ }
+
+ #region metodi per SheetWorklist
+
+ ///
+ /// Recupera elenco dei fogli ATTIVI
+ /// - effettua chiamata tramite REST API HTTP
+ /// - il risutlato viene deserializzato nell'oggetto richiesto
+ ///
+ ///
+ public SheetWorkList getCurrentSheets()
+ {
+ SheetWorkList answ = null;
+ string rawdata = "";
+ // chiamo metodo x recupero WBunk...
+ try
+ {
+ rawdata = callUrl(urlCurrSheet4Mac);
+ answ = JsonConvert.DeserializeObject(rawdata);
+ }
+ catch (Exception exc)
+ {
+ Log.Instance.Error($"Eccezione durante getCurrentSheets, ricevuto {rawdata}{Environment.NewLine}{exc}");
+ }
+ return answ;
+ }
+ ///
+ /// Effettua salvataggio dell'elenco dei fogli (1..n) su NKC
+ ///
+ ///
+ public bool saveSheets(SheetWorkList updatedSheetList)
+ {
+ bool answ = false;
+ string rawdata = "";
+ try
+ {
+ // serializzo oggetto
+ rawdata = JsonConvert.SerializeObject(updatedSheetList);
+ // invio con metodo put!
+ putData(urlPutSheetList, rawdata);
+ answ = true;
+ }
+ catch (Exception exc)
+ {
+ Log.Instance.Error($"Eccezione durante saveSheets, ricevuto {rawdata}{Environment.NewLine}{exc}");
+ }
+ return answ;
+ }
+ ///
+ /// Oggetto che contiene l'oggetto SHEET WorkList corrente salvato LOCALMENTE
+ ///
+ public SheetWorkList persistedSheetList
+ {
+ get
+ {
+ SheetWorkList answ = new SheetWorkList();
+ try
+ {
+ string rawdata = File.ReadAllText(persistFileName);
+ answ = JsonConvert.DeserializeObject(rawdata);
+ }
+ catch (Exception exc)
+ {
+ Log.Instance.Error($"Eccezione durante recupero locale della SheetList{Environment.NewLine}{exc}");
+ }
+ return answ;
+ }
+ set
+ {
+ try
+ {
+ // serializzo oggetto
+ string rawdata = JsonConvert.SerializeObject(value);
+ // salvo in locale
+ File.WriteAllText(persistFileName, rawdata);
+ }
+ catch (Exception exc)
+ {
+ Log.Instance.Error($"Eccezione durante salvataggio locale della SheetList{Environment.NewLine}{exc}");
+ }
+ }
+ }
+
+ #endregion
#if false
- #region metodi per BUNK
+ #region metodi per BUNK
///
/// Recupera il PRIMO BUNK
@@ -439,8 +439,8 @@ namespace NKC_SDK
}
}
- #endregion
+ #endregion
#endif
- }
+ }
}
diff --git a/NKC_SDK/Objects.cs b/NKC_SDK/Objects.cs
index bf106cf..266e36f 100644
--- a/NKC_SDK/Objects.cs
+++ b/NKC_SDK/Objects.cs
@@ -6,677 +6,677 @@ using System.Collections.Generic;
namespace NKC_SDK
{
- #region classi per NESTING
+ #region classi per NESTING
- ///
- /// Classe che rappresenta la richiesta di AZIONI al NESTING
- ///
- public class commandRequest
- {
///
- /// ID del processo richiesto (generato in fase di import)
+ /// Classe che rappresenta la richiesta di AZIONI al NESTING
///
- public int BatchID { get; set; }
- ///
- /// Richiesta per il nesting: DoNesting / HaltNesting
- ///
- public string ActionRequested { get; set; }
- }
- ///
- /// Classe che rappresenta la richiesta di processing di NESTING da inserire in REDIS
- ///
- public class batchRequest
- {
- ///
- /// ID del processo richiesto (generato in fase di import)
- ///
- public int BatchId { get; set; }
- ///
- /// ID univoco dell'invio del TASK
- ///
- public string EnvNum { get; set; } = "";
- ///
- /// tempo amssimo eprmesso x nesting (minuti)
- ///
- public int MaxTime { get; set; }
- ///
- /// Tipo di processing richiesto
- /// 1 = stima
- /// 2 = nesting
- ///
- public int ProcType { get; set; }
- ///
- /// Codice della amcchina x cui si effettua richeista
- ///
- [JsonConverter(typeof(StringEnumConverter))]
- public mType MachineType { get; set; }
- ///
- /// Tipo di ordine richiesto
- ///
- [JsonConverter(typeof(StringEnumConverter))]
- public oType OrderType { get; set; }
- ///
- /// Elenco ordini richeisti da processare / nestare
- ///
- public List OrderList { get; set; }
- }
- ///
- /// Struttura Ordine passata a NESTING
- ///
- public class Order
- {
- ///
- /// ID Ordine (da DB)
- ///
- public int OrderId { get; set; } = 0;
- ///
- /// Cod ordine di NKC
- ///
- public string OrderCod { get; set; }
- ///
- /// Codice ordine esterno da cliente (HFA)
- ///
- public string OrderExtCode { get; set; }
- ///
- /// Plant di destinazione
- ///
- public string DestPlant { get; set; }
-
- ///
- /// Elenco dei KIT dell'ordine
- ///
- public List KitList { get; set; }
- }
- ///
- /// Oggetto KIT
- ///
- public class Kit
- {
- ///
- /// ID KIT (da DB)
- ///
- public int KitId { get; set; } = 0;
- ///
- /// Codice KIT da cod ordine ext
- ///
- public string KitExtCode { get; set; } = "";
- ///
- /// Elenco Items da produrre x KIT
- ///
- public List PartList { get; set; }
- }
- ///
- /// Struttura Item passata a NESTING
- ///
- public class Part
- {
- ///
- /// Cod ITEM di NKC
- ///
- public int PartId { get; set; } = 0;
- ///
- /// Codice ITEM esterno da cliente (HFA)
- ///
- public string PartExtCode { get; set; }
- ///
- /// Codice Datamatrix dell'ITEM
- ///
- public string PartDtmx { get; set; } = "";
- ///
- /// Quantità di Item per SINGOLO ordine
- ///
- public int PartQty { get; set; }
- ///
- /// ID del materiale dell'item
- ///
- public int MatId { get; set; }
- ///
- /// Path del disegno CAD dell'item da produrre x NESTING
- ///
- public string CadFilePath { get; set; }
- ///
- /// Parametri opzionali (es x risposta NESTING)
- ///
- public Dictionary OptParameters { get; set; } = null;
- }
- ///
- /// Descrizione di un ITEM in fase di scarico
- ///
- public class PartUnload : Part
- {
- ///
- /// Destinazione dell'item
- ///
- public ItemDest NextDest { get; set; } = ItemDest.Undef;
- ///
- /// Stato dell'item
- ///
- public ItemStatus Status { get; set; } = ItemStatus.Undef;
- ///
- /// Elenco di Secop opzionali (es T-NUT, RoundEdge)
- ///
- public List SecOp { get; set; } = new List();
- }
-
-
-
- ///
- /// Classe Sheet x Nesting
- ///
- public class NestSheet
- {
- ///
- /// Identificativo univoco Sheet
- ///
- public String SheetId { get; set; } = "";
- ///
- /// Indice dello sheet
- ///
- public int SheetIndex { get; set; } = 0;
- ///
- /// Materiale
- ///
- public int MatId { get; set; }
- ///
- /// Tempo STIMATO di taglio calcolato dal Nesting espresso in Secondi
- ///
- public double EstimatedWorktime { get; set; } = 0;
- ///
- /// Superficie WORK (lavorata/tagliata) del foglio lavorato (= somma area dei pezzi disposti)
- ///
- public double SurfaceWork { get; set; } = 0;
- ///
- /// Superficie totale del foglio lavorato (= materiale)
- ///
- public double SurfaceTotal { get; set; } = 1;
- ///
- /// Resa (OEE) dell'impiego del materiale
- ///
- public double SurfaceOEE
+ public class commandRequest
{
- get
- {
- double answ = 0;
- try
- {
- answ = SurfaceWork / SurfaceTotal;
- }
- catch
- { }
- return answ;
- }
+ ///
+ /// ID del processo richiesto (generato in fase di import)
+ ///
+ public int BatchID { get; set; }
+ ///
+ /// Richiesta per il nesting: DoNesting / HaltNesting
+ ///
+ public string ActionRequested { get; set; }
}
///
- /// Programma x printing
+ /// Classe che rappresenta la richiesta di processing di NESTING da inserire in REDIS
///
- public string PrintProgram { get; set; } = "";
- ///
- /// Programma x Machining
- ///
- public string MachiningProgram { get; set; } = "";
- ///
- /// SVG del lavoro previsto
- ///
- public string Drawing { get; set; } = "";
- ///
- /// Elenco Part da produrre x ordine
- ///
- public List PartList { get; set; } = null;
- ///
- /// Eventuale remnant
- ///
- public NestRemn Remnant { get; set; }
- }
- ///
- /// Dati di un foglio di Remnant
- ///
- public class NestRemn
- {
- ///
- /// Dimensione L del remnant
- ///
- public decimal L_mm { get; set; } = 0;
- ///
- /// Dimensione W del remnant
- ///
- public decimal W_mm { get; set; } = 0;
- }
- ///
- /// Struttura stack
- ///
- public class NestBunk
- {
- ///
- /// Identificativo univoco stack
- ///
- public String BunkId { get; set; } = "";
- ///
- /// Indice del Bunk
- ///
- public int BunkIndex { get; set; } = 0;
- ///
- /// Num di fogli nello stack
- ///
- public int NumSheet
+ public class batchRequest
{
- get
- {
- int answ = 0;
- if (SheetList != null)
- {
- answ = SheetList.Count;
- }
- return answ;
- }
+ ///
+ /// ID del processo richiesto (generato in fase di import)
+ ///
+ public int BatchId { get; set; }
+ ///
+ /// ID univoco dell'invio del TASK
+ ///
+ public string EnvNum { get; set; } = "";
+ ///
+ /// tempo amssimo eprmesso x nesting (minuti)
+ ///
+ public int MaxTime { get; set; }
+ ///
+ /// Tipo di processing richiesto
+ /// 1 = stima
+ /// 2 = nesting
+ ///
+ public int ProcType { get; set; }
+ ///
+ /// Codice della amcchina x cui si effettua richeista
+ ///
+ [JsonConverter(typeof(StringEnumConverter))]
+ public mType MachineType { get; set; }
+ ///
+ /// Tipo di ordine richiesto
+ ///
+ [JsonConverter(typeof(StringEnumConverter))]
+ public oType OrderType { get; set; }
+ ///
+ /// Elenco ordini richeisti da processare / nestare
+ ///
+ public List OrderList { get; set; }
}
///
- /// Elenco Sheet previsti
+ /// Struttura Ordine passata a NESTING
///
- public List SheetList { get; set; }
- }
- ///
- /// Definizione classe x materiali
- ///
- public class Material
- {
- public int MatId { get; set; } = 0;
- public int MatExtCode { get; set; } = 0;
- public string MatDesc { get; set; } = "";
- public DateTime ApprovDate { get; set; } = DateTime.Now;
- public string ApprovUser { get; set; } = "";
- public decimal L_mm { get; set; } = 0;
- public decimal W_mm { get; set; } = 0;
- public decimal T_mm { get; set; } = 0;
- public string MatDtmx { get; set; } = "";
- }
-
- ///
- /// Classe che rappresenta stato ordine ricevuto via REDIS da NESTING
- ///
- public class baseNestAnsw
- {
- ///
- /// ID univoco invio del TASK
- ///
- public string EnvNum { get; set; } = "";
- ///
- /// Tipo di processing richiesto
- /// 1 = stima
- /// 2 = nesting
- ///
- public int ProcType { get; set; } = 0;
- ///
- /// Codice della amcchina x cui si effettua richiesta
- ///
- [JsonConverter(typeof(StringEnumConverter))]
- public mType MachineType { get; set; } = mType.Multiax;
- ///
- /// Tipo di ordine richiesto
- ///
- [JsonConverter(typeof(StringEnumConverter))]
- public oType OrderType { get; set; } = oType.BatchRequest;
- ///
- /// Status del processo di nesting
- ///
- public procStatus ProcessStatus { get; set; } = procStatus.waiting;
- ///
- /// Note libere del nesting
- ///
- public string ProcessNotes { get; set; } = "";
- ///
- /// Tempo di processing del Nesting espresso in Secondi
- ///
- public double ProcessingRuntime { get; set; } = 0;
- ///
- /// Tempo STIMATO di taglio calcolato dal Nesting espresso in Secondi
- ///
- public double EstimatedWorktime { get; set; } = 0;
- ///
- /// Elenco errori riscontrati
- ///
- public List ErrorList { get; set; } = null;
- }
- ///
- /// Risposta NESTING x la STIMA iniziale
- ///
- public class nestReplyBatchInitial : orderStatus
- {
- ///
- /// Elenco Items da produrre x ordine
- ///
- public List PartList { get; set; }
- }
- ///
- /// Risposta NESTING x la STIMA iniziale
- ///
- public class nestReplyBatchFinal : orderStatus
- {
- ///
- /// Elenco Stack previsti
- ///
- public List BunkList { get; set; }
- ///
- /// Elenco Carts
- ///
- public List CartList { get; set; }
- ///
- /// Elenco Bin
- ///
- public List BinList { get; set; }
- }
-
- ///
- /// Dati di un Cart post nesting
- ///
- public class NestCart
- {
- ///
- /// Indice del CART nel TAKC / giorno
- ///
- public int CartIndex { get; set; } = 0;
- ///
- /// Elenco dei KIT dell'ordine
- ///
- public List KitList { get; set; }
- }
- ///
- /// Dati di un Cart post nesting
- ///
- public class NestBin
- {
- ///
- /// Indice del BIN nel TAKT / giorno
- ///
- public int BinIndex { get; set; } = 0;
- ///
- /// Elenco dei PART/ITEM dell'Ordine
- ///
- public List PartList { get; set; }
- }
- ///
- /// Classe che rappresenta stato ordine ricevuto via REDIS da NESTING
- ///
- public class orderStatus : baseNestAnsw
- {
- ///
- /// ID del processo di Nesting in corso (generato in fase di import)
- ///
- public int BatchID { get; set; }
- }
-
- public class nestReplyOffOrd : orderStatus
- {
- ///
- /// ID dell'ordine offlien da processare
- ///
- public string OffOrderID { get; set; } = "";
-
- ///
- /// Num di fogli nello stack
- ///
- public int NumSheet
+ public class Order
{
- get
- {
- int answ = 0;
- if (SheetList != null)
- {
- answ = SheetList.Count;
- }
- return answ;
- }
+ ///
+ /// ID Ordine (da DB)
+ ///
+ public int OrderId { get; set; } = 0;
+ ///
+ /// Cod ordine di NKC
+ ///
+ public string OrderCod { get; set; }
+ ///
+ /// Codice ordine esterno da cliente (HFA)
+ ///
+ public string OrderExtCode { get; set; }
+ ///
+ /// Plant di destinazione
+ ///
+ public string DestPlant { get; set; }
+
+ ///
+ /// Elenco dei KIT dell'ordine
+ ///
+ public List KitList { get; set; }
}
///
- /// Elenco Sheet previsti
+ /// Oggetto KIT
///
- public List SheetList { get; set; }
- }
- ///
- /// Oggetto errore da poter rispondere con chiamate x stima/nesting
- ///
- public class ErrorRep
- {
- ///
- /// DataOra registrazione record
- ///
- public DateTime DtRif { get; set; } = DateTime.Now;
- ///
- /// Tipo di errore
- ///
- public string ErrType { get; set; } = "NA";
- ///
- /// Chiave di riferimento PARENT per l'errore (es il codice del batch, dell'item)
- /// es: BatchId.OrderId.Row
- ///
- public string ParentUid { get; set; } = "A.B.C";
- ///
- /// Chiave univoca per l'errore
- /// es: BatchId.OrderId.Row.PartId...
- ///
- public string Uid { get; set; } = "A.B.C.D";
- ///
- /// Descrizione estesa (human readable) dell'errore
- ///
- public string Description { get; set; } = "";
- }
-
- #endregion
-
- #region classi per PROD
-
- ///
- /// dati del materiale
- ///
- public class MaterialData
- {
- ///
- /// Identificativo univoco del materiale (DA ANAGRAFICA db)
- ///
- public int MaterialId { get; set; }
- ///
- /// Codice P/N del materiale (cliente)
- ///
- public string MaterialPN { get; set; }
- ///
- /// Codice P/N del materiale (cliente)
- ///
- public string MaterialDescription { get; set; }
- }
- ///
- /// Dati della lavorazione
- ///
- public class WorkData
- {
- ///
- /// Indica che la lavorazione è stata eseguita con successo (default = true)
- ///
- public bool Success { get; set; }
- ///
- /// Percorso del programma da eseguire
- ///
- public string ProgramPath { get; set; }
- ///
- /// Data inizio processing
- ///
- public DateTime? DtStart { get; set; }
- ///
- /// Data fine processing
- ///
- public DateTime? DtEnd { get; set; }
- ///
- /// Tempo di lavorazione in minuti decimali
- ///
- public double WorkTimeMin
+ public class Kit
{
- get
- {
- double answ = 0;
- if (DtStart != null && DtEnd != null)
- {
- try
- {
- answ = ((DateTime)DtEnd).Subtract((DateTime)DtStart).TotalMinutes;
- }
- catch
- { }
- }
- return answ;
- }
+ ///
+ /// ID KIT (da DB)
+ ///
+ public int KitId { get; set; } = 0;
+ ///
+ /// Codice KIT da cod ordine ext
+ ///
+ public string KitExtCode { get; set; } = "";
+ ///
+ /// Elenco Items da produrre x KIT
+ ///
+ public List PartList { get; set; }
}
- }
- ///
- /// Estensione classe sheet comprensiva di BunkId
- ///
- public class ProdSheetExt: ProdSheet
- {
///
- /// Identificativo univoco BUNK / Stack
+ /// Struttura Item passata a NESTING
///
- public int BunkId { get; set; }
- ///
- /// INDICE del pannello (valido per BUNK)
- ///
- public int SheetIndex { get; set; }
- }
-
- ///
- /// Singolo Pannello IN LAVORAZIONE
- ///
- public class ProdSheet
- {
- ///
- /// Identificativo univoco pannello
- ///
- public int SheetId { get; set; }
- ///
- /// Materiale
- ///
- public MaterialData Material { get; set; }
- ///
- /// Stato del pannello
- ///
- public PStatus Status { get; set; }
- ///
- /// Tempi processo x fase printing
- ///
- public WorkData Printing { get; set; }
- ///
- /// Tempi processo x fase CNC
- ///
- public WorkData Machining { get; set; }
- ///
- /// Tempi processo x scarico
- ///
- public WorkData Unloading { get; set; }
-
- }
-
-
- ///
- /// Classe che rappresenta un insieme di Sheet da lavorare (contenuti in 1 o + bunk)
- ///
- public class SheetWorkList
- {
- ///
- /// Elenco dei pannelli (sheets) in lavorazione
- ///
- public List SheetList { get; set; }
- ///
- /// Numero di Sheets da lavorare
- ///
- public int NumSheets
+ public class Part
{
- get
- {
- int answ = 0;
- try
- {
- answ = SheetList.Count;
- }
- catch
- { }
- return answ;
- }
+ ///
+ /// Cod ITEM di NKC
+ ///
+ public int PartId { get; set; } = 0;
+ ///
+ /// Codice ITEM esterno da cliente (HFA)
+ ///
+ public string PartExtCode { get; set; }
+ ///
+ /// Codice Datamatrix dell'ITEM
+ ///
+ public string PartDtmx { get; set; } = "";
+ ///
+ /// Quantità di Item per SINGOLO ordine
+ ///
+ public int PartQty { get; set; }
+ ///
+ /// ID del materiale dell'item
+ ///
+ public int MatId { get; set; }
+ ///
+ /// Path del disegno CAD dell'item da produrre x NESTING
+ ///
+ public string CadFilePath { get; set; }
+ ///
+ /// Parametri opzionali (es x risposta NESTING)
+ ///
+ public Dictionary OptParameters { get; set; } = null;
}
- }
-
- ///
- /// Classe che rappresenta i BUNK da lavorare
- ///
- public class ProdBunk
- {
///
- /// Identificativo univoco BUNK / Stack
+ /// Descrizione di un ITEM in fase di scarico
///
- public int BunkId { get; set; }
- ///
- /// Stato dello Stack di pannelli
- ///
- public CStatus Status { get; set; }
- ///
- /// Codice dataMatrix del BUNK
- ///
- public string DataMatrix { get; set; }
- ///
- /// Data inizio processing del BUNK
- ///
- public DateTime DtStart { get; set; }
- ///
- /// Data inizio processing dello Stack
- ///
- public DateTime DtEnd { get; set; }
- ///
- /// Elenco dei pannelli(sheets) dello Stack
- ///
- public List SheetList { get; set; }
- ///
- /// Numero di Sheets da lavorare
- ///
- public int NumSheets
+ public class PartUnload : Part
{
- get
- {
- int answ = 0;
- try
- {
- answ = SheetList.Count;
- }
- catch
- { }
- return answ;
- }
+ ///
+ /// Destinazione dell'item
+ ///
+ public ItemDest NextDest { get; set; } = ItemDest.Undef;
+ ///
+ /// Stato dell'item
+ ///
+ public ItemStatus Status { get; set; } = ItemStatus.Undef;
+ ///
+ /// Elenco di Secop opzionali (es T-NUT, RoundEdge)
+ ///
+ public List SecOp { get; set; } = new List();
}
- }
-
- ///
- /// Valori decodificati
- ///
- public class decodedData
- {
- ///
- /// Tipo codice decodificato
- ///
- public codeType codeType { get; set; } = codeType.UNK;
- ///
- /// Codice decodificato
- ///
- public string code { get; set; } = "";
- ///
- /// Codice decodificato in formato INT
- ///
- public int codeInt { get; set; } = 0;
- ///
- /// Descrizione associata
- ///
- public string description { get; set; } = "";
- ///
- /// Dato letto RAW
- ///
- public string rawData { get; set; } = "";
- }
- #endregion
-
+
+ ///
+ /// Classe Sheet x Nesting
+ ///
+ public class NestSheet
+ {
+ ///
+ /// Identificativo univoco Sheet
+ ///
+ public String SheetId { get; set; } = "";
+ ///
+ /// Indice dello sheet
+ ///
+ public int SheetIndex { get; set; } = 0;
+ ///
+ /// Materiale
+ ///
+ public int MatId { get; set; }
+ ///
+ /// Tempo STIMATO di taglio calcolato dal Nesting espresso in Secondi
+ ///
+ public double EstimatedWorktime { get; set; } = 0;
+ ///
+ /// Superficie WORK (lavorata/tagliata) del foglio lavorato (= somma area dei pezzi disposti)
+ ///
+ public double SurfaceWork { get; set; } = 0;
+ ///
+ /// Superficie totale del foglio lavorato (= materiale)
+ ///
+ public double SurfaceTotal { get; set; } = 1;
+ ///
+ /// Resa (OEE) dell'impiego del materiale
+ ///
+ public double SurfaceOEE
+ {
+ get
+ {
+ double answ = 0;
+ try
+ {
+ answ = SurfaceWork / SurfaceTotal;
+ }
+ catch
+ { }
+ return answ;
+ }
+ }
+ ///
+ /// Programma x printing
+ ///
+ public string PrintProgram { get; set; } = "";
+ ///
+ /// Programma x Machining
+ ///
+ public string MachiningProgram { get; set; } = "";
+ ///
+ /// SVG del lavoro previsto
+ ///
+ public string Drawing { get; set; } = "";
+ ///
+ /// Elenco Part da produrre x ordine
+ ///
+ public List PartList { get; set; } = null;
+ ///
+ /// Eventuale remnant
+ ///
+ public NestRemn Remnant { get; set; }
+ }
+ ///
+ /// Dati di un foglio di Remnant
+ ///
+ public class NestRemn
+ {
+ ///
+ /// Dimensione L del remnant
+ ///
+ public decimal L_mm { get; set; } = 0;
+ ///
+ /// Dimensione W del remnant
+ ///
+ public decimal W_mm { get; set; } = 0;
+ }
+ ///
+ /// Struttura stack
+ ///
+ public class NestBunk
+ {
+ ///
+ /// Identificativo univoco stack
+ ///
+ public String BunkId { get; set; } = "";
+ ///
+ /// Indice del Bunk
+ ///
+ public int BunkIndex { get; set; } = 0;
+ ///
+ /// Num di fogli nello stack
+ ///
+ public int NumSheet
+ {
+ get
+ {
+ int answ = 0;
+ if (SheetList != null)
+ {
+ answ = SheetList.Count;
+ }
+ return answ;
+ }
+ }
+ ///
+ /// Elenco Sheet previsti
+ ///
+ public List SheetList { get; set; }
+ }
+ ///
+ /// Definizione classe x materiali
+ ///
+ public class Material
+ {
+ public int MatId { get; set; } = 0;
+ public int MatExtCode { get; set; } = 0;
+ public string MatDesc { get; set; } = "";
+ public DateTime ApprovDate { get; set; } = DateTime.Now;
+ public string ApprovUser { get; set; } = "";
+ public decimal L_mm { get; set; } = 0;
+ public decimal W_mm { get; set; } = 0;
+ public decimal T_mm { get; set; } = 0;
+ public string MatDtmx { get; set; } = "";
+ }
+
+ ///
+ /// Classe che rappresenta stato ordine ricevuto via REDIS da NESTING
+ ///
+ public class baseNestAnsw
+ {
+ ///
+ /// ID univoco invio del TASK
+ ///
+ public string EnvNum { get; set; } = "";
+ ///
+ /// Tipo di processing richiesto
+ /// 1 = stima
+ /// 2 = nesting
+ ///
+ public int ProcType { get; set; } = 0;
+ ///
+ /// Codice della amcchina x cui si effettua richiesta
+ ///
+ [JsonConverter(typeof(StringEnumConverter))]
+ public mType MachineType { get; set; } = mType.Multiax;
+ ///
+ /// Tipo di ordine richiesto
+ ///
+ [JsonConverter(typeof(StringEnumConverter))]
+ public oType OrderType { get; set; } = oType.BatchRequest;
+ ///
+ /// Status del processo di nesting
+ ///
+ public procStatus ProcessStatus { get; set; } = procStatus.waiting;
+ ///
+ /// Note libere del nesting
+ ///
+ public string ProcessNotes { get; set; } = "";
+ ///
+ /// Tempo di processing del Nesting espresso in Secondi
+ ///
+ public double ProcessingRuntime { get; set; } = 0;
+ ///
+ /// Tempo STIMATO di taglio calcolato dal Nesting espresso in Secondi
+ ///
+ public double EstimatedWorktime { get; set; } = 0;
+ ///
+ /// Elenco errori riscontrati
+ ///
+ public List ErrorList { get; set; } = null;
+ }
+ ///
+ /// Risposta NESTING x la STIMA iniziale
+ ///
+ public class nestReplyBatchInitial : orderStatus
+ {
+ ///
+ /// Elenco Items da produrre x ordine
+ ///
+ public List PartList { get; set; }
+ }
+ ///
+ /// Risposta NESTING x la STIMA iniziale
+ ///
+ public class nestReplyBatchFinal : orderStatus
+ {
+ ///
+ /// Elenco Stack previsti
+ ///
+ public List BunkList { get; set; }
+ ///
+ /// Elenco Carts
+ ///
+ public List CartList { get; set; }
+ ///
+ /// Elenco Bin
+ ///
+ public List BinList { get; set; }
+ }
+
+ ///
+ /// Dati di un Cart post nesting
+ ///
+ public class NestCart
+ {
+ ///
+ /// Indice del CART nel TAKC / giorno
+ ///
+ public int CartIndex { get; set; } = 0;
+ ///
+ /// Elenco dei KIT dell'ordine
+ ///
+ public List KitList { get; set; }
+ }
+ ///
+ /// Dati di un Cart post nesting
+ ///
+ public class NestBin
+ {
+ ///
+ /// Indice del BIN nel TAKT / giorno
+ ///
+ public int BinIndex { get; set; } = 0;
+ ///
+ /// Elenco dei PART/ITEM dell'Ordine
+ ///
+ public List PartList { get; set; }
+ }
+ ///
+ /// Classe che rappresenta stato ordine ricevuto via REDIS da NESTING
+ ///
+ public class orderStatus : baseNestAnsw
+ {
+ ///
+ /// ID del processo di Nesting in corso (generato in fase di import)
+ ///
+ public int BatchID { get; set; }
+ }
+
+ public class nestReplyOffOrd : orderStatus
+ {
+ ///
+ /// ID dell'ordine offlien da processare
+ ///
+ public string OffOrderID { get; set; } = "";
+
+ ///
+ /// Num di fogli nello stack
+ ///
+ public int NumSheet
+ {
+ get
+ {
+ int answ = 0;
+ if (SheetList != null)
+ {
+ answ = SheetList.Count;
+ }
+ return answ;
+ }
+ }
+ ///
+ /// Elenco Sheet previsti
+ ///
+ public List SheetList { get; set; }
+ }
+ ///
+ /// Oggetto errore da poter rispondere con chiamate x stima/nesting
+ ///
+ public class ErrorRep
+ {
+ ///
+ /// DataOra registrazione record
+ ///
+ public DateTime DtRif { get; set; } = DateTime.Now;
+ ///
+ /// Tipo di errore
+ ///
+ public string ErrType { get; set; } = "NA";
+ ///
+ /// Chiave di riferimento PARENT per l'errore (es il codice del batch, dell'item)
+ /// es: BatchId.OrderId.Row
+ ///
+ public string ParentUid { get; set; } = "A.B.C";
+ ///
+ /// Chiave univoca per l'errore
+ /// es: BatchId.OrderId.Row.PartId...
+ ///
+ public string Uid { get; set; } = "A.B.C.D";
+ ///
+ /// Descrizione estesa (human readable) dell'errore
+ ///
+ public string Description { get; set; } = "";
+ }
+
+ #endregion
+
+ #region classi per PROD
+
+ ///
+ /// dati del materiale
+ ///
+ public class MaterialData
+ {
+ ///
+ /// Identificativo univoco del materiale (DA ANAGRAFICA db)
+ ///
+ public int MaterialId { get; set; }
+ ///
+ /// Codice P/N del materiale (cliente)
+ ///
+ public string MaterialPN { get; set; }
+ ///
+ /// Codice P/N del materiale (cliente)
+ ///
+ public string MaterialDescription { get; set; }
+ }
+ ///
+ /// Dati della lavorazione
+ ///
+ public class WorkData
+ {
+ ///
+ /// Indica che la lavorazione è stata eseguita con successo (default = true)
+ ///
+ public bool Success { get; set; }
+ ///
+ /// Percorso del programma da eseguire
+ ///
+ public string ProgramPath { get; set; }
+ ///
+ /// Data inizio processing
+ ///
+ public DateTime? DtStart { get; set; }
+ ///
+ /// Data fine processing
+ ///
+ public DateTime? DtEnd { get; set; }
+ ///
+ /// Tempo di lavorazione in minuti decimali
+ ///
+ public double WorkTimeMin
+ {
+ get
+ {
+ double answ = 0;
+ if (DtStart != null && DtEnd != null)
+ {
+ try
+ {
+ answ = ((DateTime)DtEnd).Subtract((DateTime)DtStart).TotalMinutes;
+ }
+ catch
+ { }
+ }
+ return answ;
+ }
+ }
+ }
+ ///
+ /// Estensione classe sheet comprensiva di BunkId
+ ///
+ public class ProdSheetExt : ProdSheet
+ {
+ ///
+ /// Identificativo univoco BUNK / Stack
+ ///
+ public int BunkId { get; set; }
+ ///
+ /// INDICE del pannello (valido per BUNK)
+ ///
+ public int SheetIndex { get; set; }
+ }
+
+ ///
+ /// Singolo Pannello IN LAVORAZIONE
+ ///
+ public class ProdSheet
+ {
+ ///
+ /// Identificativo univoco pannello
+ ///
+ public int SheetId { get; set; }
+ ///
+ /// Materiale
+ ///
+ public MaterialData Material { get; set; }
+ ///
+ /// Stato del pannello
+ ///
+ public PStatus Status { get; set; }
+ ///
+ /// Tempi processo x fase printing
+ ///
+ public WorkData Printing { get; set; }
+ ///
+ /// Tempi processo x fase CNC
+ ///
+ public WorkData Machining { get; set; }
+ ///
+ /// Tempi processo x scarico
+ ///
+ public WorkData Unloading { get; set; }
+
+ }
+
+
+ ///
+ /// Classe che rappresenta un insieme di Sheet da lavorare (contenuti in 1 o + bunk)
+ ///
+ public class SheetWorkList
+ {
+ ///
+ /// Elenco dei pannelli (sheets) in lavorazione
+ ///
+ public List SheetList { get; set; }
+ ///
+ /// Numero di Sheets da lavorare
+ ///
+ public int NumSheets
+ {
+ get
+ {
+ int answ = 0;
+ try
+ {
+ answ = SheetList.Count;
+ }
+ catch
+ { }
+ return answ;
+ }
+ }
+ }
+
+ ///
+ /// Classe che rappresenta i BUNK da lavorare
+ ///
+ public class ProdBunk
+ {
+ ///
+ /// Identificativo univoco BUNK / Stack
+ ///
+ public int BunkId { get; set; }
+ ///
+ /// Stato dello Stack di pannelli
+ ///
+ public CStatus Status { get; set; }
+ ///
+ /// Codice dataMatrix del BUNK
+ ///
+ public string DataMatrix { get; set; }
+ ///
+ /// Data inizio processing del BUNK
+ ///
+ public DateTime DtStart { get; set; }
+ ///
+ /// Data inizio processing dello Stack
+ ///
+ public DateTime DtEnd { get; set; }
+ ///
+ /// Elenco dei pannelli(sheets) dello Stack
+ ///
+ public List SheetList { get; set; }
+ ///
+ /// Numero di Sheets da lavorare
+ ///
+ public int NumSheets
+ {
+ get
+ {
+ int answ = 0;
+ try
+ {
+ answ = SheetList.Count;
+ }
+ catch
+ { }
+ return answ;
+ }
+ }
+ }
+
+ ///
+ /// Valori decodificati
+ ///
+ public class decodedData
+ {
+ ///
+ /// Tipo codice decodificato
+ ///
+ public codeType codeType { get; set; } = codeType.UNK;
+ ///
+ /// Codice decodificato
+ ///
+ public string code { get; set; } = "";
+ ///
+ /// Codice decodificato in formato INT
+ ///
+ public int codeInt { get; set; } = 0;
+ ///
+ /// Descrizione associata
+ ///
+ public string description { get; set; } = "";
+ ///
+ /// Dato letto RAW
+ ///
+ public string rawData { get; set; } = "";
+ }
+
+
+ #endregion
+
}
diff --git a/NKC_WF/NKC_WF.csproj b/NKC_WF/NKC_WF.csproj
index f60558c..4308a39 100644
--- a/NKC_WF/NKC_WF.csproj
+++ b/NKC_WF/NKC_WF.csproj
@@ -429,6 +429,7 @@
+
@@ -1188,6 +1189,13 @@
cmp_searchItems.ascx
+
+ cmp_secScreen.ascx
+ ASPXCodeBehind
+
+
+ cmp_secScreen.ascx
+
cmp_slider.ascx
ASPXCodeBehind
diff --git a/NKC_WF/Web.config b/NKC_WF/Web.config
index edd882e..416815b 100644
--- a/NKC_WF/Web.config
+++ b/NKC_WF/Web.config
@@ -4,408 +4,412 @@
https://go.microsoft.com/fwlink/?LinkId=169433
-->
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/NKC_WF/WebUserControls/cmp_secScreen.ascx b/NKC_WF/WebUserControls/cmp_secScreen.ascx
new file mode 100644
index 0000000..a0d60b4
--- /dev/null
+++ b/NKC_WF/WebUserControls/cmp_secScreen.ascx
@@ -0,0 +1,28 @@
+<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="cmp_secScreen.ascx.cs" Inherits="NKC_WF.WebUserControls.cmp_secScreen" %>
+
+
+
+
diff --git a/NKC_WF/WebUserControls/cmp_secScreen.ascx.cs b/NKC_WF/WebUserControls/cmp_secScreen.ascx.cs
new file mode 100644
index 0000000..bcbcb91
--- /dev/null
+++ b/NKC_WF/WebUserControls/cmp_secScreen.ascx.cs
@@ -0,0 +1,88 @@
+using AppData;
+using NKC_SDK;
+using NKC_WF.Controllers;
+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_secScreen : BaseUserControl
+ {
+ protected void Page_Load(object sender, EventArgs e)
+ {
+ if (!Page.IsPostBack)
+ {
+ showMode = true;
+ doUpdate();
+ }
+ }
+
+ public int currNum
+ {
+ get
+ {
+ int answ = 0;
+ int.TryParse(hfNum.Value, out answ);
+ return answ;
+ }
+ set
+ {
+ hfNum.Value = $"{value:000000}";
+ }
+ }
+ public bool showMode
+ {
+ get
+ {
+ bool answ = false;
+ bool.TryParse(hfShowMode.Value, out answ);
+ return answ;
+ }
+ set
+ {
+ hfShowMode.Value =value.ToString();
+ }
+ }
+
+
+ ///
+ /// restituisce URL immagine QRCode
+ ///
+ ///
+ public string getLoginUrl()
+ {
+ string baseUrl = "https://qrcode.steamware.net/HOME/QR_site/JSON?val=";
+ string codSSC = $"SSC{currNum:000000}";
+ string payload = "{'baseUrl':'{0}','parameters':['" + codSSC + "']}";
+ //string payload = "{'baseUrl':'{0}','parameters':['" + memLayer.ML.CRS("BaseUrl") + "']}";
+ string answ = $"{baseUrl}{payload}";
+ return answ;
+ }
+
+ ///
+ /// Aggiorna componente principale e child components
+ ///
+ public void doUpdate()
+ {
+ // recupero numero
+ currNum = ComLib.getSecScreenCode();
+ // genero nuovo QR
+ string qrUrl = getLoginUrl();
+ imgQrMain.Visible = showMode;
+ imgQrSmall.Visible = !showMode;
+ if (showMode)
+ {
+ imgQrMain.ImageUrl = qrUrl;
+ }
+ else
+ {
+ imgQrSmall.ImageUrl = qrUrl;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/NKC_WF/WebUserControls/cmp_secScreen.ascx.designer.cs b/NKC_WF/WebUserControls/cmp_secScreen.ascx.designer.cs
new file mode 100644
index 0000000..e082bfc
--- /dev/null
+++ b/NKC_WF/WebUserControls/cmp_secScreen.ascx.designer.cs
@@ -0,0 +1,62 @@
+//------------------------------------------------------------------------------
+//
+// Codice generato da uno strumento.
+//
+// Le modifiche a questo file possono causare un comportamento non corretto e verranno perse se
+// il codice viene rigenerato.
+//
+//------------------------------------------------------------------------------
+
+namespace NKC_WF.WebUserControls
+{
+
+
+ public partial class cmp_secScreen
+ {
+
+ ///
+ /// Controllo hfNum.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.HiddenField hfNum;
+
+ ///
+ /// Controllo hfShowMode.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.HiddenField hfShowMode;
+
+ ///
+ /// Controllo lblNum.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.Label lblNum;
+
+ ///
+ /// Controllo imgQrSmall.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.Image imgQrSmall;
+
+ ///
+ /// Controllo imgQrMain.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.Image imgQrMain;
+ }
+}
diff --git a/NKC_WF/site/SecondScreen.aspx b/NKC_WF/site/SecondScreen.aspx
index 72380ce..71912b0 100644
--- a/NKC_WF/site/SecondScreen.aspx
+++ b/NKC_WF/site/SecondScreen.aspx
@@ -1,7 +1,13 @@
<%@ Page Title="" Language="C#" MasterPageFile="~/SiteContent.master" AutoEventWireup="true" CodeBehind="SecondScreen.aspx.cs" Inherits="NKC_WF.SecondScreen" %>
-<%@ Register Src="~/WebUserControls/tpl_WIP.ascx" TagPrefix="uc1" TagName="tpl_WIP" %>
+<%@ Register Src="~/WebUserControls/cmp_secScreen.ascx" TagPrefix="uc1" TagName="cmp_secScreen" %>
-
+
+
+
+
+
+
+
diff --git a/NKC_WF/site/SecondScreen.aspx.cs b/NKC_WF/site/SecondScreen.aspx.cs
index a3888f1..18fa833 100644
--- a/NKC_WF/site/SecondScreen.aspx.cs
+++ b/NKC_WF/site/SecondScreen.aspx.cs
@@ -12,5 +12,10 @@ namespace NKC_WF
((SiteContent)this.Master).showSearch = false;
}
}
+
+ protected void timerSecScreen_Tick(object sender, EventArgs e)
+ {
+ cmp_secScreen.doUpdate();
+ }
}
}
\ No newline at end of file
diff --git a/NKC_WF/site/SecondScreen.aspx.designer.cs b/NKC_WF/site/SecondScreen.aspx.designer.cs
index ee5d757..e828744 100644
--- a/NKC_WF/site/SecondScreen.aspx.designer.cs
+++ b/NKC_WF/site/SecondScreen.aspx.designer.cs
@@ -7,18 +7,38 @@
//
//------------------------------------------------------------------------------
-namespace NKC_WF {
-
-
- public partial class SecondScreen {
-
+namespace NKC_WF
+{
+
+
+ public partial class SecondScreen
+ {
+
///
- /// Controllo tpl_WIP.
+ /// Controllo timerSecScreen.
///
///
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
///
- protected global::NKC_WF.WebUserControls.tpl_WIP tpl_WIP;
+ protected global::System.Web.UI.Timer timerSecScreen;
+
+ ///
+ /// Controllo UpdatePanel2.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.UpdatePanel UpdatePanel2;
+
+ ///
+ /// Controllo cmp_secScreen.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::NKC_WF.WebUserControls.cmp_secScreen cmp_secScreen;
}
}