using MapoDb; using NLog; using SteamWare; using System; using System.IO; namespace MoonProTablet.WebUserControls { public class BaseUserControl : System.Web.UI.UserControl //SteamWare.UserControl // { #region Public Fields /// /// Abilitazione gestione Controlli periodici /// public bool enableControlli = memLayer.ML.cdvb("enableControlli"); /// /// Abilitazione gestione Disegno articolo /// public bool enableDisegno = memLayer.ML.cdvb("enableDisegno"); /// /// Abilitazione gestione grafici JScript /// public bool enableGraphJS = memLayer.ML.cdvb("enableGraphJS"); /// /// Abilitazione gestione LOTTI in DB MAG /// public bool enableMagLotti = memLayer.ML.cdvb("enableMagLotti"); /// /// Abilitazione gestione Pezzi LAsciati in macchina /// public bool enablePzProdLasciati = memLayer.ML.cdvb("enablePzProdLasciati"); /// /// Verifica chiave enableRiattrezzaggio in tab Config /// public bool enableRiattrezzaggio = memLayer.ML.cdvb("enableRiattrezzaggio"); /// /// Abilitazione gestione Richieste - Promesse - ODL /// public bool enableRPO = memLayer.ML.cdvb("enableRPO"); /// /// Abilitazione gestione scarti /// public bool enableScarti = memLayer.ML.cdvb("enableScarti"); /// /// Abilitazione scheda Tecnica /// public bool enableSchedaTecnica = memLayer.ML.cdvb("enableSchedaTecnica"); /// /// Abilitazione gestione SplitODL /// public bool enableSplitODL = memLayer.ML.cdvb("enableSplitODL"); /// /// Abilitazione gestione Set PZ Pallet su tablet /// public bool enableTabSetPzPallet = memLayer.ML.cdvb("enableTabSetPzPallet"); #endregion Public Fields #region Public Events /// /// evento update /// public event EventHandler eh_doUpdate; /// /// evento selezione valore /// public event EventHandler eh_selVal; #endregion Public Events #region Public Properties /// /// idx macchina selezionata /// public string idxMacchina { get { return memLayer.ML.StringSessionObj("IdxMacchina"); } set { memLayer.ML.setSessionVal("IdxMacchina", value); } } /// /// Idx macchina selezionata FIX (esempio x nuovo ODL su doppia tavola) /// public string idxMacchinaFix { get { return memLayer.ML.StringSessionObj("IdxMacchinaFix"); } set { memLayer.ML.setSessionVal("IdxMacchinaFix", value); } } /// /// idx macchina selezionata /// public string idxMacchinaSel { get { string answ = idxMacchina; // verifoc: se multi uso selettore tendina... if (isMulti) { answ = subMaccSel; } return answ; } } /// /// idxOdl corrente in sessione /// public int idxOdl { get { return memLayer.ML.IntSessionObj("idxODL"); } set { memLayer.ML.setSessionVal("idxODL", value); // resetto cache redis if (value == 0) { DataLayerObj.emptyCurrODL(idxMacchina); } } } public DateTime inizioOdl { get { DateTime answ = DateTime.Now.AddYears(-1); if (idxOdl > 0) { var odlDetail = getCurrOdlRow(); if (odlDetail != null) { answ = odlDetail.DataInizio; } } return answ; } } public string keyRichiesta { get { string answ = ""; if (idxOdl > 0) { //var odlDetail = DataLayerObj.currODLRowTab(idxMacchina); //if (odlDetail != null && odlDetail.Rows.Count > 0) //{ // answ = odlDetail[0].KeyRichiesta; //} var odlDetail = getCurrOdlRow(); if (odlDetail != null) { answ = odlDetail.KeyRichiesta; } } return answ; } } /// /// Num giorni configurati x selezione ODL in scadenza /// public int numDaySelOdl { get { return memLayer.ML.CRI("numDaySelOdl"); } } /// /// Sotto sistema (macchina) selezionato in sessione /// public string subMaccSel { get { return memLayer.ML.StringSessionObj("subMaccSel"); } set { memLayer.ML.setSessionVal("subMaccSel", value); } } /// /// titolo pagina /// public string titolo { get { return devicesAuthProxy.getPage(Request.Url); } } /// /// stringa UID univoca /// public string uid { get { return this.UniqueID.Replace("$", "_").Replace("-", "_"); } } #endregion Public Properties #region Public Methods public string encodeAuthKey(object plainUserAuthKey) { string answ = ""; answ = SteamCrypto.EncryptString(plainUserAuthKey.ToString(), memLayer.ML.CRS("cookieName")); return answ; } /// /// fomratta durata in minuti/ore/gg a seconda del totale... /// /// /// public string formatDurata(object min) { return utility.formatDurata(min); } /// /// Conversione a bool del valore /// /// /// public bool getBool(object value) { bool answ = false; string rawVal = $"{value}".ToUpper(); // se è 1/0 --> len 1 if (rawVal.Length == 1) { answ = rawVal == "1" || rawVal == "S" || rawVal == "Y"; } else { bool.TryParse($"{value}", out answ); } return answ; } public DS_ProdTempi.ODLRow getCurrOdlRow() { DS_ProdTempi.ODLRow answ = null; if (idxOdl > 0) { DS_ProdTempi.ODLDataTable odlDetail = DataLayerObj.currODLRowTab(idxMacchina); if (odlDetail != null && odlDetail.Rows.Count > 0) { answ = odlDetail[0]; } } return answ; } /// /// url completo immagine icona /// /// /// public string ImgUrlIcon(object url) { return string.Format("./images/iconDic/{0}.png", url); } /// /// url completo immagine /// /// /// public string ImgUrlMacc(object url) { string answ = ""; if (string.IsNullOrEmpty(url.ToString())) { url = "Steamware.png"; } // verifico esistenza macchina SMALL... answ = $"./images/macchine/small/{url}"; string fullPath = Server.MapPath(answ); if (!File.Exists(fullPath)) { // se non ci fosse cerco immagine fullsize answ = $"./images/macchine/{url}"; fullPath = Server.MapPath(answ); } // altrimenti metto default Steamware if (!File.Exists(fullPath)) { answ = "./images/macchine/Steamware.png"; } return answ; } /// /// Riporta evento selezione /// public virtual void reportSelect() { // alzo l'evento d update/inserimento e ricarico cache... if (eh_selVal != null) { eh_selVal(this, new EventArgs()); } } /// /// Riporta evento update /// public virtual void reportUpdate() { // alzo l'evento d update/inserimento e ricarico cache... if (eh_doUpdate != null) { eh_doUpdate(this, new EventArgs()); } } public string TCMinSec(object _TC) { string TC_MinSec = ""; decimal TC = 0; decimal.TryParse(_TC.ToString(), out TC); int min = 0; int sec = 0; try { // cerco di convertire in min/sec min = Convert.ToInt32(Math.Floor(Convert.ToDouble(TC))); sec = Convert.ToInt32((Convert.ToDouble(TC) - min) * 60); TC_MinSec = string.Format("{0}:{1:00}", min, sec); } catch { } return TC_MinSec; } /// /// effettua traduzione del lemma /// /// /// public string traduci(string lemma) { return user_std.UtSn.Traduci(lemma); } /// /// effettua traduzione del lemma /// /// /// public string traduci(object _lemma) { _lemma = _lemma == null ? "" : _lemma; return user_std.UtSn.Traduci(_lemma.ToString()); } /// /// effettua traduzione in inglese del lemma /// /// /// public string traduciEn(string lemma) { return user_std.UtSn.TraduciEn(lemma); } public string urlDisegno(object _codArticolo) { // default è ND... string outVal = "~/Files/Disegni/ND.pdf"; // recupero da anagrafica articoli... try { DS_ProdTempi.AnagArticoliRow riga = selData.mng.rigaArt(_codArticolo.ToString()); if (riga != null) { outVal = string.Format("~/Files/Disegni/{0}.pdf", riga.Disegno); } else { logger.lg.scriviLog(string.Format("Attenzione! nessuna informazione trovata per l'articolo {0}", _codArticolo), tipoLog.WARNING); } } catch (Exception exc) { logger.lg.scriviLog(string.Format("Errore in ricostruzione URL disegno:{0}{1}", Environment.NewLine, exc), tipoLog.EXCEPTION); } return outVal; } #endregion Public Methods #region Internal Fields /// /// classe MapoDB x uso locale /// internal MapoDb.MapoDb controllerMapo = new MapoDb.MapoDb(); /// /// Oggetto datalayer specifico /// internal DataLayer DataLayerObj = new DataLayer(); #endregion Internal Fields #region Internal Properties /// /// Verifica se la macchina MAIN sia MASTER /// internal bool isMaster { get { return DataLayerObj.isMaster(idxMacchina); } } /// /// Verifica se la macchina MAIN sia MULTI (da DatiMacchina / redis...) /// internal bool isMulti { get { return DataLayerObj.isMulti(idxMacchina); } } /// /// Verifica se la macchina MAIN sia SLAVE /// internal bool isSlave { get { return DataLayerObj.isSlave(idxMacchina); } } #endregion Internal Properties #region Protected Fields protected static NLog.Logger Log = LogManager.GetCurrentClassLogger(); /// /// indica conferma con rettifica (evento 121) /// protected bool confRett = memLayer.ML.CRB("confRett"); #endregion Protected Fields #region Protected Properties /// /// Restituisce il codice IdxMacchina dell'impianto PARENT (se multi) altrimenti la stessa macchina... /// protected string idxMaccParent { get { string answ = ""; // se è multi controllo if (isMulti) { // verifico se SIA una tavola (ha char "#") int iSharp = idxMacchinaFix.IndexOf('#'); if (iSharp > 0) { // sistemo nome answ = idxMacchinaFix.Substring(0, iSharp); } } return answ; } } #endregion Protected Properties #region Protected Methods /// /// conversione da tempo minuti centesimali a minuti/secondi /// /// /// protected TimeSpan minCent2Sec(decimal valore) { TimeSpan answ = new TimeSpan(0, 0, 1); try { answ = new TimeSpan(0, Convert.ToInt32(valore), Convert.ToInt32((valore - Convert.ToInt32(valore)) * 60)); } catch { } return answ; } /// /// conversione da tempo minuti/secondi a minuti centesimali /// /// /// protected decimal minSec2Cent(TimeSpan valore) { Decimal answ = 0; try { answ = Math.Round((valore.Minutes + (decimal)valore.Seconds / 60), 3); } catch { } return answ; } /// /// Arrotondamento oggetto datetime all'intervallo timespan indicato /// /// Dataora /// Timespan arrotondamento (x eccesso) /// protected DateTime RoundUp(DateTime dt, TimeSpan d) { return new DateTime((dt.Ticks + d.Ticks - 1) / d.Ticks * d.Ticks, dt.Kind); } #endregion Protected Methods } }