using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using MP.Data.DatabaseModels; using NLog; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace MP.Data.Controllers { public class MpTabController : IDisposable { #region Public Constructors public MpTabController(IConfiguration configuration) { _configuration = configuration; Log.Info("Avviato MpTabController"); } #endregion Public Constructors #region Public Methods /// /// Restituisce l'anagrafica EVENTI per intero /// /// public List AnagEventiGetAll(string IdxMac) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { var IdxMacch = new SqlParameter("@idxMacchina", IdxMac); dbResult = dbCtx .DbSetAnagEventi .FromSqlRaw("exec dbo.stp_vseb_getByIdxMacchinaFull @idxMacchina", IdxMacch) .AsNoTracking() .AsEnumerable() .ToList(); } return dbResult; } /// /// Restituisce l'anagrafica STATI per intero /// /// public List AnagStatiGetAll() { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { dbResult = dbCtx .DbSetAnagStati .AsNoTracking() .ToList(); } return dbResult; } /// /// Elenco da tabella Config /// /// public List ConfigGetAll() { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { dbResult = dbCtx .DbSetConfig .AsNoTracking() .OrderBy(x => x.Chiave) .ToList(); } return dbResult; } public void Dispose() { _configuration = null; } /// /// Recupero Righe (Actual) della scheda tecnica da GRUPPO + ODL /// /// /// /// public List STAR_byGrpOdl(string codGruppo, int idxODL) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { var CodGruppo = new SqlParameter("@CodGruppo", codGruppo); var IdxODL = new SqlParameter("@IdxODL", idxODL); dbResult = dbCtx .DbSetStActRow .FromSqlRaw("exec dbo.stp_ST_AR_getByGrpOdl @CodGruppo, @IdxODL", CodGruppo, IdxODL) .AsNoTracking() .AsEnumerable() .ToList(); } return dbResult; } /// /// Recupero Righe (Actual) della scheda tecnica da GRUPPO + ODL + label /// /// /// /// /// public List STAR_byGrpOdlLbl(string codGruppo, string label, int idxODL) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { var CodGruppo = new SqlParameter("@CodGruppo", codGruppo); var Label = new SqlParameter("@Label", label); var IdxODL = new SqlParameter("@IdxODL", idxODL); dbResult = dbCtx .DbSetStActRow .FromSqlRaw("exec dbo.stp_ST_AR_getGrpOdlLabel @CodGruppo, @Label, @IdxODL", CodGruppo, Label, IdxODL) .AsNoTracking() .AsEnumerable() .ToList(); } return dbResult; } /// /// Stato prod macchina (completo) /// /// /// /// public StatoProdModel StatoProdMacchina(string idxMacchina, DateTime dtReq) { StatoProdModel dbResult = new StatoProdModel(); using (var dbCtx = new MoonProContext(_configuration)) { var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); var DataOra = new SqlParameter("@DataOra ", dtReq); var rawData = dbCtx .DbSetStatoProd .FromSqlRaw("EXEC stp_StatoProd_getByMacchina @IdxMacchina, @DataOra ", IdxMacchina, DataOra) .AsNoTracking() .AsEnumerable() .ToList(); dbResult = rawData .FirstOrDefault(); } return dbResult; } /// /// Stato macchina (da key) /// /// /// public StatoMacchineModel StatoMacchina(string idxMacchina) { StatoMacchineModel dbResult = new StatoMacchineModel(); using (var dbCtx = new MoonProContext(_configuration)) { dbResult = dbCtx .DbSetStatoMacc .Where(x => x.IdxMacchina == idxMacchina) .AsNoTracking() .FirstOrDefault(); } return dbResult; } /// /// MicroStato macchina (da key) /// /// /// public MicroStatoMacchinaModel MicroStatoMacchina(string idxMacchina) { MicroStatoMacchinaModel dbResult = new MicroStatoMacchinaModel(); using (var dbCtx = new MoonProContext(_configuration)) { dbResult = dbCtx .DbSetMicroStatoMacc .Where(x => x.IdxMacchina == idxMacchina) .AsNoTracking() .FirstOrDefault(); } return dbResult; } /// /// Stato macchina - tutte /// /// /// public List MicroStatoMacchinaGetAll() { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { dbResult = dbCtx .DbSetMicroStatoMacc .AsNoTracking() .ToList(); } return dbResult; } /// /// Aggiornamento record Microstato macchina /// /// /// public bool MicroStatoMacchinaUpsert(MicroStatoMacchinaModel newRec) { bool fatto = false; using (var dbCtx = new MoonProContext(_configuration)) { var actRec = dbCtx .DbSetMicroStatoMacc .Where(x => x.IdxMacchina == newRec.IdxMacchina) .AsNoTracking() .FirstOrDefault(); if(actRec==null) { dbCtx .DbSetMicroStatoMacc .Add(newRec); } else { actRec.IdxMicroStato = newRec.IdxMicroStato; actRec.InizioStato = newRec.InizioStato; actRec.Value = newRec.Value; dbCtx.Entry(actRec).State = EntityState.Modified; } dbCtx.SaveChanges(); fatto = true; } return fatto; } /// /// Effettua conferma prod macchina dell'intero periodo da confermare (ultima conferma /// --> dtEvent) /// /// idx macchina da confermare /// 0=periodo, 1 = giorno, 2 = turno /// qta pezzi BUONI da confermare /// /// qta pezzi LASCIATI alla macchina da confermare (2 eventi 121 rettifica neg/pos) /// /// qta pezzi SCARTO da confermare /// DataOra in cui registrare approvazione /// Matricola operatore /// public bool ConfermaProdMacchinaFull(string idxMacchina, int modoConfProd, int numPzConfermati, int numPzLasciati, int numPzScarto, DateTime DataOraApp, int MatrOpr) { bool answ = false; try { var rigaProd = StatoProdMacchina(idxMacchina, DateTime.Now); using (var dbCtx = new MoonProContext(_configuration)) { var IdxMacchina = new SqlParameter("@idxMacchina", idxMacchina); var MatrApp = new SqlParameter("@MatrApp ", MatrOpr); var DataFrom = new SqlParameter("@dataFrom ", rigaProd.DataFrom); var DataTo = new SqlParameter("@dataTo", DataOraApp); var PezziConf = new SqlParameter("@pezziConf", numPzConfermati); var PezziLasc = new SqlParameter("@pezziLasciati", numPzLasciati); var PezziScar = new SqlParameter("@pezziScar", numPzScarto); var TipoConf = new SqlParameter("@TipoConf", modoConfProd); var DtOraApp = new SqlParameter("@DataOraApp", DataOraApp); var TestConferma = new SqlParameter("@TestConferma", true); var result = dbCtx .Database .ExecuteSqlRaw("EXEC stp_ConfermaProduzCompletaFull @idxMacchina, @MatrApp, @dataFrom, @dataTo, @pezziConf, @pezziLasciati, @pezziScar, @TipoConf, @DataOraApp, @TestConferma ", IdxMacchina, MatrApp, DataFrom, DataTo, PezziConf, PezziLasc, PezziScar, TipoConf, DtOraApp, TestConferma); // indico eseguito! answ = result > 0; } } catch (Exception exc) { Log.Error($"Eccezione in ConfermaProdMacchinaFull con rett ev121:{Environment.NewLine}{exc}"); } return answ; } /// /// Effettua conferma prod macchina dell'intero periodo da confermare (ultima conferma /// --> dtEvent) /// /// idx macchina da confermare /// 0=periodo, 1 = giorno, 2 = turno /// qta pezzi BUONI da confermare /// qta pezzi SCARTO da confermare /// DataOra in cui registrare approvazione /// Matricola operatore /// public bool ConfermaProdMacchina(string idxMacchina, int modoConfProd, int numPzConfermati, int numPzScarto, DateTime DataOraApp, int MatrOpr) { bool answ = false; try { var rigaProd = StatoProdMacchina(idxMacchina, DateTime.Now); using (var dbCtx = new MoonProContext(_configuration)) { var IdxMacchina = new SqlParameter("@idxMacchina", idxMacchina); var MatrApp = new SqlParameter("@MatrApp ", MatrOpr); var DataFrom = new SqlParameter("@dataFrom ", rigaProd.DataFrom); var DataTo = new SqlParameter("@dataTo", DataOraApp); var PezziConf = new SqlParameter("@pezziConf", numPzConfermati); var PezziScar = new SqlParameter("@pezziScar", numPzScarto); var TipoConf = new SqlParameter("@TipoConf", modoConfProd); var DtOraApp = new SqlParameter("@DataOraApp", DataOraApp); var TestConferma = new SqlParameter("@TestConferma", true); var result = dbCtx .Database .ExecuteSqlRaw("EXEC stp_ConfermaProduzCompleta @idxMacchina, @MatrApp, @dataFrom, @dataTo, @pezziConf, @pezziScar, @TipoConf, @DataOraApp, @TestConferma ", IdxMacchina, MatrApp, DataFrom, DataTo, PezziConf, PezziScar, TipoConf, DtOraApp, TestConferma); // indico eseguito! answ = result > 0; } } catch (Exception exc) { Log.Error($"Eccezione in ConfermaProdMacchina:{Environment.NewLine}{exc}"); } return answ; } /// /// Effettua ricalcolo MSE x macchina indicata /// /// idx macchina da confermare /// Num massimo secondi di "vecchiaia" del dato /// public bool RicalcMse(string idxMacchina, int maxAgeSec) { bool answ = false; try { var rigaProd = StatoProdMacchina(idxMacchina, DateTime.Now); using (var dbCtx = new MoonProContext(_configuration)) { var MaxAgeSec = new SqlParameter("@maxAgeSec ", maxAgeSec); var IdxMacchina = new SqlParameter("@idxMacchina", idxMacchina); var result = dbCtx .Database .ExecuteSqlRaw("EXEC stp_MSE_recalc @maxAgeSec, @idxMacchina ", MaxAgeSec, IdxMacchina); // indico eseguito! answ = result > 0; } } catch (Exception exc) { Log.Error($"Eccezione in RicalcMse:{Environment.NewLine}{exc}"); } return answ; } #endregion Public Methods #region Private Fields private static IConfiguration _configuration; private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); #endregion Private Fields } }