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 MpSpecController : IDisposable
{
#region Public Constructors
public MpSpecController(IConfiguration configuration)
{
_configuration = configuration;
Log.Info("Avviata classe MpSpecController");
}
#endregion Public Constructors
#region Public Methods
///
/// Elenco Gruppi tipo Azienda
///
///
public List AnagGruppiAziende()
{
return AnagGruppiGetTipo("AZIENDA");
}
///
/// Elenco Gruppi tipo Fasi
///
///
public List AnagGruppiFase()
{
return AnagGruppiGetTipo("FASE");
}
///
/// Elenco Gruppi
///
///
public List AnagGruppiGetAll()
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetAnagGruppi
.AsNoTracking()
.OrderBy(x => x.CodGruppo)
.ToList();
}
return dbResult;
}
///
/// Gruppi x tipo
///
///
///
public List AnagGruppiGetTipo(string tipoGruppo)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetAnagGruppi
.Where(x => x.TipoGruppo == tipoGruppo)
.AsNoTracking()
.OrderBy(x => x.CodGruppo)
.ToList();
}
return dbResult;
}
///
/// Elenco valori ammessi x Stati commessa (es Yacht Baglietto)
///
///
public List AnagStatiComm()
{
return ListValuesFilt("PODL", "StatoComm");
}
///
/// Elenco valori ammessi x Tipo articoli
///
///
public List AnagTipoArtLV()
{
return ListValuesFilt("AnagArticoli", "Tipo");
}
///
/// Elenco codice articoli che abbiano dati Dossier
///
///
public List ArticleWithDossier()
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetDossiers
.AsNoTracking()
.Select(i => i.CodArticolo)
.Distinct()
.ToList();
}
return dbResult;
}
///
/// Eliminazione Record
///
///
///
public async Task ArticoliDeleteRecord(AnagArticoli currRec)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var currVal = dbCtx
.DbSetArticoli
.Where(x => x.CodArticolo == currRec.CodArticolo)
.FirstOrDefault();
dbCtx
.DbSetArticoli
.Remove(currVal);
await dbCtx.SaveChangesAsync();
fatto = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante ArticoliDeleteRecord{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Elenco tabella Articoli da filtro
///
///
///
///
public List ArticoliGetSearch(int numRecord, string searchVal = "")
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetArticoli
.AsNoTracking()
.Where(x => x.CodArticolo.Contains(searchVal) || x.DescArticolo.Contains(searchVal) || x.Disegno.Contains(searchVal) || string.IsNullOrEmpty(searchVal))
.OrderBy(x => x.CodArticolo)
.Take(numRecord)
.ToList();
}
return dbResult;
}
///
/// Elenco tabella Articoli da filtro
///
///
///
///
///
public List ArticoliGetSearch(int numRecord, string azienda = "*", string searchVal = "")
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetArticoli
.AsNoTracking()
.Where(x => (x.Azienda == azienda || azienda == "*") && (x.CodArticolo.Contains(searchVal) || x.DescArticolo.Contains(searchVal) || x.Disegno.Contains(searchVal) || string.IsNullOrEmpty(searchVal)))
.OrderBy(x => x.CodArticolo)
.Take(numRecord)
.ToList();
}
return dbResult;
}
///
/// Elenco tabella Articoli IMPIEGATI (da stored stp_ART_getUsed)
///
///
public List ArticoliGetUsed()
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetArticoli
.FromSqlRaw("EXEC stp_ART_getUsed")
.AsNoTracking()
.ToList();
}
return dbResult;
}
///
/// Update Record
///
///
///
public async Task ArticoliUpdateRecord(AnagArticoli editRec)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var currRec = dbCtx
.DbSetArticoli
.Where(x => x.CodArticolo == editRec.CodArticolo)
.FirstOrDefault();
if (currRec != null)
{
currRec.Disegno = editRec.Disegno;
currRec.DescArticolo = editRec.DescArticolo;
currRec.Tipo = editRec.Tipo;
currRec.Azienda = editRec.Azienda;
dbCtx.Entry(currRec).State = EntityState.Modified;
}
else
{
dbCtx
.DbSetArticoli
.Add(editRec);
}
await dbCtx.SaveChangesAsync();
fatto = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante ArticoliUpdateRecord{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// 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;
}
public void Dispose()
{
}
///
/// Eliminazione di un dossier
///
/// record dossier da eliminare
///
public async Task DossiersDeleteRecord(DossierModel currRec)
{
bool answ = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var currVal = dbCtx
.DbSetDossiers
.Where(x => x.IdxDossier == currRec.IdxDossier)
.FirstOrDefault();
dbCtx
.DbSetDossiers
.Remove(currVal);
await dbCtx.SaveChangesAsync();
answ = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante DossiersDeleteRecord{Environment.NewLine}{exc}");
}
}
return answ;
}
///
/// Elenco ultimi n record DOssiers (che contengono ad esempio "salvataggi" di FLuxLog) dato
/// macchina (ordinato x data registrazione)
///
/// * = tutte, altrimenti solo x una data macchina
/// * = tutti, altrimenti solo x un dato articolo
/// Data minima per estrazione records
/// Data Massima per estrazione records
///
public List DossiersGetLastFilt(string IdxMacchina, string CodArticolo, DateTime DtStart, DateTime DtEnd)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetDossiers
.AsNoTracking()
.Where(x => (IdxMacchina == "*" || x.IdxMacchina == IdxMacchina) && (CodArticolo == "*" || x.CodArticolo == CodArticolo) && (x.DtRif >= DtStart && x.DtRif <= DtEnd))
.Include(m => m.MachineNav)
//.Include(o => o.OdlNav)
.Include(a => a.ArticoloNav)
.OrderByDescending(x => x.DtRif)
.ToList();
}
return dbResult;
}
///
/// insert di un record Dossier
///
/// record dossier da modificare
///
public async Task DossiersInsert(DossierModel newRec)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
dbCtx
.DbSetDossiers
.Add(newRec);
await dbCtx.SaveChangesAsync();
fatto = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante DossiersInsert{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Effettua salvataggio snapshot parametri (con stored) + svuota eventuale cache redis
///
/// macchina
/// Num massimo secondi per recuperare dati correnti
/// DataOra riferimento x cui prendere valori antecedenti
public bool DossiersTakeParamsSnapshot(string idxMacchina, int maxSec, DateTime dtRif)
{
bool answ = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var pMaxSec = new SqlParameter("@MaxSec", maxSec);
var pDtRif = new SqlParameter("@DtRif", dtRif);
var dbResult = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_FL_TakeSnapshot @IdxMacchina,@MaxSec,@DtRif", pIdxMacchina, pMaxSec, pDtRif);
answ = true;
}
return answ;
}
///
/// Effettua salvataggio snapshot parametri (con stored) + svuota eventuale cache redis
///
/// macchina
/// Data min x selezione
/// Data MAX x selezione
public bool DossiersTakeParamsSnapshotLast(string idxMacchina, DateTime dtMin, DateTime dtMax)
{
bool answ = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var pDtMin = new SqlParameter("@DtMin", dtMin);
var pDtMax = new SqlParameter("@DtMax", dtMax);
var dbResult = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_FL_TakeSnapshotLast @IdxMacchina,@DtMin,@DtMax", pIdxMacchina, pDtMin, pDtMax);
answ = true;
}
return answ;
}
///
/// Update del campo VALORE di un dossier (che contiene json flux log serializzati)
///
/// record dossier da modificare
///
public async Task DossiersUpdateValore(DossierModel editRec)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var currRec = dbCtx
.DbSetDossiers
.Where(x => x.IdxDossier == editRec.IdxDossier)
.FirstOrDefault();
if (currRec != null)
{
currRec.Valore = editRec.Valore;
dbCtx.Entry(currRec).State = EntityState.Modified;
}
else
{
dbCtx
.DbSetDossiers
.Add(editRec);
}
await dbCtx.SaveChangesAsync();
fatto = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante DossiersUpdateRecord{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Elenco valori link (x home e navMenu laterale)
///
///
public List ElencoLink()
{
return ListLinkFilt("SpecLink");
}
///
/// Aggiunta record EventList
///
///
///
public async Task EvListInsert(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 EvListInsert{Environment.NewLine}{exc}");
}
}
await Task.Delay(1);
return fatto;
}
///
/// Elenco ultimi n record flux log dato macchina e flusso (ordinato x data registrazione)
///
/// Data massima (recupera eventi antecedenti)
/// * = tutte, altrimenti solo x una data macchina
/// *=tutti, altrimenti solo selezionato
/// numero massimo record da restituire
///
public List FluxLogGetLastFilt(DateTime DtMax, string IdxMacchina, string CodFlux, int MaxRec)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetFluxLog
.AsNoTracking()
.Where(x => (x.dtEvento <= DtMax) && (IdxMacchina == "*" || x.IdxMacchina == IdxMacchina) && (CodFlux == "*" || x.CodFlux == CodFlux))
.OrderByDescending(x => x.dtEvento)
.Take(MaxRec)
.ToList();
}
return dbResult;
}
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 ODL filtrati x stato, articolo, KeyRich (che contiene stato)
///
/// Stato ODL: true=in corso/completato
/// Cod articolo
/// KeyRich (parziale) da cercare (es cod stato x yacht)
/// Data inizio
/// Data fine
///
public List ListODLFilt(bool inCorso, string codArt, string keyRichPart, string IdxMacchina, DateTime startDate, DateTime endDate)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetODL
.Where(x => ((inCorso && x.DataFine == null) || ((!inCorso && x.DataFine != null) && x.DataInizio >= startDate && x.DataInizio <= endDate)) && (x.KeyRichiesta.Contains(keyRichPart) || keyRichPart == "*") && (x.IdxMacchina.Contains(IdxMacchina) || IdxMacchina == "*") && (codArt == "*" || x.CodArticolo.Contains(codArt)))
.AsNoTracking()
.Include(m => m.MachineNav)
.Include(a => a.ArticoloNav)
.OrderByDescending(x => x.IdxOdl)
.ToList();
}
return dbResult;
}
///
/// Elenco PODL non avviati filtrati x articolo, KeyRich (che contiene stato)
///
/// Cod articolo
/// KeyRich (parziale) da cercare (es cod stato x yacht)
///
public List ListPODLFilt(string codArt, string keyRichPart)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetPODL
.Where(x => (x.IdxOdl == 0) && (x.KeyRichiesta.Contains(keyRichPart) || keyRichPart == "*") && (codArt == "*" || x.CodArticolo.Contains(codArt)))
.AsNoTracking()
.Include(m => m.MachineNav)
.Include(a => a.ArticoloNav)
.OrderByDescending(x => x.InsertDate)
.ToList();
}
return dbResult;
}
///
/// Elenco valori ammessi x tabella/colonna
///
///
///
///
public List ListValuesFilt(string tabName, string fieldName)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetListValues
.Where(x => x.TableName == tabName && x.FieldName == fieldName)
.AsNoTracking()
.OrderBy(x => x.ordinal)
.ToList();
}
return dbResult;
}
///
/// Elenco da tabella Macchine
///
///
public List MacchineGetAll()
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetMacchine
.AsNoTracking()
.OrderBy(x => x.IdxMacchina)
.ToList();
}
return dbResult;
}
///
/// Elenco id Macchine che abbiano dati FLuxLog, nel periodo indicato
///
///
///
///
public async Task> MacchineWithFlux(DateTime dtStart, DateTime dtEnd)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = await dbCtx
.DbSetFluxLog
.AsNoTracking()
.Where(x => x.dtEvento >= dtStart && x.dtEvento <= dtEnd)
.Select(i => i.IdxMacchina)
.Distinct()
.ToListAsync();
}
return dbResult;
}
///
/// Elenco da tabella MappaStatoExpl
///
///
public List MseGetAll(int maxAge = 2000)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
var maxAgeSec = new SqlParameter("@maxAgeSec", maxAge);
dbResult = dbCtx
.DbSetMSE
.FromSqlRaw("EXEC stp_MSE_getData @maxAgeSec", maxAgeSec)
.AsNoTracking()
.ToList();
}
return dbResult;
}
///
/// Chiusura ODL con eventuale conferma pezzi
///
/// idx odl da chiudere
/// idx macchina
/// matricola operatore
/// indica se confermare i pezzi prima di chiudere ODL
/// Conferma con rettifica (ev 121) x pezzi lasciati in macchina
/// Modo conferma produzione (0=periodo, 1=giorno, 2=turno)
///
public async Task ODLClose(int idxOdl, string idxMacchina, int matrOpr, bool confPezzi, bool confRett, int modoConfProd)
{
bool fatto = false;
if (idxOdl > 0)
{
using (var dbCtx = new MoonProContext(_configuration))
{
DateTime adesso = DateTime.Now;
// preparo i parametri
var IdxODL = new SqlParameter("@IdxODL", idxOdl);
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
// FARE FIXME TODO !!! da valutare casi setup/autoconferma...
#if false
// controllo se HO pezzi da confermare...
var statoProd = StatoProdMacchina(idxMacchina);
if (statoProd.pezziNonConfermati < 1)
{ }
#endif
// se richiesto confermo produzione
if (confPezzi)
{
var MatrApp = new SqlParameter("@MatrApp", idxMacchina);
/* ----------------------------------
* CONFERMA PEZZI
*
* condizioni da verificare:
* - gestione rettifica (ev121) / pezzi da LASCIARE in macchina
* - conferma a zero pezzi (setup) oppure con i pezzi fatti e non ancora confermati
*
*
*
* */
// recupero i dati dei pezzi da confermare... con DbSetPzProd + exec
// stp_PzProd_getByMacchina 'SIMUL_01'
// stp_ConfermaProduzCompletaFull
/*
* @idxMacchina NVARCHAR(50),
@MatrApp INT,
@dataFrom DATETIME,
@dataTo DATETIME,
@pezziConf INT,
@pezziLasciati INT, -- pezzi lasciati = evento 121 (-) pre conferma e (+) dopo --> da lasciare in macchina post conferma
@pezziScar INT = 0, -- pezzi scartati (registrati da 2016.11.20) DA INDICARE COME VALORE > 0!!! sennò faccio ABS...
@TipoConf INT = 0, -- Tipo intervallo conferma: 0 = periodo intero, 1 = per giorni, 2 = per turni
@DataOraApp DATETIME = NULL, -- di norma GETDATE() nel programma - serve per ricalcolo
@TestConferma BIT = 1 -- TestConferma : 1 = verifica conf. duplicata e inserisci in ElencoConfermeProd, 0 = nessuna verifica e inserimento ( per ricalcolo )
*/
}
// ora chiudo ODL
try
{
var dbResult = await dbCtx
.DbSetStatOdl
.FromSqlRaw("EXEC stp_ODL_fineProd @IdxODL, @IdxMacchina", IdxODL, IdxMacchina)
.AsNoTracking()
.ToListAsync();
}
catch (Exception exc)
{
Log.Error($"Eccezione durante ODLClose{Environment.NewLine}{exc}");
}
}
}
return fatto;
}
///
/// Recupero odl data chiave
///
///
///
///
public ODLModel OdlGetByKey(int idxOdl)
{
ODLModel dbResult = new ODLModel();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetODL
.FirstOrDefault(x => x.IdxOdl == idxOdl);
}
return dbResult;
}
///
/// Recupero Odl CORRENTI
///
///
public List OdlGetCurrent()
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetODL
.Where(x => x.DataInizio != null && x.DataFine == null)
.ToList();
}
return dbResult;
}
///
/// Statistiche ODL calcolate (da stored stp_STAT_ODL)
///
///
public async Task> OdlStart(int IdxOdl)
{
List dbResult = new List();
if (IdxOdl > 0)
{
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxODL = new SqlParameter("@IdxODL", IdxOdl);
dbResult = await dbCtx
.DbSetStatOdl
.FromSqlRaw("EXEC stp_STAT_ODL @IdxODL", IdxODL)
.AsNoTracking()
.ToListAsync();
}
}
return dbResult;
}
///
/// Elenco parametri validi x una data macchina
///
///
///
public List ParametriGetFilt(string IdxMacchina)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetFluxLog
.AsNoTracking()
.Where(x => (IdxMacchina == "*" || x.IdxMacchina == IdxMacchina))
.Take(1000)
.Select(i => i.CodFlux)
.Distinct()
.OrderBy(x => x)
.ToList();
}
return dbResult;
}
///
/// Recupero PODL da chiave
///
///
///
public async Task PODL_getByKey(int idxPODL)
{
PODLModel dbResult = new PODLModel();
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
dbResult = dbCtx
.DbSetPODL
.AsNoTracking()
.Where(x => x.IdxPromessa == idxPODL)
.FirstOrDefault();
}
catch (Exception exc)
{
Log.Error($"Eccezione durante PODL_getByKey{Environment.NewLine}{exc}");
}
}
await Task.Delay(1);
return dbResult;
}
///
/// Avvio setup ODL da PODL
///
///
///
///
///
///
///
public async Task PODL_startSetup(PODLModel editRec, int matrOpr, double tcRich, int pzPallet, string note)
{
bool answ = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var currRec = dbCtx
.DbSetPODL
.AsNoTracking()
.Where(x => x.IdxPromessa == editRec.IdxPromessa)
.FirstOrDefault();
if (currRec != null)
{
// eseguo stored attrezzaggio
var IdxPromessa = new SqlParameter("@idxPromessa", editRec.IdxPromessa);
var MatrOpr = new SqlParameter("@MatrOpr", matrOpr);
var IdxMacchina = new SqlParameter("@IdxMacchina", editRec.IdxMacchina);
var TCRichAttr = new SqlParameter("@TCRichAttr", tcRich);
var PzPallet = new SqlParameter("@PzPallet", pzPallet);
var Note = new SqlParameter("@Note", note);
var callResult = await dbCtx
.Database
.ExecuteSqlRawAsync("EXEC stp_ODL_inizioSetupPromessa @idxPromessa, @MatrOpr, @IdxMacchina, @TCRichAttr, @PzPallet, @Note", IdxPromessa, MatrOpr, IdxMacchina, TCRichAttr, PzPallet, Note);
answ = true;
}
}
catch (Exception exc)
{
Log.Error($"Eccezione durante PODL_doSetup{Environment.NewLine}{exc}");
}
}
await Task.Delay(1);
return answ;
}
///
/// Eliminazione Record
///
///
///
public async Task PODLDeleteRecord(PODLModel currRec)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var currVal = dbCtx
.DbSetPODL
.Where(x => x.IdxPromessa == currRec.IdxPromessa)
.FirstOrDefault();
dbCtx
.DbSetPODL
.Remove(currVal);
await dbCtx.SaveChangesAsync();
fatto = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante PODLDeleteRecord{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Update Record
///
///
///
public async Task PODLUpdateRecord(PODLModel editRec)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var currRec = dbCtx
.DbSetPODL
.Where(x => x.IdxPromessa == editRec.IdxPromessa)
.FirstOrDefault();
if (currRec != null)
{
currRec.CodGruppo = editRec.CodGruppo;
currRec.CodArticolo = editRec.CodArticolo;
currRec.IdxMacchina = editRec.IdxMacchina;
currRec.KeyBCode = editRec.KeyBCode;
currRec.KeyRichiesta = editRec.KeyRichiesta;
currRec.NumPezzi = editRec.NumPezzi;
currRec.Tcassegnato = editRec.Tcassegnato;
currRec.Attivabile = editRec.Attivabile;
currRec.Note = editRec.Note;
dbCtx.Entry(currRec).State = EntityState.Modified;
}
else
{
dbCtx
.DbSetPODL
.Add(editRec);
}
await dbCtx.SaveChangesAsync();
fatto = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante PODLUpdateRecord{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// 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;
}
///
/// Stato prod macchina
///
///
///
public StatoProdModel StatoProdMacchina(string idxMacchina)
{
StatoProdModel dbResult = new StatoProdModel();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
dbResult = dbCtx
.DbSetStatoProd
.FromSqlRaw("EXEC stp_PzProd_getByMacchina @IdxMacchina", IdxMacchina)
.AsNoTracking()
.FirstOrDefault();
}
return dbResult;
}
///
/// Elenco Vocabolario (completo)
///
///
public List VocabolarioGetAll()
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetVocabolario
.AsNoTracking()
.OrderBy(x => x.Lemma)
.ToList();
}
return dbResult;
}
#endregion Public Methods
#region Private Fields
private static IConfiguration _configuration;
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
#endregion Private Fields
}
}