using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using MP.Data.DbModels; using MP.Data.DbModels.Anag; using NLog; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Threading.Tasks; namespace MP.Data.Controllers { public class MpIocController : IDisposable { #region Public Constructors public MpIocController(IConfiguration configuration) { _configuration = configuration; Log.Info("Avviata classe MpIocController"); } #endregion Public Constructors #region Public Methods /// /// Insert record allarme /// /// Data evento /// Id macchina /// area memoria /// indice memoria /// valore status /// valore decodificato /// public async Task AlarmLogInsertAsync(DateTime dtRif, string machineId, string memAddress, int memIndex, int statusVal, string valDecoded) { bool fatto = false; using (var dbCtx = new MoonProContext(_configuration)) { var DtRif = new SqlParameter("@DtRif", dtRif); var MachineId = new SqlParameter("@MachineId", machineId); var MemAddress = new SqlParameter("@MemAddress", memAddress); var MemIndex = new SqlParameter("@MemIndex", memIndex); var StatusVal = new SqlParameter("@StatusVal", statusVal); var ValDecoded = new SqlParameter("@ValDecoded", valDecoded); var result = await dbCtx .Database .ExecuteSqlRawAsync("EXEC stp_AL_insertQuery @DtRif, @MachineId, @MemAddress, @MemIndex, @StatusVal, @ValDecoded, ", DtRif, MachineId, MemAddress, MemIndex, StatusVal, ValDecoded); fatto = result != 0; } return fatto; } /// /// Restituisce l'anagrafica STATI per intero /// /// public async Task> AnagStatiGetAllAsync() { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { dbResult = await dbCtx .DbSetAnagStati .AsNoTracking() .ToListAsync(); } return dbResult; } /// /// Restitusice elenco ultimi articoli per macchina /// /// /// /// /// public async Task> ArticoliGetLastByMaccAsync(string idxMacc) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc); dbResult = await dbCtx .DbSetArticoli .FromSqlRaw("exec dbo.stp_ART_getLastByMacch @idxMacchina", IdxMacchina) .AsNoTracking() .ToListAsync(); } return dbResult; } /// /// Apre in automatico un nuovo PODL/ODL chiudendo l'attuale (aperto) /// /// Idx ODL corrente /// Matricola operatore /// idx macchina da confermare /// TempoCiclo richiesto in attrezzaggio /// # pz pallet /// note ODL /// bool per avvio nuovo ODL (def: true) /// Qty da produrre, deve essere >0 /// KeyRich esterno, se vuoto uso vecchia, se KIT sovrascritto con KeyKit /// public async Task AutoStartOdlAsync(int idxOdl, int MatrOpr, string idxMacchina, decimal tCRich, int pzPallet, string note, bool startNewOdl, int qtyRich, string keyRich) { bool answ = false; try { using (var dbCtx = new MoonProContext(_configuration)) { var IdxOdl = new SqlParameter("@idxOdl ", idxOdl); var MatrApp = new SqlParameter("@MatrApp ", MatrOpr); var IdxMacchina = new SqlParameter("@idxMacchina", idxMacchina); var TCRich = new SqlParameter("@TCRichAttr", tCRich); var PzPallet = new SqlParameter("@PzPallet", pzPallet); var Note = new SqlParameter("@Note", note); var StartNewOdl = new SqlParameter("@StartNewOdl", startNewOdl); var QtyRich = new SqlParameter("@QtyRich", qtyRich); var KeyRichiesta = new SqlParameter("@KeyRichiesta", keyRich); var result = await dbCtx .Database .ExecuteSqlRawAsync("EXEC stp_ODL_AutoStart @idxOdl, @MatrApp, @idxMacchina, @TCRichAttr, @PzPallet, @Note, @StartNewOdl, @QtyRich, @KeyRichiesta", IdxOdl, MatrApp, IdxMacchina, TCRich, PzPallet, Note, StartNewOdl, QtyRich, KeyRichiesta); // indico eseguito! answ = result > 0; } } catch (Exception exc) { Log.Error($"Eccezione in ConfermaProdMacchina:{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 async Task ConfermaProdMacchinaAsync(string idxMacchina, int modoConfProd, int numPzConfermati, int numPzScarto, DateTime DataOraApp, int MatrOpr) { bool answ = false; try { var rigaProd = await StatoProdMacchinaAsync(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 = await dbCtx .Database .ExecuteSqlRawAsync("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 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 da confermare /// qta pezzi SCARTO da confermare /// DataOra in cui registrare approvazione /// Matricola operatore /// public async Task ConfermaProdMacchinaFullAsync(string idxMacchina, int modoConfProd, int numPzConfermati, int numPzLasciati, int numPzScarto, DateTime DataOraApp, int MatrOpr) { bool answ = false; try { var rigaProd = await StatoProdMacchinaAsync(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 Force = new SqlParameter("@Force", false); var result = await dbCtx .Database .ExecuteSqlRawAsync("EXEC stp_ConfermaProduzCompletaFull @idxMacchina, @MatrApp, @dataFrom, @dataTo, @pezziConf, @pezziLasciati, @pezziScar, @TipoConf, @DataOraApp, @TestConferma,@Force", IdxMacchina, MatrApp, DataFrom, DataTo, PezziConf, PezziLasc, PezziScar, TipoConf, DtOraApp, TestConferma, Force); // indico eseguito! answ = result > 0; } } catch (Exception exc) { Log.Error($"Eccezione in ConfermaProdMacchinaAsync:{Environment.NewLine}{exc}"); } return answ; } /// /// Record ConfFlux dato macchina (oppure tutti se vuoto) /// /// /// public async Task> ConfFluxFiltAsync(string idxMacc) { List dbResult = new(); using (var dbCtx = new MoonPro_FluxContext(_configuration)) { var query = dbCtx.DbSetConfFlux .AsNoTracking() .AsQueryable(); if (!string.IsNullOrEmpty(idxMacc)) query = query.Where(x => x.IdxMacchina == idxMacc); dbResult = await query.ToListAsync(); } 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; } /// /// Update record config /// /// public bool ConfigUpdate(ConfigModel updRec) { bool fatto = false; ConfigModel dbResult = new ConfigModel(); using (var dbCtx = new MoonProContext(_configuration)) { dbResult = dbCtx .DbSetConfig .Where(x => x.Chiave == updRec.Chiave) .FirstOrDefault(); if (dbResult != null) { dbResult.Valore = updRec.Valore; dbCtx.SaveChanges(); fatto = true; } } return fatto; } /// /// Intera tab dati macchina /// /// public List DatiMacchineGetAll() { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { dbResult = dbCtx .DbSetDatiMacchine .AsNoTracking() .OrderBy(x => x.IdxMacchina) .ToList(); } return dbResult; } /// /// Intera tab dati macchina /// /// public async Task> DatiMacchineGetAllAsync() { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { dbResult = await dbCtx .DbSetDatiMacchine .AsNoTracking() .OrderBy(x => x.IdxMacchina) .ToListAsync(); } return dbResult; } /// /// Inserimento record in DDB /// /// /// /// /// /// /// /// /// public bool DDB_InsStatoBatch(string idxMacchina, DateTime inizioStato, int idxStato, string codArt, string value, int matrOpr, string pallet) { bool fatto = false; using (var dbCtx = new MoonProContext(_configuration)) { var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); var InizioStato = new SqlParameter("@InizioStato", inizioStato); var IdxStato = new SqlParameter("@IdxStato", idxStato); var CodArticolo = new SqlParameter("@codArticolo", codArt); var Value = new SqlParameter("@Value", value); var MatrOpr = new SqlParameter("@MatrOpr", matrOpr); var Pallet = new SqlParameter("@pallet", pallet); var result = dbCtx .Database .ExecuteSqlRaw("exec dbo.stp_DDB_InsStatoBatch @IdxMacchina, @InizioStato, @IdxStato, @codArticolo, @Value, @MatrOpr, @pallet", IdxMacchina, InizioStato, IdxStato, CodArticolo, Value, MatrOpr, Pallet); // indico eseguito! fatto = result > 0; } return fatto; } /// /// Elenco tabella decodifica articoli / codice decimale /// /// Vuoto = tutti / Singolo CodArt /// public async Task> DecNumArtGetFiltAsync(string codArt = "") { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { var query = dbCtx.DbSetDecNumArt .AsNoTracking() .AsQueryable(); if (!string.IsNullOrEmpty(codArt)) query = query.Where(x => x.CodArticolo == codArt); dbResult = await query.ToListAsync(); } return dbResult; } public void Dispose() { _configuration = null; } /// /// Stored x recuperare ultimi dossier macchina /// /// /// public async Task> DossGetLastByMaccAsync(string idxMacc) { List dbResult = new(); using (var dbCtx = new MoonPro_FluxContext(_configuration)) { var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc); dbResult = await dbCtx .DbSetDossiers .FromSqlRaw("exec dbo.stp_DOSS_getLastByMacch @idxMacchina", IdxMacchina) .AsNoTracking() .ToListAsync(); } return dbResult; } /// /// Aggiunta record EventList /// /// /// public bool EvListInsert(EventListModel newRec) { bool fatto = false; using (var dbCtx = new MoonProContext(_configuration)) { try { var currRec = dbCtx .DbSetEvList .Add(newRec); dbCtx.SaveChanges(); } catch (Exception exc) { Log.Error($"Eccezione durante EvListInsert{Environment.NewLine}{exc}"); } } return fatto; } /// /// Aggiunta record EventList /// /// /// public async Task EvListInsertAsync(EventListModel newRec) { bool fatto = false; using (var dbCtx = new MoonProContext(_configuration)) { try { var currRec = dbCtx .DbSetEvList .Add(newRec); await dbCtx.SaveChangesAsync(); } catch (Exception exc) { Log.Error($"Eccezione durante EvListInsertAsync{Environment.NewLine}{exc}"); } } return fatto; } /// /// Fix ODL per macchine SLAVE /// /// /// /// /// public bool OdlFixMachineSlave(string idxMacchina, int numDayPrev, int doInsert) { bool fatto = false; using (var dbCtx = new MoonProContext(_configuration)) { try { var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina); var NumDayPrev = new SqlParameter("@NumDayPrev", numDayPrev); var DoInsert = new SqlParameter("@DoInsert", doInsert); var result = dbCtx .Database .ExecuteSqlRaw("EXEC stp_ODL_fixMachineSlave @IdxMacchina, @NumDayPrev, @DoInsert", IdxMacc, NumDayPrev, DoInsert); fatto = result != 0; } catch (Exception exc) { Log.Error($"Eccezione durante OdlFixMachineSlave{Environment.NewLine}{exc}"); } } return fatto; } /// /// Fix ODL per macchine SLAVE Async /// /// /// /// /// public async Task OdlFixMachineSlaveAsync(string idxMacchina, int numDayPrev, int doInsert) { bool fatto = false; using (var dbCtx = new MoonProContext(_configuration)) { try { var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina); var NumDayPrev = new SqlParameter("@NumDayPrev", numDayPrev); var DoInsert = new SqlParameter("@DoInsert", doInsert); var result = await dbCtx .Database .ExecuteSqlRawAsync("EXEC stp_ODL_fixMachineSlave @IdxMacchina, @NumDayPrev, @DoInsert", IdxMacc, NumDayPrev, DoInsert); fatto = result != 0; } catch (Exception exc) { Log.Error($"Eccezione durante OdlFixMachineSlaveAsync{Environment.NewLine}{exc}"); } } return fatto; } /// /// Chiamata x stored recupero FluxLog x macchina (first) /// /// /// /// public async Task> FluxLogFirstByMaccAsync(string idxMacc, int numMax) { List dbResult = new(); using (var dbCtx = new MoonPro_FluxContext(_configuration)) { var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc); var NumMax = new SqlParameter("@numMax", numMax); dbResult = await dbCtx .DbSetFluxLog .FromSqlRaw("exec dbo.stp_FL_getFirstByMacc @IdxMacchina, @numMax", IdxMacchina, NumMax) .AsNoTracking() .ToListAsync(); } return dbResult; } /// /// Elenco ultimi n record flux log dato macchina e flusso (ordinato x data registrazione) /// /// Data massima x eventi /// Data minima x eventi /// * = tutte, altrimenti solo x una data macchina /// *=tutti, altrimenti solo selezionato /// numero massimo record da restituire /// public List FluxLogGetLastFilt(DateTime DtMax, DateTime DtMin, string IdxMacchina, string CodFlux, int MaxRec) { List dbResult = new List(); using (var dbCtx = new MoonPro_FluxContext(_configuration)) { dbResult = dbCtx .DbSetFluxLog .AsNoTracking() .Where(x => (x.dtEvento >= DtMin && x.dtEvento <= DtMax) && (IdxMacchina == "*" || x.IdxMacchina == IdxMacchina) && (CodFlux == "*" || x.CodFlux == CodFlux)) .OrderByDescending(x => x.dtEvento) .Take(MaxRec) .ToList(); } return dbResult; } /// /// Aggiunta record FluxLog /// /// /// public bool FluxLogInsert(FluxLogModel newRec) { bool fatto = false; using (var dbCtx = new MoonPro_FluxContext(_configuration)) { try { var currRec = dbCtx .DbSetFluxLog .Add(newRec); dbCtx.SaveChanges(); } catch (Exception exc) { Log.Error($"Eccezione durante FluxLogInsert{Environment.NewLine}{exc}"); } } return fatto; } /// /// Aggiunta record FluxLog Async /// /// /// public async Task FluxLogInsertAsync(FluxLogModel newRec) { bool fatto = false; using (var dbCtx = new MoonPro_FluxContext(_configuration)) { try { var currRec = dbCtx .DbSetFluxLog .Add(newRec); await dbCtx.SaveChangesAsync(); } catch (Exception exc) { Log.Error($"Eccezione durante FluxLogInsertAsync{Environment.NewLine}{exc}"); } } return fatto; } /// /// Stored x eseguire Snapshot FluxLog (= Dossier) dato periodo /// /// /// public async Task FluxLogTakeSnapshotLastAsync(string idxMacc, DateTime dataInizio, DateTime dataFine) { bool fatto = false; using (var dbCtx = new MoonPro_FluxContext(_configuration)) { var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc); var DataInizio = new SqlParameter("@DtMin", dataInizio); var DataFine = new SqlParameter("@DtMax", dataFine); var result = await dbCtx .Database .ExecuteSqlRawAsync("EXEC stp_FL_TakeSnapshotLast @IdxMacchina, @DtMin, @DtMax", IdxMacchina, DataInizio, DataFine); fatto = result > 0; } return fatto; } public bool KeepAliveUpsert(string IdxMacc, DateTime OraServer, DateTime OraMacc) { bool fatto = false; using (var dbCtx = new MoonProContext(_configuration)) { var currRec = dbCtx .DbSetKeepAlive .Where(x => x.IdxMacchina == IdxMacc) .FirstOrDefault(); if (currRec != null) { currRec.DataOraServer = OraServer; currRec.DataOraMacchina = OraMacc; dbCtx.Entry(currRec).State = EntityState.Modified; } else { KeepAliveModel newRec = new KeepAliveModel() { IdxMacchina = IdxMacc, DataOraMacchina = OraMacc, DataOraServer = OraServer, DataOraStart = DateTime.Now }; dbCtx .DbSetKeepAlive .Add(newRec); } dbCtx.SaveChanges(); fatto = true; } return fatto; } public async Task KeepAliveUpsertAsync(string IdxMacc, DateTime OraServer, DateTime OraMacc) { bool fatto = false; using (var dbCtx = new MoonProContext(_configuration)) { var currRec = await dbCtx .DbSetKeepAlive .Where(x => x.IdxMacchina == IdxMacc) .FirstOrDefaultAsync(); if (currRec != null) { currRec.DataOraServer = OraServer; currRec.DataOraMacchina = OraMacc; dbCtx.Entry(currRec).State = EntityState.Modified; } else { KeepAliveModel newRec = new KeepAliveModel() { IdxMacchina = IdxMacc, DataOraMacchina = OraMacc, DataOraServer = OraServer, DataOraStart = DateTime.Now }; dbCtx .DbSetKeepAlive .Add(newRec); } fatto = await dbCtx.SaveChangesAsync() > 0; } return fatto; } public List ListLinkFilt(string tipoLink) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { dbResult = dbCtx .DbSetLinkMenu .Where(x => x.TipoLink == tipoLink) .AsNoTracking() .OrderBy(x => x.Ordine) .ToList(); } return dbResult; } /// /// Elenco valori ammessi x tabella/colonna con filtro parametrico /// /// Filtro tabella (se "" tutto) /// Filtro colonna (se "" tutto) /// public async Task> ListValuesFilt(string tabName, string fieldName) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { var query = dbCtx.DbSetListValues .AsNoTracking() .AsQueryable(); if (!string.IsNullOrEmpty(tabName)) query = query.Where(x => x.TableName == tabName); if (!string.IsNullOrEmpty(fieldName)) query = query.Where(x => x.FieldName == fieldName); dbResult = await query.ToListAsync(); } return dbResult; } /// /// Intera tabella relazione master/slave in machine (gestione setup master --> slave) /// /// public List Macchine2Slave() { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { dbResult = dbCtx .DbSetM2S .AsNoTracking() .OrderBy(x => x.IdxMacchina) .ToList(); } return dbResult; } /// /// Intera tabella relazione master/slave in machine (gestione setup master --> slave) /// /// public async Task> Macchine2SlaveAsync() { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { dbResult = await dbCtx .DbSetM2S .AsNoTracking() .OrderBy(x => x.IdxMacchina) .ToListAsync(); } return dbResult; } /// /// Elenco Record Macchine /// /// public List MacchineGetAll() { List dbResult = new List(); using (MoonProContext dbCtx = new MoonProContext(_configuration)) { dbResult = dbCtx .DbSetMacchine .ToList(); } return dbResult; } public MacchineModel? MacchineGetByIdx(string IdxMacchina) { MacchineModel dbResult = null; using (MoonProContext dbCtx = new MoonProContext(_configuration)) { dbResult = dbCtx .DbSetMacchine .FirstOrDefault(x => x.IdxMacchina == IdxMacchina); } return dbResult; } public async Task MacchineGetByIdxAsync(string IdxMacchina) { MacchineModel dbResult = null; using (MoonProContext dbCtx = new MoonProContext(_configuration)) { dbResult = await dbCtx .DbSetMacchine .FirstOrDefaultAsync(x => x.IdxMacchina == IdxMacchina); } return dbResult; } /// /// Elenco da tabella Macchine /// /// /// public List MacchineGetFilt(string codGruppo) { List dbResult = new List(); try { using (var dbCtx = new MoonProContext(_configuration)) { if (codGruppo == "*") { dbResult = dbCtx .DbSetMacchine .AsNoTracking() .OrderBy(x => x.IdxMacchina) .ToList(); } else { dbResult = dbCtx .DbSetGrp2Macc .Where(g => g.CodGruppo == codGruppo) .Join(dbCtx.DbSetMacchine, g => g.IdxMacchina, m => m.IdxMacchina, (g, m) => m ) .AsNoTracking() .OrderBy(x => x.IdxMacchina) .ToList(); } } } catch (Exception exc) { Log.Error($"Eccezione in MacchineGetFilt{Environment.NewLine}{exc}"); } return dbResult; } /// /// Upsert Record Macchine /// /// public bool MacchineUpsert(MacchineModel entity) { using (MoonProContext dbCtx = new MoonProContext(_configuration)) { // Recuperiamo l'entità tracciata dal context var trackedEntity = dbCtx.DbSetMacchine.FirstOrDefault(x => x.IdxMacchina == entity.IdxMacchina); if (trackedEntity != null) { // Aggiorna i valori dell'entità tracciata con quelli della nuova dbCtx.Entry(trackedEntity).CurrentValues.SetValues(entity); } else { dbCtx.DbSetMacchine.Update(entity); } return dbCtx.SaveChanges() > 0; } } /// /// Upsert Record Macchine ASYNC /// /// public async Task MacchineUpsertAsync(MacchineModel entity) { using (MoonProContext dbCtx = new MoonProContext(_configuration)) { // Recuperiamo l'entità tracciata dal context var trackedEntity = await dbCtx.DbSetMacchine.FirstOrDefaultAsync(x => x.IdxMacchina == entity.IdxMacchina); if (trackedEntity != null) { // Aggiorna i valori dell'entità tracciata con quelli della nuova dbCtx.Entry(trackedEntity).CurrentValues.SetValues(entity); } else { dbCtx.DbSetMacchine.Update(entity); } bool fatto = await dbCtx.SaveChangesAsync() > 0; return fatto; } } /// /// Elenco da tabella Macchine /// /// /// public List MicroStatoMacchinaGetByIdxMacc(string IdxMacc) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { dbResult = dbCtx .DbSetMicroStatoMacc .Where(x => x.IdxMacchina == IdxMacc) .AsNoTracking() .ToList(); return dbResult; } } /// /// Elenco da tabella Macchine /// /// /// public async Task> MicroStatoMacchinaGetByIdxMaccAsync(string IdxMacc) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { dbResult = await dbCtx .DbSetMicroStatoMacc .Where(x => x.IdxMacchina == IdxMacc) .AsNoTracking() .ToListAsync(); 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; } fatto = dbCtx.SaveChanges() > 0; } return fatto; } /// /// Aggiornamento record Microstato macchina /// /// /// public async Task MicroStatoMacchinaUpsertAsync(MicroStatoMacchinaModel newRec) { bool fatto = false; using (var dbCtx = new MoonProContext(_configuration)) { var actRec = await dbCtx .DbSetMicroStatoMacc .Where(x => x.IdxMacchina == newRec.IdxMacchina) .AsNoTracking() .FirstOrDefaultAsync(); 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; } fatto = await dbCtx.SaveChangesAsync() > 0; } return fatto; } /// /// Elenco da tabella MappaStatoExplModel /// /// public async Task> MseGetAllAsync(int maxAge = 2000) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { var maxAgeSec = new SqlParameter("@maxAgeSec", maxAge); dbResult = await dbCtx .DbSetMSE .FromSqlRaw("EXEC stp_MSE_getData @maxAgeSec", maxAgeSec) .AsNoTracking() .ToListAsync(); } return dbResult; } /// /// Generazione automatica ODL /// /// /// public async Task OdlAutoDayGenAsync(string idxMacchina, DateTime dataInizio, DateTime dataFine, string codArticolo) { bool answ = false; using (var dbCtx = new MoonProContext(_configuration)) { try { var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); var DataInizio = new SqlParameter("@DataInizio", dataInizio); var DataFine = new SqlParameter("@DataFine", dataFine); var CodArticolo = new SqlParameter("@codArticolo", codArticolo); var result = dbCtx .Database .ExecuteSqlRaw("EXEC stp_ODL_AutoDayGener @IdxMacchina, @DataInizio, @DataFine, @codArticolo", IdxMacchina, DataInizio, DataFine, CodArticolo); // indico eseguito! answ = result > 0; } catch (Exception exc) { Log.Error($"Eccezione durante stp_ODL_AutoDayGener{Environment.NewLine}{exc}"); } } return answ; } /// /// Generazione automatica ODL completa /// /// /// public async Task OdlAutoDayGenFullAsync(string idxMacchina, DateTime dataInizio, DateTime dataFine, string codArticolo, int? pzPODL, int? pzPallet, string? keyRichiesta, int? tcAssegnato, string? codGruppo, bool flgCreaPODL, bool flgCheckTC) { bool answ = false; using (var dbCtx = new MoonProContext(_configuration)) { try { var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); var DataInizio = new SqlParameter("@DataInizio", dataInizio); var DataFine = new SqlParameter("@DataFine", dataFine); var CodArticolo = new SqlParameter("@codArticolo", codArticolo); var PzPODL = new SqlParameter("@PzPODL", pzPODL); var PzPallet = new SqlParameter("@PzPallet", pzPallet); var KeyRichiesta = new SqlParameter("@KeyRichiesta", keyRichiesta); var TCAssegnato = new SqlParameter("@TCAssegnato", tcAssegnato); var CodGruppo = new SqlParameter("@codGruppo", codGruppo); var FlgCreaPODL = new SqlParameter("@flgCreaPODL", flgCreaPODL); var FlgCheckTC = new SqlParameter("@flgCheckTC", flgCheckTC); var result = dbCtx .Database .ExecuteSqlRaw("EXEC stp_ODL_AutoDayGenerFull @IdxMacchina, @DataInizio, @DataFine, @codArticolo, @PzPODL, @PzPallet, @KeyRichiesta, @TCAssegnato, @codGruppo, @flgCreaPODL, @flgCheckTC", IdxMacchina, DataInizio, DataFine, CodArticolo, PzPODL, PzPallet, KeyRichiesta, TCAssegnato, CodGruppo, FlgCreaPODL, FlgCheckTC); // indico eseguito! answ = result > 0; } catch (Exception exc) { Log.Error($"Eccezione durante stp_ODL_AutoDayGenerFull{Environment.NewLine}{exc}"); } } return answ; } /// /// ODL corrente macchina /// /// /// public ODLExpModel OdlCurrByMacc(string idxMacchina) { ODLExpModel answ = new(); using (var dbCtx = new MoonProContext(_configuration)) { try { var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); var dbRes = (dbCtx.DbSetODLExp .FromSqlRaw("EXEC stp_ODL_getByMacchina @IdxMacchina", pIdxMacchina) .AsNoTracking() .ToList()) // Esegue la query e scarica i risultati in memoria .FirstOrDefault(); // Prende il primo elemento dalla lista in RAM answ = dbRes ?? new(); } catch (Exception exc) { Log.Error($"Eccezione durante OdlCurrByMacc{Environment.NewLine}{exc}"); } } return answ; } /// /// ODL corrente macchina /// /// /// public async Task OdlCurrByMaccAsync(string idxMacchina) { ODLExpModel answ = new(); using (var dbCtx = new MoonProContext(_configuration)) { try { var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); // attenzione: se la stored resituisce una tabella, il primo elemento va recuperato in RAM!!! var dbRes = (await dbCtx.DbSetODLExp .FromSqlRaw("EXEC stp_ODL_getByMacchina @IdxMacchina", pIdxMacchina) .AsNoTracking() .ToListAsync()) // Esegue la query e scarica i risultati in memoria .FirstOrDefault(); // Prende il primo elemento dalla lista in RAM answ = dbRes ?? new(); } catch (Exception exc) { Log.Error($"Eccezione durante OdlCurrByMaccAsync{Environment.NewLine}{exc}"); } } return answ; } /// /// ODL corrente macchina /// /// /// public async Task OdlLastByMaccAsync(string idxMacchina) { ODLExpModel answ = new(); using (var dbCtx = new MoonProContext(_configuration)) { try { var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); // attenzione: se la stored resituisce una tabella, il primo elemento va recuperato in RAM!!! var dbRes = (await dbCtx.DbSetODLExp .FromSqlRaw("EXEC stp_ODL_getLastByMacchina @IdxMacchina", pIdxMacchina) .AsNoTracking() .ToListAsync()) // Esegue la query e scarica i risultati in memoria .FirstOrDefault(); // Prende il primo elemento dalla lista in RAM answ = dbRes ?? new(); } catch (Exception exc) { Log.Error($"Eccezione durante OdlCurrByMaccAsync{Environment.NewLine}{exc}"); } } return answ; } /// /// Elenco ODL data macchina e periodo /// /// /// /// /// public List OdlListByMaccPeriodo(string idxMacchina, DateTime dtStart, DateTime dtEnd) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { try { var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); var DataFrom = new SqlParameter("@dataFrom", dtStart); var DataTo = new SqlParameter("@dataTo", dtEnd); dbResult = dbCtx .DbSetODLExp .FromSqlRaw("EXEC stp_ODL_getByMacchinaPeriodo @IdxMacchina, @dataFrom, @dataTo", IdxMacchina, DataFrom, DataTo) .AsNoTracking() .ToList(); } catch (Exception exc) { Log.Error($"Eccezione durante OdlListByMaccPeriodo{Environment.NewLine}{exc}"); } } return dbResult; } /// /// Conteggio PzProd Macchina /// /// /// public PzProdModel PezziProdMacchina(string idxMacchina) { PzProdModel dbResult = new PzProdModel(); using (var dbCtx = new MoonProContext(_configuration)) { var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); dbResult = (dbCtx .DbSetPzProd .FromSqlRaw("EXEC stp_PzProd_getByMacchina @IdxMacchina", pIdxMacchina) .AsNoTracking() .ToList()) .FirstOrDefault(); // recupero da RAM } return dbResult; } /// /// Conteggio PzProd Macchina Async /// /// /// public async Task PezziProdMacchinaAsync(string idxMacchina) { PzProdModel dbResult = new PzProdModel(); using (var dbCtx = new MoonProContext(_configuration)) { var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); dbResult = (await dbCtx .DbSetPzProd .FromSqlRaw("EXEC stp_PzProd_getByMacchina @IdxMacchina", pIdxMacchina) .AsNoTracking() .ToListAsync()) .FirstOrDefault(); // recupero da RAM } return dbResult; } /// /// Recupero elenco PODL EXPL filtrati x macchina, articolo... /// /// /// /// /// True = aperti (=senza ODL) /// public async Task> POdlGetByMaccArtAsync(string idxMacchina, string codArticolo, string codGruppo, bool onlyFree) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); var pCodArticolo = new SqlParameter("@CodArticolo", codArticolo); var pCodGruppo = new SqlParameter("@CodGruppo", codGruppo); var pOnlyFree = new SqlParameter("@onlyFree", onlyFree); dbResult = await dbCtx .DbSetPODLExp .FromSqlRaw("EXEC stp_PODL_getByMaccArt @IdxMacchina, @CodArticolo, @CodGruppo, @onlyFree", pIdxMacchina, pCodArticolo, pCodGruppo, pOnlyFree) .AsNoTracking() .ToListAsync(); } return dbResult; } /// /// Effettua ricalcolo MSE x macchina indicata /// /// idx macchina da confermare /// Num massimo secondi di "vecchiaia" del dato /// public bool RecalcMse(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 RecalcMse:{Environment.NewLine}{exc}"); } return answ; } /// /// Effettua ricalcolo MSE x macchina indicata /// /// idx macchina da confermare /// Num massimo secondi di "vecchiaia" del dato /// public async Task RecalcMseAsync(string idxMacchina, int maxAgeSec) { bool answ = false; try { var rigaProd = await StatoProdMacchinaAsync(idxMacchina, DateTime.Now); using (var dbCtx = new MoonProContext(_configuration)) { var MaxAgeSec = new SqlParameter("@maxAgeSec ", maxAgeSec); var IdxMacchina = new SqlParameter("@idxMacchina", idxMacchina); var result = await dbCtx .Database .ExecuteSqlRawAsync("EXEC stp_MSE_recalc @maxAgeSec, @idxMacchina ", MaxAgeSec, IdxMacchina); // indico eseguito! answ = result > 0; } } catch (Exception exc) { Log.Error($"Eccezione in RecalcMseAsync:{Environment.NewLine}{exc}"); } return answ; } /// /// Registra controllo /// /// /// /// /// /// /// public async Task RegControlliInsert(string idxMacchina, int matrOpr, bool esitoOk, string note, DateTime dataOra) { bool fatto = false; using (var dbCtx = new MoonProContext(_configuration)) { var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina); var MatrOpr = new SqlParameter("@MatrOpr", matrOpr); var EsitoOk = new SqlParameter("@EsitoOk", esitoOk); var Note = new SqlParameter("@Note", note); var DataOra = new SqlParameter("@DataOra", dataOra); var result = await dbCtx .Database .ExecuteSqlRawAsync("EXEC stp_RC_insert @IdxMacchina, @MatrOpr, @EsitoOk, @Note, @DataOra", IdxMacc, MatrOpr, EsitoOk, Note, DataOra); fatto = result != 0; } return fatto; } /// /// Aggiunta record Registro Dichiarazioni /// /// /// public async Task RegDichiarInsert(RegistroDichiarazioniModel newRec) { bool fatto = false; using (var dbCtx = new MoonProContext(_configuration)) { var TagCode = new SqlParameter("@TagCode", newRec.TagCode); var IdxMacchina = new SqlParameter("@IdxMacchina", newRec.IdxMacchina); var DtRec = new SqlParameter("@DtRec", newRec.DtRec); var MatrOpr = new SqlParameter("@MatrOpr", newRec.MatrOpr); var ValString = new SqlParameter("@ValString", newRec.ValString); var result = await dbCtx .Database .ExecuteSqlRawAsync("exec dbo.stp_DD_insertQuery @TagCode, @IdxMacchina, @DtRec, @MatrOpr, @ValString", TagCode, IdxMacchina, DtRec, MatrOpr, ValString); // indico eseguito! fatto = result > 0; } return fatto; } /// /// Update record Registro Dichiarazioni /// /// /// public async Task RegDichiarUpdate(RegistroDichiarazioniModel newRec) { bool fatto = false; using (var dbCtx = new MoonProContext(_configuration)) { var Original_IdxDich = new SqlParameter("@Original_IdxDich", newRec.IdxDich); var DtRec = new SqlParameter("@DtRec", newRec.DtRec); var TagCode = new SqlParameter("@TagCode", newRec.TagCode); var ValString = new SqlParameter("@ValString", newRec.ValString); var MatrOpr = new SqlParameter("@MatrOpr", newRec.MatrOpr); var result = await dbCtx .Database .ExecuteSqlRawAsync("exec dbo.stp_DD_updateQuery @Original_IdxDich, @DtRec, @TagCode, @ValString, @MatrOpr", Original_IdxDich, DtRec, TagCode, ValString, MatrOpr); // indico eseguito! fatto = result > 0; } return fatto; } /// /// Aggiunta record RegistroScarti /// /// /// public async Task RegScartiInsert(RegistroScartiModel newRec) { bool fatto = false; using (var dbCtx = new MoonProContext(_configuration)) { var IdxMacchina = new SqlParameter("@idxMacchina", newRec.IdxMacchina); var DataOra = new SqlParameter("@DataOra", newRec.DataOra); var Causale = new SqlParameter("@Causale", newRec.Causale); var Qta = new SqlParameter("@Qta", newRec.Qta); var Note = new SqlParameter("@Note", newRec.Note); var MatrOpr = new SqlParameter("@MatrOpr", newRec.MatrOpr); var result = await dbCtx .DbSetRegWithCheck .FromSqlRaw("exec dbo.stp_RS_Insert_withCheck @idxMacchina, @DataOra, @Causale, @Qta, @Note, @MatrOpr", IdxMacchina, DataOra, Causale, Qta, Note, MatrOpr) .AsNoTracking() .ToListAsync(); // indico eseguito! // -1 = restituisce una select fatto = result.Count > 0; } return fatto; } /// /// Aggiunta record RemoteRebootLog /// /// /// public async Task RemRebootLogAddAsync(RemoteRebootLogModel newRec) { bool fatto = false; using (var dbCtx = new MoonProContext(_configuration)) { var dbResult = dbCtx .DbSetRemRebLog .Add(newRec); fatto = await dbCtx.SaveChangesAsync() > 0; } return fatto; } /// /// Recupera tutti i record di RemoteRebootLog /// /// public async Task> RemRebootLogGetAllAsync() { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { dbResult = await dbCtx .DbSetRemRebLog .AsNoTracking() .OrderByDescending(x => x.IdxReboot) .ToListAsync(); } return dbResult; } /// /// Recupera ultimo record x ogni IdxMacchina x avere ultimo attivo /// /// public async Task> RemRebootLogGetLastAsync() { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { dbResult = await dbCtx .DbSetRemRebLog .FromSqlRaw("EXEC stp_RRL_getLast") .AsNoTracking() .ToListAsync(); } return dbResult; } /// /// Recupera ultimo record x ogni IdxMacchina x avere ultimo attivo /// /// public async Task RemRebootLogKeepLastAsync(int num2keep) { bool answ = false; using (var dbCtx = new MoonProContext(_configuration)) { var Num2keep = new SqlParameter("@num2keep", num2keep); var dbResult = await dbCtx .Database .ExecuteSqlRawAsync("exec dbo.stp_RRL_KeepLatest @num2keep", Num2keep); answ = dbResult > 0; } return answ; } /// /// Annulla modifiche su una specifica entity (cancel update) /// /// /// public bool RollBackEntity(object item) { bool answ = false; using (var dbCtx = new MoonProContext(_configuration)) { try { if (dbCtx.Entry(item).State == Microsoft.EntityFrameworkCore.EntityState.Deleted || dbCtx.Entry(item).State == Microsoft.EntityFrameworkCore.EntityState.Modified) { dbCtx.Entry(item).Reload(); } } catch (Exception exc) { Log.Error($"Eccezione in rollBackEntity{Environment.NewLine}{exc}"); } } return answ; } /// /// Aggiunta record SignalLog /// /// /// public bool SignalLogInsert(SignalLogModel newRec) { bool fatto = false; using (var dbCtx = new MoonProContext(_configuration)) { try { var currRec = dbCtx .DbSetSignalLog .Add(newRec); dbCtx.SaveChanges(); } catch (Exception exc) { Log.Error($"Eccezione durante SignalLogInsert{Environment.NewLine}{exc}"); } } return fatto; } /// /// Aggiunta record SignalLog Async /// /// /// public async Task SignalLogInsertAsync(SignalLogModel newRec) { bool fatto = false; using (var dbCtx = new MoonProContext(_configuration)) { try { var currRec = dbCtx .DbSetSignalLog .Add(newRec); await dbCtx.SaveChangesAsync(); } catch (Exception exc) { Log.Error($"Eccezione durante SignalLogInsertAsync{Environment.NewLine}{exc}"); } } return fatto; } /// /// Tabella state machine eventi 2 stati data macchina e tipo evento /// /// /// public List SMES_getHwTransitions(string idxMacchina, int idxTipo) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); var IdxTipo = new SqlParameter("@IdxTipo", idxTipo); dbResult = dbCtx .DbSetSMES .FromSqlRaw("exec dbo.stp_TS_getByIdxMacchIdxTipoEv @IdxMacchina, @IdxTipo", IdxMacchina, IdxTipo) .AsNoTracking() .AsEnumerable() .ToList(); } return dbResult; } /// /// Tabella state machine eventi 2 stati data macchina e tipo evento /// /// /// public List SMES_getUserForced(string idxMacchina, int idxTipo) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); var IdxTipo = new SqlParameter("@IdxTipo", idxTipo); dbResult = dbCtx .DbSetSMES .FromSqlRaw("exec dbo.stp_TS_getUserForcedTrans @IdxMacchina, @IdxTipo", IdxMacchina, IdxTipo) .AsNoTracking() .AsEnumerable() .ToList(); } return dbResult; } /// /// Intera tabella state machine ingressi 2 eventi /// /// public List StateMachineIngressi(int idxFam) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { var IdxFamIn = new SqlParameter("@IdxFamigliaIngresso", idxFam); dbResult = dbCtx .DbSetSMI .FromSqlRaw("exec dbo.stp_TRI_getByIdxFamIng @IdxFamigliaIngresso", IdxFamIn) .AsNoTracking() .AsEnumerable() .ToList(); } return dbResult; } /// /// Intera tabella state machine ingressi 2 eventi /// /// public async Task> StateMachineIngressiAsync(int idxFam) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { var IdxFamIn = new SqlParameter("@IdxFamigliaIngresso", idxFam); dbResult = await dbCtx .DbSetSMI .FromSqlRaw("exec dbo.stp_TRI_getByIdxFamIng @IdxFamigliaIngresso", IdxFamIn) .AsNoTracking() .ToListAsync(); } 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 prod macchina (completo) Async /// /// /// /// public async Task StatoProdMacchinaAsync(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); dbResult = (await dbCtx .DbSetStatoProd .FromSqlRaw("EXEC stp_StatoProd_getByMacchina @IdxMacchina, @DataOra ", IdxMacchina, DataOra) .AsNoTracking() .ToListAsync()) .FirstOrDefault(); } return dbResult; } /// /// Intera vista v_MSFD /// /// public List VMSFDGetAll() { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { dbResult = dbCtx .DbSetMSFD .AsNoTracking() .OrderBy(x => x.IdxMacchina) .ToList(); } return dbResult; } /// /// Intera vista v_MSFD in modo ASYNC /// /// public async Task> VMSFDGetAllAsync() { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { try { dbResult = await dbCtx .DbSetMSFD .AsNoTracking() .OrderBy(x => x.IdxMacchina) .ToListAsync(); } catch (Exception exc) { } } return dbResult; } /// /// Vista v_MSFD x singola macchina (da stored) - singolo record /// /// /// public List VMSFDGetByMacc(string idxMacc) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc); dbResult = dbCtx .DbSetMSFD .FromSqlRaw("exec dbo.stp_MSFD_getMacc @IdxMacchina", IdxMacchina) .AsNoTracking() .AsEnumerable() .ToList(); } return dbResult; } /// /// Vista v_MSFD x singola macchina (da stored) - singolo record /// /// /// public async Task VMSFDGetByMaccAsync(string idxMacc) { VMSFDModel? dbResult = null; using (var dbCtx = new MoonProContext(_configuration)) { var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc); dbResult = await dbCtx .DbSetMSFD .FromSqlRaw("exec dbo.stp_MSFD_getMacc @IdxMacchina", IdxMacchina) .AsNoTracking() .FirstOrDefaultAsync(); } return dbResult; } /// /// Vista v_MSFD delle machine MULTI filtrato x macchina (da stored) /// /// /// public List VMSFDGetMultiByMacc(string idxMacc) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc); dbResult = dbCtx .DbSetMSFD .FromSqlRaw("exec dbo.stp_MSFD_getMulti @IdxMacchina", IdxMacchina) .AsNoTracking() .AsEnumerable() .ToList(); } return dbResult; } /// /// Vista v_MSFD delle machine MULTI filtrato x macchina (da stored) /// /// /// public async Task> VMSFDGetMultiByMaccAsync(string idxMacc) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc); dbResult = await dbCtx .DbSetMSFD .FromSqlRaw("exec dbo.stp_MSFD_getMulti @IdxMacchina", IdxMacchina) .AsNoTracking() //.AsEnumerable() .ToListAsync(); } return dbResult; } #endregion Public Methods #region Private Fields private static IConfiguration _configuration; private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); #endregion Private Fields } }