From 9cefc371f4edb89908f2426c27b889c8cdde6370 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Mon, 10 Jul 2017 11:19:00 +0200 Subject: [PATCH] riformattazione codice... --- MapoDb/DataLayer.cs | 956 ++++++++++++++++++++++---------------------- 1 file changed, 478 insertions(+), 478 deletions(-) diff --git a/MapoDb/DataLayer.cs b/MapoDb/DataLayer.cs index 2251806c..e944a4ab 100644 --- a/MapoDb/DataLayer.cs +++ b/MapoDb/DataLayer.cs @@ -7,490 +7,490 @@ using System.Threading; namespace MapoDb { + /// + /// classe gestione operazioni su DB tramite MapoDb + /// + public class DataLayer + { + #region area table adapters + + // Table adapter x DS_Applicazione + public DS_applicazioneTableAdapters.MacchineTableAdapter taMacchine; + public DS_applicazioneTableAdapters.StatoMacchineTableAdapter taStatoMacchine; + public DS_applicazioneTableAdapters.AnagraficaEventiTableAdapter taAnagEventi; + public DS_applicazioneTableAdapters.AnagraficaStatiTableAdapter taAnagStati; + public DS_applicazioneTableAdapters.KeepAliveTableAdapter taKeepAlive; + public DS_applicazioneTableAdapters.DiarioDiBordoTableAdapter taStati; + public DS_applicazioneTableAdapters.EventListTableAdapter taEventi; + public DS_applicazioneTableAdapters.AnagraficaOperatoriTableAdapter taOp; + public DS_applicazioneTableAdapters.AnagraficaOperatori2insTableAdapter taOp2ins; + public DS_applicazioneTableAdapters.TransizioneIngressiTableAdapter taTranIngr; + public DS_applicazioneTableAdapters.RemoteRebootLogTableAdapter taRemReb; + public DS_applicazioneTableAdapters.SignalLogTableAdapter taSigLog; + // Table adapter x DS_ProdTempi + public DS_ProdTempiTableAdapters.AnagArticoliTableAdapter taAnagArt; + public DS_ProdTempiTableAdapters.ODLTableAdapter taODL; + public DS_ProdTempiTableAdapters.DatiMacchineTableAdapter taDatiMacchine; + public DS_ProdTempiTableAdapters.stp_repDonati_getDatiProdMacchinaTableAdapter taDatiProdMacch; + public DS_ProdTempiTableAdapters.stp_repDonati_getDatiProdMacchinaPeriodoTableAdapter taDatiProdMacchPer; + public DS_ProdTempiTableAdapters.stp_repDonati_getLastStatoDurataMacchinaTableAdapter taDatiStatoMacch; + public DS_ProdTempiTableAdapters.PostazioniMapoTableAdapter taPostazioni; + public DS_ProdTempiTableAdapters.DatiConfermatiTableAdapter taDatiConfermati; + public DS_ProdTempiTableAdapters.stp_PzProd_getByMacchinaTableAdapter taPzProd2conf; + public DS_ProdTempiTableAdapters.TempiCicloRilevatiTableAdapter taTempiCicloRilevati; + public DS_ProdTempiTableAdapters.DatiProduzioneTableAdapter taDatiProd; + public DS_ProdTempiTableAdapters.stp_TempoByIdxMaccPeriodClassTableAdapter taTempoByClass; + public DS_ProdTempiTableAdapters.TurniMacchinaTableAdapter taTurniMacc; + public DS_ProdTempiTableAdapters.CalendFesteFerieTableAdapter taCalFF; + public DS_ProdTempiTableAdapters.MappaStatoExplTableAdapter taMSE; + public DS_ProdTempiTableAdapters.ProduzioneAs400TableAdapter taAs400; + // table adapter x utility + public DS_UtilityTableAdapters.v_selArticoliTableAdapter taSelArt; + public DS_UtilityTableAdapters.v_selODLTableAdapter taSelOdlFree; + public DS_UtilityTableAdapters.CommentiTableAdapter taComm; + + /// - /// classe gestione operazioni su DB tramite MapoDb + /// init dei table adapters /// - public class DataLayer + protected void initTA() { - #region area table adapters - - // Table adapter x DS_Applicazione - public DS_applicazioneTableAdapters.MacchineTableAdapter taMacchine; - public DS_applicazioneTableAdapters.StatoMacchineTableAdapter taStatoMacchine; - public DS_applicazioneTableAdapters.AnagraficaEventiTableAdapter taAnagEventi; - public DS_applicazioneTableAdapters.AnagraficaStatiTableAdapter taAnagStati; - public DS_applicazioneTableAdapters.KeepAliveTableAdapter taKeepAlive; - public DS_applicazioneTableAdapters.DiarioDiBordoTableAdapter taStati; - public DS_applicazioneTableAdapters.EventListTableAdapter taEventi; - public DS_applicazioneTableAdapters.AnagraficaOperatoriTableAdapter taOp; - public DS_applicazioneTableAdapters.AnagraficaOperatori2insTableAdapter taOp2ins; - public DS_applicazioneTableAdapters.TransizioneIngressiTableAdapter taTranIngr; - public DS_applicazioneTableAdapters.RemoteRebootLogTableAdapter taRemReb; - public DS_applicazioneTableAdapters.SignalLogTableAdapter taSigLog; - // Table adapter x DS_ProdTempi - public DS_ProdTempiTableAdapters.AnagArticoliTableAdapter taAnagArt; - public DS_ProdTempiTableAdapters.ODLTableAdapter taODL; - public DS_ProdTempiTableAdapters.DatiMacchineTableAdapter taDatiMacchine; - public DS_ProdTempiTableAdapters.stp_repDonati_getDatiProdMacchinaTableAdapter taDatiProdMacch; - public DS_ProdTempiTableAdapters.stp_repDonati_getDatiProdMacchinaPeriodoTableAdapter taDatiProdMacchPer; - public DS_ProdTempiTableAdapters.stp_repDonati_getLastStatoDurataMacchinaTableAdapter taDatiStatoMacch; - public DS_ProdTempiTableAdapters.PostazioniMapoTableAdapter taPostazioni; - public DS_ProdTempiTableAdapters.DatiConfermatiTableAdapter taDatiConfermati; - public DS_ProdTempiTableAdapters.stp_PzProd_getByMacchinaTableAdapter taPzProd2conf; - public DS_ProdTempiTableAdapters.TempiCicloRilevatiTableAdapter taTempiCicloRilevati; - public DS_ProdTempiTableAdapters.DatiProduzioneTableAdapter taDatiProd; - public DS_ProdTempiTableAdapters.stp_TempoByIdxMaccPeriodClassTableAdapter taTempoByClass; - public DS_ProdTempiTableAdapters.TurniMacchinaTableAdapter taTurniMacc; - public DS_ProdTempiTableAdapters.CalendFesteFerieTableAdapter taCalFF; - public DS_ProdTempiTableAdapters.MappaStatoExplTableAdapter taMSE; - public DS_ProdTempiTableAdapters.ProduzioneAs400TableAdapter taAs400; - // table adapter x utility - public DS_UtilityTableAdapters.v_selArticoliTableAdapter taSelArt; - public DS_UtilityTableAdapters.v_selODLTableAdapter taSelOdlFree; - public DS_UtilityTableAdapters.CommentiTableAdapter taComm; - - - /// - /// init dei table adapters - /// - protected void initTA() - { - // istanzio oggetto - taMacchine = new DS_applicazioneTableAdapters.MacchineTableAdapter(); - taStatoMacchine = new DS_applicazioneTableAdapters.StatoMacchineTableAdapter(); - taAnagEventi = new DS_applicazioneTableAdapters.AnagraficaEventiTableAdapter(); - taAnagStati = new DS_applicazioneTableAdapters.AnagraficaStatiTableAdapter(); - taKeepAlive = new DS_applicazioneTableAdapters.KeepAliveTableAdapter(); - taStati = new DS_applicazioneTableAdapters.DiarioDiBordoTableAdapter(); - taEventi = new DS_applicazioneTableAdapters.EventListTableAdapter(); - taOp = new DS_applicazioneTableAdapters.AnagraficaOperatoriTableAdapter(); - taOp2ins = new DS_applicazioneTableAdapters.AnagraficaOperatori2insTableAdapter(); - taTranIngr = new DS_applicazioneTableAdapters.TransizioneIngressiTableAdapter(); - taRemReb = new DS_applicazioneTableAdapters.RemoteRebootLogTableAdapter(); - taSigLog = new DS_applicazioneTableAdapters.SignalLogTableAdapter(); - taAnagArt = new DS_ProdTempiTableAdapters.AnagArticoliTableAdapter(); - taODL = new DS_ProdTempiTableAdapters.ODLTableAdapter(); - taDatiMacchine = new DS_ProdTempiTableAdapters.DatiMacchineTableAdapter(); - taDatiProdMacch = new DS_ProdTempiTableAdapters.stp_repDonati_getDatiProdMacchinaTableAdapter(); - taDatiProdMacchPer = new DS_ProdTempiTableAdapters.stp_repDonati_getDatiProdMacchinaPeriodoTableAdapter(); - taDatiStatoMacch = new DS_ProdTempiTableAdapters.stp_repDonati_getLastStatoDurataMacchinaTableAdapter(); - taPostazioni = new DS_ProdTempiTableAdapters.PostazioniMapoTableAdapter(); - taTurniMacc = new DS_ProdTempiTableAdapters.TurniMacchinaTableAdapter(); - taDatiConfermati = new DS_ProdTempiTableAdapters.DatiConfermatiTableAdapter(); - taPzProd2conf = new DS_ProdTempiTableAdapters.stp_PzProd_getByMacchinaTableAdapter(); - taTempiCicloRilevati = new DS_ProdTempiTableAdapters.TempiCicloRilevatiTableAdapter(); - taDatiProd = new DS_ProdTempiTableAdapters.DatiProduzioneTableAdapter(); - taTempoByClass = new DS_ProdTempiTableAdapters.stp_TempoByIdxMaccPeriodClassTableAdapter(); - taCalFF = new DS_ProdTempiTableAdapters.CalendFesteFerieTableAdapter(); - taMSE = new DS_ProdTempiTableAdapters.MappaStatoExplTableAdapter(); - taAs400 = new DS_ProdTempiTableAdapters.ProduzioneAs400TableAdapter(); - taSelArt = new DS_UtilityTableAdapters.v_selArticoliTableAdapter(); - taSelOdlFree = new DS_UtilityTableAdapters.v_selODLTableAdapter(); - taComm = new DS_UtilityTableAdapters.CommentiTableAdapter(); - } - /// - /// effettua setup dei connection strings da web.config delal singola applicazione - /// - protected virtual void setupConnectionStringBase() - { - string connectionString = memLayer.ML.confReadString("MoonProConnectionString"); - // connections del db - taMacchine.Connection.ConnectionString = connectionString; - taStatoMacchine.Connection.ConnectionString = connectionString; - taAnagEventi.Connection.ConnectionString = connectionString; - taAnagStati.Connection.ConnectionString = connectionString; - taKeepAlive.Connection.ConnectionString = connectionString; - taStati.Connection.ConnectionString = connectionString; - taEventi.Connection.ConnectionString = connectionString; - taOp.Connection.ConnectionString = connectionString; - taOp2ins.Connection.ConnectionString = connectionString; - taTranIngr.Connection.ConnectionString = connectionString; - taRemReb.Connection.ConnectionString = connectionString; - taSigLog.Connection.ConnectionString = connectionString; - taAnagArt.Connection.ConnectionString = connectionString; - taODL.Connection.ConnectionString = connectionString; - taDatiMacchine.Connection.ConnectionString = connectionString; - taDatiProdMacch.Connection.ConnectionString = connectionString; - taDatiProdMacchPer.Connection.ConnectionString = connectionString; - taDatiStatoMacch.Connection.ConnectionString = connectionString; - taPostazioni.Connection.ConnectionString = connectionString; - taTurniMacc.Connection.ConnectionString = connectionString; - taDatiConfermati.Connection.ConnectionString = connectionString; - taPzProd2conf.Connection.ConnectionString = connectionString; - taTempiCicloRilevati.Connection.ConnectionString = connectionString; - taDatiProd.Connection.ConnectionString = connectionString; - taTempoByClass.Connection.ConnectionString = connectionString; - taCalFF.Connection.ConnectionString = connectionString; - taMSE.Connection.ConnectionString = connectionString; - taAs400.Connection.ConnectionString = connectionString; - taSelArt.Connection.ConnectionString = connectionString; - taSelOdlFree.Connection.ConnectionString = connectionString; - taComm.Connection.ConnectionString = connectionString; - } - - #endregion - - #region Inizializzazione - - protected DataLayer() - { - initTA(); - setupConnectionStringBase(); - - // aggiunta x gestione timeout esteso (ove necessario)! - fixCommandTimeout(); - } - - /// - /// sistemazione timeout comandi nei tableadapter - /// - private void fixCommandTimeout() - { - //SetAllCommandTimeouts(taQL, memLayer.ML.confReadInt("sqlLongCommandTimeout")); - //SetAllCommandTimeouts(taQFQ, memLayer.ML.confReadInt("sqlLongCommandTimeout")); - //SetAllCommandTimeouts(taQRM, memLayer.ML.confReadInt("sqlLongCommandTimeout")); - //SetAllCommandTimeouts(taRMD, memLayer.ML.confReadInt("sqlLongCommandTimeout")); - //SetAllCommandTimeouts(taSCL, memLayer.ML.confReadInt("sqlLongCommandTimeout")); - //SetAllCommandTimeouts(taVSCli, memLayer.ML.confReadInt("sqlLongCommandTimeout")); - //SetAllCommandTimeouts(taVSItm, memLayer.ML.confReadInt("sqlLongCommandTimeout")); - //SetAllCommandTimeouts(taVSRM, memLayer.ML.confReadInt("sqlLongCommandTimeout")); - //SetAllCommandTimeouts(taRPT, memLayer.ML.confReadInt("sqlLongCommandTimeout")); - //SetAllCommandTimeouts(taO4I, memLayer.ML.confReadInt("sqlLongCommandTimeout")); - //SetAllCommandTimeouts(taOH, memLayer.ML.confReadInt("sqlLongCommandTimeout")); - //SetAllCommandTimeouts(taSC2C, memLayer.ML.confReadInt("sqlLongCommandTimeout")); - SetAllCommandTimeouts(taComm, memLayer.ML.confReadInt("sqlLongCommandTimeout")); - } - void SetAllCommandTimeouts(object adapter, int timeout) - { - var commands = adapter.GetType().InvokeMember( - "CommandCollection", - BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic, - null, adapter, new object[0]); - var sqlCommand = (SqlCommand[])commands; - foreach (var cmd in sqlCommand) - { - cmd.CommandTimeout = timeout; - } - } - /// - /// oggetto static per fare chiamate sul magazzino - /// - public static DataLayer obj = new DataLayer(); - - #endregion - - #region utility public esposte - - /// - /// Effettua conferma prod macchina dell'intero periodo da confermare (ultima conferma --> adesso) - /// - /// idx macchina da confermare - /// 0=periodo, 1 = giorno, 2 = turno - /// qta pezzi BUONI da confermare - /// qta pezzi SCARTO da confermare - /// - public bool confermaProdMacchina(string idxMacchina, int modoConfProd, int numPzConfermati, int numPzScarto) - { - bool answ = false; - try - { - DS_ProdTempi.stp_PzProd_getByMacchinaRow rigaProd = DataLayer.obj.taPzProd2conf.GetData(idxMacchina.ToString())[0]; - // chiamo stored stp_ConfermaProduzCompleta(idxMacchina,MatrApp,dataFrom,dataTo,pezziConf) - taPzProd2conf.stp_ConfermaProduzCompleta(idxMacchina, MatrOpr, rigaProd.DataFrom, rigaProd.DataTo, numPzConfermati, numPzScarto, modoConfProd, DateTime.Now, true); - // indico eseguito! - answ = true; - } - catch (Exception exc) - { - logger.lg.scriviLog(string.Format("Errore in conferma prod macchina:{0}{1}", Environment.NewLine, exc)); - } - return answ; - } - - /// - /// invia una mail al destinatario x linkare nuovi devices tramite URL - /// - /// - /// - /// - /// - public bool sendUserAuthEmail(string destinatario, string UserAuthKey, int idxDipendente) - { - bool fatto = false; - string smtpCli = ""; - string mittente = ""; - string oggetto = ""; - string userUrl = ""; - string baseUrl = ""; - string userWebUrl = ""; - string baseWebUrl = ""; - string corpo = ""; - try - { - // compongo la stringa - smtpCli = memLayer.ML.confReadString("_smtpCli"); - mittente = memLayer.ML.confReadString("_fromEmail"); - oggetto = "Link autorizzazione device per GPW"; - baseUrl = memLayer.ML.confReadString("baseUrl"); - baseWebUrl = memLayer.ML.confReadString("baseWebUrl"); - userUrl = string.Format("{2}jumper.aspx?UserAuthkey={0}&idxDipendente={1}", UserAuthKey, idxDipendente, baseUrl); - userWebUrl = string.Format("{2}jumper.aspx?UserAuthkey={0}&idxDipendente={1}", UserAuthKey, idxDipendente, baseWebUrl); - corpo = string.Format("Hai ricevuto questa email su richiesta tua o dell'Admin per poter procedere a registrare un (nuovo) devices con GPW:{0}
Per proseguire clicca sul link seguente(rete interna):
{0}{0}{1}{0}{0}

oppure sul link seguente (internet):
{0}{0}{2}{0}{0}

Team GPW Steamware", Environment.NewLine, userUrl, userWebUrl); - gestEmail.ge.mandaEmail(mittente, destinatario, oggetto, corpo); - fatto = true; - } - catch - { } - return fatto; - } - /// - /// Invia email di avviso che ci sono dei TC da confermare - /// - /// - /// - public bool sendWarnTcChangeReq(string destinatario) - { - bool fatto = false; - string mittente = ""; - string oggetto = ""; - string pageUrl = ""; - string corpo = ""; - try - { - // compongo la stringa - mittente = memLayer.ML.confReadString("_fromEmail"); - oggetto = memLayer.ML.confReadString("oggettoChgTc"); - pageUrl = string.Format("{0}{1}", memLayer.ML.confReadString("baseUrlAdmin"), memLayer.ML.confReadString("pageUrlApprODL")); - corpo = string.Format(memLayer.ML.confReadString("corpoChgTc"), Environment.NewLine, pageUrl); - if (memLayer.ML.confReadBool("_useAuthSmtp")) - { - gestEmail.geAuth.mandaEmail(mittente, destinatario, oggetto, corpo); - } - else - { - gestEmail.ge.mandaEmail(mittente, destinatario, oggetto, corpo); - } - fatto = true; - } - catch - { } - return fatto; - } - - /// - /// effettua enroll del device - /// - /// - /// - /// - /// - /// - /// - public bool enrollDevice(string UserAuthKey, string IPv4, string DeviceName, string Description, int matricola) - { - bool fatto = false; - // in primis testo se dipendente ed authKey sono validi.. - if (taOp.getByMatrAuthKey(matricola, UserAuthKey).Rows.Count > 0) - { - // salvo matrOpr - MatrOpr = matricola; - /************************************************ - * Gestione riconoscimento devices - * - * - cerco IP del device, testo se è rete interna (A) o extranet/internet (B) cercando substring "localNet" da web.config - * (A): device interni: c'è un DHCP, e "dhcpLeaseTime" deve essere pari a lease time--- - * - verifico se IP già in uso da un tempo < "dhcpLeaseTime" --> in questo caso segnalo errore e rimbalzo (NON permetto di registrare device a nuovo utente... sospetto uso "improprio" del device - * - se tempo > dhcpLeaseTime allora può aver cambiato IP: aggiorno IP e descrizione del device e proseguo - * (B): all'esterno vedo tutta una subnet NATtata con unico IP, non è + discriminante - * - le timbrature "da esterno" devono essere confermate (instrodurre "tipo timbratura" x cui interne sono autoconfermate, esterne sono "grayed" (da confermare, da admin o ad esempio se si accende secondo device utente entro 5/10 min) - * - le timbrature ext DOVREBBERO chiedere location (jScript?) e inviarla, visibile in conferma - * - * - * **********************************************/ - // calcolo il secret... - DateTime adesso = DateTime.Now; - string Dominio = memLayer.ML.confReadString("dominio"); - string UsrName = memLayer.ML.confReadString("user"); - // recupero dati da matricola... - try - { - DataLayer_AnagGen.UTENTERow rigaUt = user_std.UtSn.rigaUtenteDaMatricola(matricola.ToString()); - if (rigaUt != null) - { - Dominio = rigaUt.DOMINIO; - UsrName = rigaUt.USER_NAME; - } - else - { - logger.lg.scriviLog(string.Format("non sono riuscito a recuperare RIGA utente per matricola {0}", matricola), tipoLog.ERROR); - } - } - catch - { - logger.lg.scriviLog(string.Format("Eccezione! non sono riuscito a recuperare utente per matricola {0}", matricola), tipoLog.ERROR); - Dominio = memLayer.ML.confReadString("dominio"); - UsrName = memLayer.ML.confReadString("user"); - } - string Secret = authProxy.getSecret(Dominio, UsrName, matricola, DeviceName, adesso); - string devSecret = SteamCrypto.EncryptString(Secret, memLayer.ML.confReadString("cookieName")); - try - { - // creo device + cookie! - fatto = authProxy.createNewCookie(Dominio, UsrName, matricola, DeviceName, Description, IPv4, memLayer.ML.confReadString("cookieName"), DateTime.Now.AddDays(memLayer.ML.confReadInt("cookieDayExpire"))); - // loggo! - logger.lg.scriviLog(string.Format("Effettuato enroll nuovo device: utente {0}\\{1} | matricola {2} | DeviceName {3} | Descrizione {4} | IP {5} | nome cookcie {6} | valido sino a {7:yyyy/MM/dd}", Dominio, UsrName, matricola, DeviceName, Description, IPv4, memLayer.ML.confReadString("cookieName"), DateTime.Now.AddDays(memLayer.ML.confReadInt("cookieDayExpire")))); - } - catch (Exception exc) - { - logger.lg.scriviLog(string.Format("Errore enroll nuovo device:{0}{1}", Environment.NewLine, exc), tipoLog.EXCEPTION); - } - } - return fatto; - } - /// - /// MatrOpr in sessione - /// - public static int MatrOpr - { - get - { - int idx = 0; - try - { - idx = memLayer.ML.IntSessionObj("MatrOpr"); - } - catch - { } - return idx; - } - set - { - memLayer.ML.setSessionVal("MatrOpr", value); - } - } - /// - /// Cognome Nome da MatrOpr in sessione - /// - public static string CognomeNomeOpr - { - get - { - // cerco operatore... - string answ = ""; - try - { - DS_applicazione.AnagraficaOperatoriRow oper = (DS_applicazione.AnagraficaOperatoriRow)DataLayer.obj.taOp.getByMatrOpr(MatrOpr)[0]; - answ = string.Format("{0} {1}", oper.Cognome, oper.Nome); - } - catch - { } - return answ; - } - } - /// - /// Processa input da IOB eventualmente registrando i segnali inviati - /// - /// - /// - /// - /// - /// - /// - public static string processInput(string idxMacchina, string valore, string dtEve, string dtCurr, string contatore) - { - - string answ = ""; - DateTime dataOraEvento = DateTime.Now; - DateTime dtEvento, dtCorrente; - // controllo: se ho valori dt x evento e orario DIVERSI per acquisitore IOB calcolo dataOraEvento corretto - if (dtEve != dtCurr) - { - Int64 delta = 0; - try - { - // se ho meno decimali x evento rispetto dtCorrente... - if (dtEve.Length < dtCurr.Length) - { - dtEve = dtEve.PadRight(dtCurr.Length, '0'); - } - delta = Convert.ToInt64(dtCurr) - Convert.ToInt64(dtEve); - // se meno di 60'000 ms ... - if (delta < 59999) - { - dataOraEvento = dataOraEvento.AddMilliseconds(-delta); - } - else - { - // in questo caso elimino i MS dalle stringhe e converto i datetime.... - CultureInfo provider = CultureInfo.InvariantCulture; - string format = "yyyyMMddHHmmssfff"; - dtEvento = DateTime.ParseExact(dtEve, format, provider); - dtCorrente = DateTime.ParseExact(dtCurr, format, provider); - Int64 tiks = dtCorrente.Ticks - dtEvento.Ticks; - dataOraEvento = dataOraEvento.AddTicks(-tiks); - } - } - catch (Exception exc) - { - logger.lg.scriviLog(string.Format("Errore calcolo ms evento/ora corrente da device remoto:{0}dtEve: {1}{0}dtCurr: {2}{0}{3}", Environment.NewLine, dtEve, dtCurr, exc), tipoLog.EXCEPTION); - } - } - // - if (idxMacchina != null && valore != null) - { - if (idxMacchina != "" && valore != "") - { - // 2016.12.23 modifica x recording catena di input... - // se abilitato registro evento sul DB - int idxMacc = 0; - try - { - idxMacc = Convert.ToInt32(idxMacchina); - } - catch - { } - if (idxMacc > 0 && MapoDb.obj.sLogEnabled(idxMacc)) - { - MapoDb.obj.saveSigLog(idxMacchina, valore, dataOraEvento, contatore); - } - // continuo col resto - try - { - // ora processo e salvo il valore del microstato... - MapoDb.obj.checkMicroStato(idxMacchina, valore, dataOraEvento, contatore); - answ = "OK"; // registro in risposta che è andato tutto bene... - } - catch (Exception exc) - { - if (memLayer.ML.confReadInt("_logLevel") > 5) - { - string errore = string.Format("Errore: {0}{1}", Environment.NewLine, exc); - logger.lg.scriviLog(errore, tipoLog.EXCEPTION); - answ = errore; - } - } - } - else - { - string errore = "Errore: parametri macchina/valore vuoti"; - logger.lg.scriviLog(errore, tipoLog.ERROR); - answ = errore; - } - } - else - { - string errore = "Errore: mancano parametri macchina/valore"; - logger.lg.scriviLog(errore, tipoLog.ERROR); - answ = errore; - } - return answ; - } - - #endregion + // istanzio oggetto + taMacchine = new DS_applicazioneTableAdapters.MacchineTableAdapter(); + taStatoMacchine = new DS_applicazioneTableAdapters.StatoMacchineTableAdapter(); + taAnagEventi = new DS_applicazioneTableAdapters.AnagraficaEventiTableAdapter(); + taAnagStati = new DS_applicazioneTableAdapters.AnagraficaStatiTableAdapter(); + taKeepAlive = new DS_applicazioneTableAdapters.KeepAliveTableAdapter(); + taStati = new DS_applicazioneTableAdapters.DiarioDiBordoTableAdapter(); + taEventi = new DS_applicazioneTableAdapters.EventListTableAdapter(); + taOp = new DS_applicazioneTableAdapters.AnagraficaOperatoriTableAdapter(); + taOp2ins = new DS_applicazioneTableAdapters.AnagraficaOperatori2insTableAdapter(); + taTranIngr = new DS_applicazioneTableAdapters.TransizioneIngressiTableAdapter(); + taRemReb = new DS_applicazioneTableAdapters.RemoteRebootLogTableAdapter(); + taSigLog = new DS_applicazioneTableAdapters.SignalLogTableAdapter(); + taAnagArt = new DS_ProdTempiTableAdapters.AnagArticoliTableAdapter(); + taODL = new DS_ProdTempiTableAdapters.ODLTableAdapter(); + taDatiMacchine = new DS_ProdTempiTableAdapters.DatiMacchineTableAdapter(); + taDatiProdMacch = new DS_ProdTempiTableAdapters.stp_repDonati_getDatiProdMacchinaTableAdapter(); + taDatiProdMacchPer = new DS_ProdTempiTableAdapters.stp_repDonati_getDatiProdMacchinaPeriodoTableAdapter(); + taDatiStatoMacch = new DS_ProdTempiTableAdapters.stp_repDonati_getLastStatoDurataMacchinaTableAdapter(); + taPostazioni = new DS_ProdTempiTableAdapters.PostazioniMapoTableAdapter(); + taTurniMacc = new DS_ProdTempiTableAdapters.TurniMacchinaTableAdapter(); + taDatiConfermati = new DS_ProdTempiTableAdapters.DatiConfermatiTableAdapter(); + taPzProd2conf = new DS_ProdTempiTableAdapters.stp_PzProd_getByMacchinaTableAdapter(); + taTempiCicloRilevati = new DS_ProdTempiTableAdapters.TempiCicloRilevatiTableAdapter(); + taDatiProd = new DS_ProdTempiTableAdapters.DatiProduzioneTableAdapter(); + taTempoByClass = new DS_ProdTempiTableAdapters.stp_TempoByIdxMaccPeriodClassTableAdapter(); + taCalFF = new DS_ProdTempiTableAdapters.CalendFesteFerieTableAdapter(); + taMSE = new DS_ProdTempiTableAdapters.MappaStatoExplTableAdapter(); + taAs400 = new DS_ProdTempiTableAdapters.ProduzioneAs400TableAdapter(); + taSelArt = new DS_UtilityTableAdapters.v_selArticoliTableAdapter(); + taSelOdlFree = new DS_UtilityTableAdapters.v_selODLTableAdapter(); + taComm = new DS_UtilityTableAdapters.CommentiTableAdapter(); } + /// + /// effettua setup dei connection strings da web.config delal singola applicazione + /// + protected virtual void setupConnectionStringBase() + { + string connectionString = memLayer.ML.confReadString("MoonProConnectionString"); + // connections del db + taMacchine.Connection.ConnectionString = connectionString; + taStatoMacchine.Connection.ConnectionString = connectionString; + taAnagEventi.Connection.ConnectionString = connectionString; + taAnagStati.Connection.ConnectionString = connectionString; + taKeepAlive.Connection.ConnectionString = connectionString; + taStati.Connection.ConnectionString = connectionString; + taEventi.Connection.ConnectionString = connectionString; + taOp.Connection.ConnectionString = connectionString; + taOp2ins.Connection.ConnectionString = connectionString; + taTranIngr.Connection.ConnectionString = connectionString; + taRemReb.Connection.ConnectionString = connectionString; + taSigLog.Connection.ConnectionString = connectionString; + taAnagArt.Connection.ConnectionString = connectionString; + taODL.Connection.ConnectionString = connectionString; + taDatiMacchine.Connection.ConnectionString = connectionString; + taDatiProdMacch.Connection.ConnectionString = connectionString; + taDatiProdMacchPer.Connection.ConnectionString = connectionString; + taDatiStatoMacch.Connection.ConnectionString = connectionString; + taPostazioni.Connection.ConnectionString = connectionString; + taTurniMacc.Connection.ConnectionString = connectionString; + taDatiConfermati.Connection.ConnectionString = connectionString; + taPzProd2conf.Connection.ConnectionString = connectionString; + taTempiCicloRilevati.Connection.ConnectionString = connectionString; + taDatiProd.Connection.ConnectionString = connectionString; + taTempoByClass.Connection.ConnectionString = connectionString; + taCalFF.Connection.ConnectionString = connectionString; + taMSE.Connection.ConnectionString = connectionString; + taAs400.Connection.ConnectionString = connectionString; + taSelArt.Connection.ConnectionString = connectionString; + taSelOdlFree.Connection.ConnectionString = connectionString; + taComm.Connection.ConnectionString = connectionString; + } + + #endregion + + #region Inizializzazione + + protected DataLayer() + { + initTA(); + setupConnectionStringBase(); + + // aggiunta x gestione timeout esteso (ove necessario)! + fixCommandTimeout(); + } + + /// + /// sistemazione timeout comandi nei tableadapter + /// + private void fixCommandTimeout() + { + //SetAllCommandTimeouts(taQL, memLayer.ML.confReadInt("sqlLongCommandTimeout")); + //SetAllCommandTimeouts(taQFQ, memLayer.ML.confReadInt("sqlLongCommandTimeout")); + //SetAllCommandTimeouts(taQRM, memLayer.ML.confReadInt("sqlLongCommandTimeout")); + //SetAllCommandTimeouts(taRMD, memLayer.ML.confReadInt("sqlLongCommandTimeout")); + //SetAllCommandTimeouts(taSCL, memLayer.ML.confReadInt("sqlLongCommandTimeout")); + //SetAllCommandTimeouts(taVSCli, memLayer.ML.confReadInt("sqlLongCommandTimeout")); + //SetAllCommandTimeouts(taVSItm, memLayer.ML.confReadInt("sqlLongCommandTimeout")); + //SetAllCommandTimeouts(taVSRM, memLayer.ML.confReadInt("sqlLongCommandTimeout")); + //SetAllCommandTimeouts(taRPT, memLayer.ML.confReadInt("sqlLongCommandTimeout")); + //SetAllCommandTimeouts(taO4I, memLayer.ML.confReadInt("sqlLongCommandTimeout")); + //SetAllCommandTimeouts(taOH, memLayer.ML.confReadInt("sqlLongCommandTimeout")); + //SetAllCommandTimeouts(taSC2C, memLayer.ML.confReadInt("sqlLongCommandTimeout")); + SetAllCommandTimeouts(taComm, memLayer.ML.confReadInt("sqlLongCommandTimeout")); + } + void SetAllCommandTimeouts(object adapter, int timeout) + { + var commands = adapter.GetType().InvokeMember( + "CommandCollection", + BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic, + null, adapter, new object[0]); + var sqlCommand = (SqlCommand[])commands; + foreach (var cmd in sqlCommand) + { + cmd.CommandTimeout = timeout; + } + } + /// + /// oggetto static per fare chiamate sul magazzino + /// + public static DataLayer obj = new DataLayer(); + + #endregion + + #region utility public esposte + + /// + /// Effettua conferma prod macchina dell'intero periodo da confermare (ultima conferma --> adesso) + /// + /// idx macchina da confermare + /// 0=periodo, 1 = giorno, 2 = turno + /// qta pezzi BUONI da confermare + /// qta pezzi SCARTO da confermare + /// + public bool confermaProdMacchina(string idxMacchina, int modoConfProd, int numPzConfermati, int numPzScarto) + { + bool answ = false; + try + { + DS_ProdTempi.stp_PzProd_getByMacchinaRow rigaProd = DataLayer.obj.taPzProd2conf.GetData(idxMacchina.ToString())[0]; + // chiamo stored stp_ConfermaProduzCompleta(idxMacchina,MatrApp,dataFrom,dataTo,pezziConf) + taPzProd2conf.stp_ConfermaProduzCompleta(idxMacchina, MatrOpr, rigaProd.DataFrom, rigaProd.DataTo, numPzConfermati, numPzScarto, modoConfProd, DateTime.Now, true); + // indico eseguito! + answ = true; + } + catch (Exception exc) + { + logger.lg.scriviLog(string.Format("Errore in conferma prod macchina:{0}{1}", Environment.NewLine, exc)); + } + return answ; + } + + /// + /// invia una mail al destinatario x linkare nuovi devices tramite URL + /// + /// + /// + /// + /// + public bool sendUserAuthEmail(string destinatario, string UserAuthKey, int idxDipendente) + { + bool fatto = false; + string smtpCli = ""; + string mittente = ""; + string oggetto = ""; + string userUrl = ""; + string baseUrl = ""; + string userWebUrl = ""; + string baseWebUrl = ""; + string corpo = ""; + try + { + // compongo la stringa + smtpCli = memLayer.ML.confReadString("_smtpCli"); + mittente = memLayer.ML.confReadString("_fromEmail"); + oggetto = "Link autorizzazione device per GPW"; + baseUrl = memLayer.ML.confReadString("baseUrl"); + baseWebUrl = memLayer.ML.confReadString("baseWebUrl"); + userUrl = string.Format("{2}jumper.aspx?UserAuthkey={0}&idxDipendente={1}", UserAuthKey, idxDipendente, baseUrl); + userWebUrl = string.Format("{2}jumper.aspx?UserAuthkey={0}&idxDipendente={1}", UserAuthKey, idxDipendente, baseWebUrl); + corpo = string.Format("Hai ricevuto questa email su richiesta tua o dell'Admin per poter procedere a registrare un (nuovo) devices con GPW:{0}
Per proseguire clicca sul link seguente(rete interna):
{0}{0}{1}{0}{0}

oppure sul link seguente (internet):
{0}{0}{2}{0}{0}

Team GPW Steamware", Environment.NewLine, userUrl, userWebUrl); + gestEmail.ge.mandaEmail(mittente, destinatario, oggetto, corpo); + fatto = true; + } + catch + { } + return fatto; + } + /// + /// Invia email di avviso che ci sono dei TC da confermare + /// + /// + /// + public bool sendWarnTcChangeReq(string destinatario) + { + bool fatto = false; + string mittente = ""; + string oggetto = ""; + string pageUrl = ""; + string corpo = ""; + try + { + // compongo la stringa + mittente = memLayer.ML.confReadString("_fromEmail"); + oggetto = memLayer.ML.confReadString("oggettoChgTc"); + pageUrl = string.Format("{0}{1}", memLayer.ML.confReadString("baseUrlAdmin"), memLayer.ML.confReadString("pageUrlApprODL")); + corpo = string.Format(memLayer.ML.confReadString("corpoChgTc"), Environment.NewLine, pageUrl); + if (memLayer.ML.confReadBool("_useAuthSmtp")) + { + gestEmail.geAuth.mandaEmail(mittente, destinatario, oggetto, corpo); + } + else + { + gestEmail.ge.mandaEmail(mittente, destinatario, oggetto, corpo); + } + fatto = true; + } + catch + { } + return fatto; + } + + /// + /// effettua enroll del device + /// + /// + /// + /// + /// + /// + /// + public bool enrollDevice(string UserAuthKey, string IPv4, string DeviceName, string Description, int matricola) + { + bool fatto = false; + // in primis testo se dipendente ed authKey sono validi.. + if (taOp.getByMatrAuthKey(matricola, UserAuthKey).Rows.Count > 0) + { + // salvo matrOpr + MatrOpr = matricola; + /************************************************ + * Gestione riconoscimento devices + * + * - cerco IP del device, testo se è rete interna (A) o extranet/internet (B) cercando substring "localNet" da web.config + * (A): device interni: c'è un DHCP, e "dhcpLeaseTime" deve essere pari a lease time--- + * - verifico se IP già in uso da un tempo < "dhcpLeaseTime" --> in questo caso segnalo errore e rimbalzo (NON permetto di registrare device a nuovo utente... sospetto uso "improprio" del device + * - se tempo > dhcpLeaseTime allora può aver cambiato IP: aggiorno IP e descrizione del device e proseguo + * (B): all'esterno vedo tutta una subnet NATtata con unico IP, non è + discriminante + * - le timbrature "da esterno" devono essere confermate (instrodurre "tipo timbratura" x cui interne sono autoconfermate, esterne sono "grayed" (da confermare, da admin o ad esempio se si accende secondo device utente entro 5/10 min) + * - le timbrature ext DOVREBBERO chiedere location (jScript?) e inviarla, visibile in conferma + * + * + * **********************************************/ + // calcolo il secret... + DateTime adesso = DateTime.Now; + string Dominio = memLayer.ML.confReadString("dominio"); + string UsrName = memLayer.ML.confReadString("user"); + // recupero dati da matricola... + try + { + DataLayer_AnagGen.UTENTERow rigaUt = user_std.UtSn.rigaUtenteDaMatricola(matricola.ToString()); + if (rigaUt != null) + { + Dominio = rigaUt.DOMINIO; + UsrName = rigaUt.USER_NAME; + } + else + { + logger.lg.scriviLog(string.Format("non sono riuscito a recuperare RIGA utente per matricola {0}", matricola), tipoLog.ERROR); + } + } + catch + { + logger.lg.scriviLog(string.Format("Eccezione! non sono riuscito a recuperare utente per matricola {0}", matricola), tipoLog.ERROR); + Dominio = memLayer.ML.confReadString("dominio"); + UsrName = memLayer.ML.confReadString("user"); + } + string Secret = authProxy.getSecret(Dominio, UsrName, matricola, DeviceName, adesso); + string devSecret = SteamCrypto.EncryptString(Secret, memLayer.ML.confReadString("cookieName")); + try + { + // creo device + cookie! + fatto = authProxy.createNewCookie(Dominio, UsrName, matricola, DeviceName, Description, IPv4, memLayer.ML.confReadString("cookieName"), DateTime.Now.AddDays(memLayer.ML.confReadInt("cookieDayExpire"))); + // loggo! + logger.lg.scriviLog(string.Format("Effettuato enroll nuovo device: utente {0}\\{1} | matricola {2} | DeviceName {3} | Descrizione {4} | IP {5} | nome cookcie {6} | valido sino a {7:yyyy/MM/dd}", Dominio, UsrName, matricola, DeviceName, Description, IPv4, memLayer.ML.confReadString("cookieName"), DateTime.Now.AddDays(memLayer.ML.confReadInt("cookieDayExpire")))); + } + catch (Exception exc) + { + logger.lg.scriviLog(string.Format("Errore enroll nuovo device:{0}{1}", Environment.NewLine, exc), tipoLog.EXCEPTION); + } + } + return fatto; + } + /// + /// MatrOpr in sessione + /// + public static int MatrOpr + { + get + { + int idx = 0; + try + { + idx = memLayer.ML.IntSessionObj("MatrOpr"); + } + catch + { } + return idx; + } + set + { + memLayer.ML.setSessionVal("MatrOpr", value); + } + } + /// + /// Cognome Nome da MatrOpr in sessione + /// + public static string CognomeNomeOpr + { + get + { + // cerco operatore... + string answ = ""; + try + { + DS_applicazione.AnagraficaOperatoriRow oper = (DS_applicazione.AnagraficaOperatoriRow)DataLayer.obj.taOp.getByMatrOpr(MatrOpr)[0]; + answ = string.Format("{0} {1}", oper.Cognome, oper.Nome); + } + catch + { } + return answ; + } + } + /// + /// Processa input da IOB eventualmente registrando i segnali inviati + /// + /// + /// + /// + /// + /// + /// + public static string processInput(string idxMacchina, string valore, string dtEve, string dtCurr, string contatore) + { + + string answ = ""; + DateTime dataOraEvento = DateTime.Now; + DateTime dtEvento, dtCorrente; + // controllo: se ho valori dt x evento e orario DIVERSI per acquisitore IOB calcolo dataOraEvento corretto + if (dtEve != dtCurr) + { + Int64 delta = 0; + try + { + // se ho meno decimali x evento rispetto dtCorrente... + if (dtEve.Length < dtCurr.Length) + { + dtEve = dtEve.PadRight(dtCurr.Length, '0'); + } + delta = Convert.ToInt64(dtCurr) - Convert.ToInt64(dtEve); + // se meno di 60'000 ms ... + if (delta < 59999) + { + dataOraEvento = dataOraEvento.AddMilliseconds(-delta); + } + else + { + // in questo caso elimino i MS dalle stringhe e converto i datetime.... + CultureInfo provider = CultureInfo.InvariantCulture; + string format = "yyyyMMddHHmmssfff"; + dtEvento = DateTime.ParseExact(dtEve, format, provider); + dtCorrente = DateTime.ParseExact(dtCurr, format, provider); + Int64 tiks = dtCorrente.Ticks - dtEvento.Ticks; + dataOraEvento = dataOraEvento.AddTicks(-tiks); + } + } + catch (Exception exc) + { + logger.lg.scriviLog(string.Format("Errore calcolo ms evento/ora corrente da device remoto:{0}dtEve: {1}{0}dtCurr: {2}{0}{3}", Environment.NewLine, dtEve, dtCurr, exc), tipoLog.EXCEPTION); + } + } + // + if (idxMacchina != null && valore != null) + { + if (idxMacchina != "" && valore != "") + { + // 2016.12.23 modifica x recording catena di input... + // se abilitato registro evento sul DB + int idxMacc = 0; + try + { + idxMacc = Convert.ToInt32(idxMacchina); + } + catch + { } + if (idxMacc > 0 && MapoDb.obj.sLogEnabled(idxMacc)) + { + MapoDb.obj.saveSigLog(idxMacchina, valore, dataOraEvento, contatore); + } + // continuo col resto + try + { + // ora processo e salvo il valore del microstato... + MapoDb.obj.checkMicroStato(idxMacchina, valore, dataOraEvento, contatore); + answ = "OK"; // registro in risposta che è andato tutto bene... + } + catch (Exception exc) + { + if (memLayer.ML.confReadInt("_logLevel") > 5) + { + string errore = string.Format("Errore: {0}{1}", Environment.NewLine, exc); + logger.lg.scriviLog(errore, tipoLog.EXCEPTION); + answ = errore; + } + } + } + else + { + string errore = "Errore: parametri macchina/valore vuoti"; + logger.lg.scriviLog(errore, tipoLog.ERROR); + answ = errore; + } + } + else + { + string errore = "Errore: mancano parametri macchina/valore"; + logger.lg.scriviLog(errore, tipoLog.ERROR); + answ = errore; + } + return answ; + } + + #endregion + } } public enum tipoSelettore { - articoli + articoli }