using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using MP.Data.DatabaseModels;
using MP.Data.Objects;
using NLog;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using static MP.Data.Objects.Enums;
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
///
/// Elenco allarmi macchina
///
/// Macchina
/// Inizio periodo
/// Fine periodo
///
///
public List AlarmLogListFilt(string idxMacchina, DateTime dtFrom, DateTime dtTo, bool showMulti)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var DtFrom = new SqlParameter("@dtFrom", dtFrom);
var DtTo = new SqlParameter("@dtTo", dtTo);
var ShowMulti = new SqlParameter("@showMulti", showMulti);
dbResult = dbCtx
.DbSetAlarmLog
.FromSqlRaw("EXEC stp_AL_getFilt @IdxMacchina, @dtFrom, @DtTo, @showMulti", IdxMacc, DtFrom, DtTo, ShowMulti)
.AsNoTracking()
.ToList();
}
return dbResult;
}
///
/// Registrato ACK allarme
///
/// Id Allarme
/// Data Ack
/// User Ack
///
public bool AlarmLogSetAck(int alarmLogId, DateTime dtAck, string userAck)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var AlarmLogId = new SqlParameter("@AlarmLogId", alarmLogId);
var DtAck = new SqlParameter("@DtAck", dtAck);
var UserAck = new SqlParameter("@UserAck", userAck);
var result = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_AL_setAck @AlarmLogId, @DtAck, @UserAck", AlarmLogId, DtAck, UserAck);
fatto = result != 0;
}
return fatto;
}
///
/// Registrato invio notifica allarme
///
/// Id Allarme
/// Data notifica
///
public bool AlarmLogSetNotify(int alarmLogId, DateTime dtNotify)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var AlarmLogId = new SqlParameter("@AlarmLogId", alarmLogId);
var DtNotify = new SqlParameter("@DtNotify", dtNotify);
var result = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_AL_setNotify @AlarmLogId, @DtNotify", AlarmLogId, DtNotify);
fatto = result != 0;
}
return fatto;
}
///
/// Restituisce l'anagrafica EVENTI per intero
///
///
public List AnagEventiGetAll()
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetAnagEventi
.AsNoTracking()
.ToList();
}
return dbResult;
}
///
/// Restituisce l'anagrafica EVENTI per intero
///
///
public List AnagEventiGetByMacc(string IdxMac)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacch = new SqlParameter("@idxMacchina", IdxMac);
dbResult = dbCtx
.DbSetVSEB
.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;
}
///
/// Restituisce l'anagrafica EVENTI per intero
///
///
public List AnagTagsOrd()
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetAnagTags
.FromSqlRaw("exec dbo.stp_AT_getOrd")
.AsNoTracking()
.AsEnumerable()
.ToList();
}
return dbResult;
}
///
/// Verifica se sia necessario inserire un cambio di stato impianto in modalità batch
///
///
///
///
///
///
///
///
///
public void CheckCambiaStatoBatch(tipoInputEvento tipoInput, string IdxMacchina, DateTime InizioStato, int IdxTipo, string CodArt, string Value, int MatrOpr, string pallet)
{
List tabTransStati = new List();
TransizioneStatiModel rigaTransStati = new TransizioneStatiModel();
switch (tipoInput)
{
case tipoInputEvento.barcode:
// effettuo cambio stato INDIPENDENTEMENTE da stato precedente
try
{
tabTransStati = SMES_getUserForced(IdxMacchina, IdxTipo);
if (tabTransStati != null)
{
if (tabTransStati.Count > 0)
{
rigaTransStati = tabTransStati.FirstOrDefault();
// solo se cambia stato...
if (rigaTransStati.IdxStato != rigaTransStati.next_IdxStato)
{
DDB_InsStatoBatch(IdxMacchina, InizioStato, rigaTransStati.next_IdxStato, CodArt, Value, MatrOpr, pallet);
// aggiorno MSE
RicalcMse(IdxMacchina, 0);
}
}
else
{
Log.Debug($"Non trovata riga per: BARCODE | IdxMacchina: {IdxMacchina} | IdxTipo: {IdxTipo} | CodArt: {CodArt} | Value: {Value} | MatrOpr: {MatrOpr} | pallet: {pallet}");
}
}
}
catch (Exception exc)
{
// non dovrebbe succedere... input utente da barcode dovrebbero TUTTI essere
// inseriti in tab transizione con famiglia 1...
Log.Error($"Eccezione controllo transizione stato x evento barcode: BARCODE | IdxMacchina: {IdxMacchina} | IdxTipo: {IdxTipo} | CodArt: {CodArt} | Value: {Value} | MatrOpr: {MatrOpr} | pallet: {pallet}{Environment.NewLine}{exc}");
}
break;
case tipoInputEvento.hw:
// verifico se ci sia necessità di cambio stato
try
{
tabTransStati = SMES_getHwTransitions(IdxMacchina, IdxTipo);
if (tabTransStati != null)
{
if (tabTransStati.Count > 0)
{
//rigaTransStati = tabTransStati[0];
rigaTransStati = tabTransStati.FirstOrDefault();
if (rigaTransStati != null)
{
// solo se cambia stato...
if (rigaTransStati.IdxStato != rigaTransStati.next_IdxStato)
{
DDB_InsStatoBatch(IdxMacchina, InizioStato, rigaTransStati.next_IdxStato, CodArt, Value, MatrOpr, pallet);
}
}
}
else
{
Log.Debug($"Non trovata riga per: HW | IdxMacchina: {IdxMacchina} | IdxTipo: {IdxTipo} | CodArt: {CodArt} | Value: {Value} | MatrOpr: {MatrOpr} | pallet: {pallet}");
}
}
}
catch (Exception exc)
{
// non trovo riga [0]... NON scrivo!
Log.Error($"Errore controllo transizione stato x evento barcode: HW | IdxMacchina: {IdxMacchina} | IdxTipo: {IdxTipo} | CodArt: {CodArt} | Value: {Value} | MatrOpr: {MatrOpr} | pallet: {pallet}{Environment.NewLine}{exc}");
}
break;
}
}
///
/// Recupera elenco ultimi commenti x macchina
///
/// Idx macchina, "*" = tutte
/// Num massimo di record da recuperare
///
public List CommentiGetLastByMacc(string idxMacchina, int numDays)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var NumDays = new SqlParameter("@NumDays", numDays);
dbResult = dbCtx
.DbSetCommenti
.FromSqlRaw("exec dbo.stp_Comm_getLastByMacchinaDays @IdxMacchina, @numDays", IdxMacchina, NumDays)
.AsNoTracking()
//.AsEnumerable()
.ToList();
}
return dbResult;
}
///
/// 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 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;
}
///
/// 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;
}
///
/// Inserimento record in DDB
///
///
///
///
///
///
///
///
public bool DDB_DoRecalc(string idxMacchina, DateTime inizio, int idxStatoStart, int nStepEventi, int nRecCheck, bool checkOnly)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var Inizio = new SqlParameter("@inizio", inizio);
var IdxStatoStart = new SqlParameter("@idxStatoStart", idxStatoStart);
var NStepEventi = new SqlParameter("@nStepEventi", nStepEventi);
var NRecCheck = new SqlParameter("@nRecCheck", nRecCheck);
var CheckOnly = new SqlParameter("@CheckOnly", checkOnly);
var result = dbCtx
.Database
.ExecuteSqlRaw("exec man.stp_ricalcolaDatiMacchinaFromDateFork @IdxMacchina, @inizio, @idxStatoStart, @nStepEventi, @nRecCheck, @CheckOnly", IdxMacchina, Inizio, IdxStatoStart, NStepEventi, NRecCheck, CheckOnly);
// indico eseguito!
fatto = result != 0;
}
return fatto;
}
///
/// Recupera record successivo da DDB
///
///
///
///
public DiarioDiBordoModel DDB_getNext(string idxMacchina, DateTime inizioStato)
{
DiarioDiBordoModel dbResult = new DiarioDiBordoModel();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var DataRif = new SqlParameter("@dataRif", inizioStato);
dbResult = dbCtx
.DbSetDDB
.FromSqlRaw("exec dbo.stp_DDB_getNextByMacchinaFrom @IdxMacchina, @dataRif", IdxMacchina, DataRif)
.AsNoTracking()
.AsEnumerable()
.FirstOrDefault();
}
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;
}
public void Dispose()
{
_configuration = null;
}
///
/// Fix ODL per Elenco Lotti
///
///
///
///
public bool ElencoLottiUpsertByOdl(int idxOdl, bool flgStorico)
{
bool fatto = false;
using (var dbCtx = new MoonPro_MagContext(_configuration))
{
try
{
var IdxOdl = new SqlParameter("@IdxOdl", idxOdl);
var FlgStorico = new SqlParameter("@flgStorico", flgStorico);
var result = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_EL_UpsertByOdl @IdxODL, @flgStorico", IdxOdl, FlgStorico);
fatto = result != 0;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante ElLottiUpsertByOdl{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Elenco operatori
///
///
public List ElencoOperatori()
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbOperatori
.Where(s => s.MatrOpr > 0)
.AsNoTracking()
.OrderBy(x => x.MatrOpr)
.ToList();
}
return dbResult;
}
//stp_DDB_getNextByMacchinaFrom
///
/// Eliminazione record EventList (SE trovato)
///
///
///
///
///
public bool EvListDelete(string idxMacchina, DateTime dtEvento, int idxTipo)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var InizioStato = new SqlParameter("@InizioStato", dtEvento);
var IdxTipo = new SqlParameter("@IdxTipo", idxTipo);
try
{
var result = dbCtx
.Database
.ExecuteSqlRaw("exec dbo.stp_EL_Delete @IdxMacchina, @InizioStato, @IdxTipo", IdxMacchina, InizioStato, IdxTipo);
// indico eseguito!
fatto = result > 0;
}
catch (Exception exc)
{
string logMsg = $"Eccezione in stp_EL_Delete | macchina: {idxMacchina} | DataEv: {dtEvento} | idxTipo: {idxTipo}{Environment.NewLine}{exc}";
Log.Error(logMsg);
}
}
return fatto;
}
///
/// Recupera record EventList date condizioni filtro
///
/// Idx macchina, "*" = tutte
/// Data limite per recupero antecedenti
/// Tipo evento cercato, 0 = tutti
/// Num massimo di record da recuperare
///
public async Task> EvListGetLastBySearch(string idxMacchina, DateTime dtLimit, int idxTipo, int maxRec)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = await dbCtx
.DbSetEvList
.Where(x => (idxMacchina == "*" || x.IdxMacchina == idxMacchina)
&& (x.InizioStato <= dtLimit)
&& (idxTipo == 0 || x.IdxTipo == idxTipo))
.OrderByDescending(x => x.InizioStato)
.Take(maxRec)
.ToListAsync();
}
return dbResult;
}
///
/// 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;
}
///
/// Recupera elenco fermi non qualificati da filtro
///
/// Idx macchina, "*" = tutte
/// Num massimo di giorni antecedenti
/// Durata minima (in minuti)
///
public List FermiNonQualificatiFilt(string idxMacchina, int gg, double durataMin)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var GG = new SqlParameter("@gg", gg);
var DurataMin = new SqlParameter("@durataMin", durataMin);
dbResult = dbCtx
.DbSetFNQ
.FromSqlRaw("exec dbo.stp_FNQ_getFilt @IdxMacchina, @gg, @durataMin", IdxMacchina, GG, DurataMin)
.AsNoTracking()
.AsEnumerable()
.ToList();
}
return dbResult;
}
///
/// Elenco PODL macchina
///
/// Macchina
/// Solo disponibili (1) o tutte (0)
/// Gruppo
///
public List ListPODLByMacc(string idxMacchina, bool onlyFree, bool onlyDirect)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var OnlyFree = new SqlParameter("@onlyFree", onlyFree);
var OnlyDirect = new SqlParameter("@onlyDirect", onlyDirect);
dbResult = dbCtx
.DbSetPODLExp
.FromSqlRaw("EXEC stp_PODL_getByIdxMacc @IdxMacchina, @onlyFree, @onlyDirect", IdxMacc, OnlyFree, OnlyDirect)
.AsNoTracking()
.ToList();
}
return dbResult;
}
///
/// Imposto abilitazione insert eventi macchina (x fermare/avviare dati da IOB)
///
/// Idx macchina, "*" = tutte
/// Abilitazione insert ev macchina
///
public bool MacchinaSetInsEnab(string idxMacchina, bool insEnabled)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@idxMacchina", idxMacchina);
var InsEnabled = new SqlParameter("@insEnabled", insEnabled);
var result = dbCtx
.Database
.ExecuteSqlRaw("exec dbo.stp_STM_setInsEnabled @idxMacchina, @insEnabled", IdxMacchina, InsEnabled);
// indico eseguito!
fatto = result > 0;
}
return fatto;
}
///
/// 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;
}
///
/// 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;
}
//stp_STM_setInsEnabled
///
/// 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;
}
///
/// Dati MSE x singola macchina SUB (tipicamente TAV)
///
///
///
///
public List MseGetSub(string idxMacc, string idxMacchSub)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacc);
var IdxMacchSub = new SqlParameter("@IdxMacchSub", idxMacchSub);
dbResult = dbCtx
.DbSetMSE
.FromSqlRaw("EXEC stp_MSE_getByIdxMacchAndSub @IdxMacchina, @IdxMacchSub", IdxMacc, IdxMacchSub)
.AsNoTracking()
.ToList();
}
catch (Exception exc)
{
Log.Error($"Eccezione durante MseGetSub{Environment.NewLine}{exc}");
}
}
return dbResult;
}
///
/// ODL da key
///
///
///
///
public List OdlByIdx(int idxOdl, bool onlyUnused)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxOdl = new SqlParameter("@IdxOdl", idxOdl);
var OnlyUnused = new SqlParameter("@onlyUnused", onlyUnused);
dbResult = dbCtx
.DbSetODLExp
.FromSqlRaw("EXEC stp_ODL_getByIdx @IdxOdl, @onlyUnused", IdxOdl, OnlyUnused)
.AsNoTracking()
.ToList();
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlByIdx{Environment.NewLine}{exc}");
}
}
return dbResult;
}
///
/// Clear operazione setup ODL (annullamento)
///
///
///
///
public bool OdlClearSetup(int idxODL, string idxMacchina)
{
bool answ = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxODL = new SqlParameter("@idxODL", idxODL);
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var result = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_ODL_clearSetup @IdxODL, @IdxMacchina", IdxODL, IdxMacchina);
answ = result != 0;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlClearSetup{Environment.NewLine}{exc}");
}
}
return answ;
}
///
/// ODL corrente macchina
///
///
///
public List OdlCurrByMacc(string idxMacchina)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
dbResult = dbCtx
.DbSetODLExp
.FromSqlRaw("EXEC stp_ODL_getByMacchina @IdxMacchina", IdxMacchina)
.AsNoTracking()
.ToList();
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlCurrByMacc{Environment.NewLine}{exc}");
}
}
return dbResult;
}
///
/// Attrezzo stesso ODL dell'altra tavola
///
///
///
///
///
public bool OdlDividiDaAltraTavola(int idxODL, int matrOpr, string idxMacchinaTo)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxODL = new SqlParameter("@idxODL", idxODL);
var MatrOpr = new SqlParameter("@MatrOpr", matrOpr);
var IdxMaccTo = new SqlParameter("@IdxMacchinaTo", idxMacchinaTo);
var result = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_ODL_dividiDaAltraTav @idxODL, @MatrOpr, @IdxMacchinaTo", IdxODL, MatrOpr, IdxMaccTo);
fatto = result != 0;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlDividiDaAltraTavola{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Registro fine prod ODL
///
///
///
///
public bool OdlFineProd(int idxODL, string idxMacchina)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxODL = new SqlParameter("@IdxODL", idxODL);
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var result = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_ODL_fineProd @IdxODL, @IdxMacchina", IdxODL, IdxMacc);
fatto = result != 0;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlFineProd{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;
}
///
/// Setup PODL Postumo
///
///
///
///
///
///
///
///
public bool OdlInizioSetup(int idxODL, int matrOpr, string idxMacchina, decimal tcRich, int pzPallet, string note)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxODL = new SqlParameter("@idxPromessa", idxODL);
var MatrOpr = new SqlParameter("@MatrOpr", matrOpr);
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var TCRichAttr = new SqlParameter("@TCRichAttr", tcRich);
var PzPallet = new SqlParameter("@PzPallet", pzPallet);
var Note = new SqlParameter("@Note", note);
var result = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_ODL_inizioSetup @idxODL, @MatrOpr, @IdxMacchina, @TCRichAttr, @PzPallet, @Note", IdxODL, MatrOpr, IdxMacc, TCRichAttr, PzPallet, Note);
fatto = result != 0;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlInizioSetup{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Ultimo ODL data macchina
///
///
///
public List OdlLastByMacc(string idxMacchina)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
dbResult = dbCtx
.DbSetODL
.FromSqlRaw("EXEC stp_ODL_getLastByMacchina @IdxMacchina", IdxMacchina)
.AsNoTracking()
.ToList();
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlLastByMacc{Environment.NewLine}{exc}");
}
}
return dbResult;
}
///
/// 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
.DbSetODL
.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;
}
///
/// Riapertura ULTIMO ODL data macchina
///
///
///
public List OdlReopenOdlMacc(string idxMacchina)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
dbResult = dbCtx
.DbSetODL
.FromSqlRaw("EXEC stp_ODL_reopenOdlMacc @IdxMacchina", IdxMacchina)
.AsNoTracking()
.ToList();
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlReopenOdlMacc{Environment.NewLine}{exc}");
}
}
return dbResult;
}
///
/// Setup ODL Postumo
///
///
///
///
public bool OdlSetupPostumo(int idxODL, string idxMacchina)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxODL = new SqlParameter("@idxODL", idxODL);
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var result = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_ODL_insPostumo @idxODL, @IdxMacchina", IdxODL, IdxMacc);
fatto = result != 0;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlSetupPostumo{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Setup PODL Postumo
///
///
///
///
///
public bool OdlSetupPromPostuma(int idxPromOdl, int matrOpr, string idxMacchina)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxPODL = new SqlParameter("@idxPromessa", idxPromOdl);
var MatrOpr = new SqlParameter("@MatrOpr", matrOpr);
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var result = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_ODL_inizioSetupPromessaPostuma @idxPromessa, @MatrOpr, @IdxMacchina", IdxPODL, MatrOpr, IdxMacc);
fatto = result != 0;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlSetupPromPostuma{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Split ODL
///
///
///
///
///
///
///
///
///
///
public bool OdlSplit(int idxODL, int matrOpr, string idxMacchina, decimal TCRich, int pzPallet, string note, bool startNewOdl, int qtyRich)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxODL = new SqlParameter("@idxODL", idxODL);
var MatrOpr = new SqlParameter("@MatrOpr", matrOpr);
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var TCRichAttr = 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 result = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_ODL_split @idxODL, @MatrOpr, @IdxMacchina, @TCRichAttr, @PzPallet, @Note, @StartNewOdl, @QtyRich", IdxODL, MatrOpr, IdxMacc, TCRichAttr, PzPallet, Note, StartNewOdl, QtyRich);
fatto = result != 0;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlSplit{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Update ODL (es: in setup x chiusura attrezzaggio)
///
///
///
///
///
///
///
public bool OdlUpdate(int idxODL, int matrOpr, decimal tCRichAttr, int pzPallet, string note)
{
bool answ = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxODL = new SqlParameter("@idxODL", idxODL);
var MatrOpr = new SqlParameter("@MatrOpr", matrOpr);
var TCRichAttr = new SqlParameter("@TCRichAttr", tCRichAttr);
var PzPallet = new SqlParameter("@PzPallet", pzPallet);
var Note = new SqlParameter("@Note", note);
var result = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_ODL_updateSetup @IdxODL, @MatrOpr, @TCRichAttr, @PzPallet, @Note", IdxODL, MatrOpr, TCRichAttr, PzPallet, Note);
answ = result != 0;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlUpdate{Environment.NewLine}{exc}");
}
}
return answ;
}
///
/// login operatori
///
/// ///
///
/// ///
///
///
public AnagOperatoriModel OperatoreSearch(int matrOpr, string authKey)
{
AnagOperatoriModel dbResult = null;
AnagOperatoriModel answ = new AnagOperatoriModel();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbOperatori
.Where(s => (s.MatrOpr > 0) && (s.MatrOpr == matrOpr) && (s.authKey == authKey))
.AsNoTracking()
.FirstOrDefault();
if (dbResult != null)
{
answ = dbResult;
}
}
return answ;
}
///
/// Stato prod macchina
///
///
///
public List PezziProdMacchina(string idxMacchina)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
try
{
dbResult = dbCtx
.DbSetPzProd
.FromSqlRaw("EXEC stp_PzProd_getByMacchina @IdxMacchina", IdxMacchina)
.AsNoTracking()
.ToList();
}
catch
{ }
}
return dbResult;
}
///
/// Avvio setup ODL da PODL
///
///
///
///
///
///
///
///
public bool PODL_startSetup(PODLExpModel editRec, int matrOpr, decimal tcRich, int pzPallet, string note, DateTime dtEvent)
{
bool answ = false;
PODLModel recPODL = new PODLModel()
{
IdxPromessa = editRec.IdxPromessa,
KeyRichiesta = editRec.KeyRichiesta,
KeyBCode = editRec.KeyBCode,
IdxOdl = editRec.IdxOdl,
CodArticolo = editRec.CodArticolo,
CodGruppo = editRec.CodGruppo,
IdxMacchina = editRec.IdxMacchina,
NumPezzi = editRec.NumPezzi,
Tcassegnato = editRec.Tcassegnato,
DueDate = editRec.DueDate,
Priorita = editRec.Priorita,
PzPallet = editRec.PzPallet,
Note = editRec.Note,
CodCli = editRec.CodCli,
InsertDate = editRec.InsertDate
};
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var currRec = dbCtx
.DbSetPODL
.AsNoTracking()
.Where(x => x.IdxPromessa == recPODL.IdxPromessa)
.FirstOrDefault();
if (currRec != null)
{
// eseguo stored attrezzaggio
var IdxPromessa = new SqlParameter("@idxPromessa", recPODL.IdxPromessa);
var MatrOpr = new SqlParameter("@MatrOpr", matrOpr);
var IdxMacchina = new SqlParameter("@IdxMacchina", recPODL.IdxMacchina);
var TCRichAttr = new SqlParameter("@TCRichAttr", tcRich);
var PzPallet = new SqlParameter("@PzPallet", pzPallet);
var Note = new SqlParameter("@Note", note);
var DtEvento = new SqlParameter("@dtEvento", dtEvent);
var callResult = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_ODL_inizioSetupPromessa @idxPromessa, @MatrOpr, @IdxMacchina, @TCRichAttr, @PzPallet, @Note, @dtEvento", IdxPromessa, MatrOpr, IdxMacchina, TCRichAttr, PzPallet, Note, DtEvento);
answ = true;
}
}
catch (Exception exc)
{
Log.Error($"Eccezione durante PODL_doSetup{Environment.NewLine}{exc}");
}
}
return answ;
}
///
/// Recupero PODL da chiave
///
///
///
public PODLExpModel PODLExp_getByKey(int idxPODL)
{
PODLExpModel dbResult = new PODLExpModel();
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxPromessa = new SqlParameter("@IdxPromessa", idxPODL);
var rawResult = dbCtx
.DbSetPODLExp
.FromSqlRaw("EXEC stp_PODL_getByIdx @IdxPromessa", IdxPromessa)
.AsNoTracking()
.ToList();
if (rawResult != null && rawResult.Count > 0)
{
dbResult = rawResult.FirstOrDefault();
}
}
catch (Exception exc)
{
Log.Error($"Eccezione durante PODL_getByKey{Environment.NewLine}{exc}");
}
}
return dbResult;
}
///
/// Restituisce elenco RC filtrato
///
///
///
///
///
///
public List RegControlliFilt(string idxMacchina, int idxODL, DateTime dataFrom, DateTime dataTo, bool showMulti)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var IdxODL = new SqlParameter("@IdxODL", idxODL);
var DataFrom = new SqlParameter("@DataFrom", dataFrom);
var DataTo = new SqlParameter("@DataTo", dataTo);
var ShowMulti = new SqlParameter("@showMulti", showMulti);
dbResult = dbCtx
.DbSetRegControlli
.FromSqlRaw("EXEC stp_RC_getByFilt @IdxMacchina, @IdxODL, @DataFrom, @DataTo, @ShowMulti", IdxMacc, IdxODL, DataFrom, DataTo, ShowMulti)
.AsNoTracking()
.ToList();
}
return dbResult;
}
///
/// Registra controllo
///
///
///
///
///
///
///
public bool 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 = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_RC_insert @IdxMacchina, @MatrOpr, @EsitoOk, @Note, @DataOra", IdxMacc, MatrOpr, EsitoOk, Note, DataOra);
fatto = result != 0;
}
return fatto;
}
/// Restituisce elenco Ultimi RC macchina
///
public List RegControlliLast(string idxMacchina)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
dbResult = dbCtx
.DbSetRegControlli
.FromSqlRaw("EXEC stp_RC_getLast @IdxMacchina", IdxMacc)
.AsNoTracking()
.ToList();
}
return dbResult;
}
///
/// Aggiunta record RegistroScarti
///
///
///
///
///
///
///
public List RegDichiarGetFilt(string idxMacchina, string tagCode, int matrOpr, int idxODL, DateTime dataFrom, DateTime dataTo)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
var TagCode = new SqlParameter("@TagCode", tagCode);
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var MatrOpr = new SqlParameter("@MatrOpr", matrOpr);
var IdxODL = new SqlParameter("@IdxODL", idxODL);
var DtFrom = new SqlParameter("@DataFrom", dataFrom);
var DtTo = new SqlParameter("@DataTo", dataTo);
dbResult = dbCtx
.DbSetRegDich
.FromSqlRaw("EXEC stp_DD_getFilt @TagCode, @IdxMacchina, @MatrOpr, @IdxODL, @DataFrom, @DataTo", TagCode, IdxMacchina, MatrOpr, IdxODL, DtFrom, DtTo)
.AsNoTracking()
.ToList();
}
return dbResult;
}
///
/// 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 List RegScartiGetFilt(string idxMacchina, int idxODL, DateTime dataFrom, DateTime dataTo, bool showMulti)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var IdxODL = new SqlParameter("@IdxODL", idxODL);
var DataFrom = new SqlParameter("@DataFrom", dataFrom);
var DataTo = new SqlParameter("@DataTo", dataTo);
var ShowMulti = new SqlParameter("@showMulti", showMulti);
dbResult = dbCtx
.DbSetRegScarti
.FromSqlRaw("EXEC .stp_RS_getByFilt @IdxMacchina, @IdxODL, @DataFrom, @DataTo, @ShowMulti", IdxMacc, IdxODL, DataFrom, DataTo, ShowMulti)
.AsNoTracking()
.ToList();
}
return dbResult;
}
///
/// Aggiunta record RegistroScarti
///
///
///
public bool 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 = dbCtx
.DbSetRegWithCheck
.FromSqlRaw("exec dbo.stp_RS_Insert_withCheck @idxMacchina, @DataOra, @Causale, @Qta, @Note, @MatrOpr", IdxMacchina, DataOra, Causale, Qta, Note, MatrOpr)
.AsNoTracking()
.ToList();
// indico eseguito!
// -1 = restituisce una select
fatto = result.Count > 0;
}
return fatto;
}
///
/// Elimina scarti KIT dato record parent (e lo resetta)
///
///
///
public bool RegScartiKitDelete(RegistroScartiModel parentRec)
{
bool answ = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacc = new SqlParameter("@IdxMacchina", parentRec.IdxMacchina);
var DtRif = new SqlParameter("@DataOra", parentRec.DataOra);
var Causale = new SqlParameter("@Causale", parentRec.Causale);
var dbResult = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_RSK_Delete @IdxMacchina, @DataOra, @Causale", IdxMacc, DtRif, Causale);
answ = dbResult != 0;
}
return answ;
}
///
/// Aggiorna un record scarti KIT ( SE ESISTE...)
///
///
///
public bool RegScartiKitUpdateQty(RegistroScartiKitModel currRec)
{
bool answ = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacc = new SqlParameter("@IdxMacchina", currRec.IdxMacchina);
var DtRif = new SqlParameter("@DataOra", currRec.DataOra);
var Causale = new SqlParameter("@Causale", currRec.Causale);
var CodArticolo = new SqlParameter("@CodArticolo", currRec.CodArticolo);
var Qty = new SqlParameter("@Qty", currRec.Qta);
var dbResult = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_RSK_UpdateQty @IdxMacchina, @DataOra, @Causale, @CodArticolo, @Qty", IdxMacc, DtRif, Causale, CodArticolo, Qty);
answ = dbResult != 0;
}
return answ;
}
///
/// Elenco scarti KIT dato record parent
///
///
///
public List RegScartiKitGetFilt(RegistroScartiModel parentRec)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacc = new SqlParameter("@IdxMacchina", parentRec.IdxMacchina);
var DtRif = new SqlParameter("@DataRif", parentRec.DataOra);
var Causale = new SqlParameter("@Causale", parentRec.Causale);
dbResult = dbCtx
.DbSetRegScartiKit
.FromSqlRaw("EXEC stp_RSK_getByFilt @IdxMacchina, @DataRif, @Causale", IdxMacc, DtRif, Causale)
.AsNoTracking()
.ToList();
}
return dbResult;
}
///
/// Aggiunta record RegistroScartiKit in tab RSK esplodendo x kit
///
///
///
public async Task RegScartiKitSplit(RegistroScartiModel newRec)
{
await Task.Delay(1);
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 CodArt = new SqlParameter("@CodArticolo", newRec.CodArticolo);
var Qta = new SqlParameter("@QtyKit", newRec.Qta);
var result = dbCtx
.DbSetRegWithCheck
.FromSqlRaw("exec dbo.stp_RSK_Split @idxMacchina, @DataOra, @Causale, @CodArticolo, @QtyKit", IdxMacchina, DataOra, Causale, CodArt, Qta)
.AsNoTracking()
.ToList();
// indico eseguito!
fatto = result.Count != 0;
}
return fatto;
}
///
/// 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;
}
public bool SetDerogaSt(StCheckOverride deroga)
{
bool fatto = false;
#if false
try
{
string keyDerogaST = memLayer.ML.redHash($"DerogaSt:{user_std.UtSn.utente}:{deroga.IdxST:000}");
string rawData = JsonConvert.SerializeObject(deroga);
memLayer.ML.setRSV(keyDerogaST, rawData, 60 * 2);
fatto = true;
}
catch
{ }
#endif
return fatto;
}
///
/// Intera tabella state machine eventi 2 stati
///
///
public List SMES_GetAll()
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetSMES
.AsNoTracking()
.ToList();
}
return dbResult;
}
///
/// Tabella state machine eventi 2 stati data famiglia
///
///
public List SMES_GetByFam(int idxFam)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetSMES
.Where(x => x.IdxFamiglia == idxFam)
.AsNoTracking()
.ToList();
}
return dbResult;
}
///
/// 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;
}
///
/// Restituisce elenco gruppi Scheda tecnica
///
///
public List ST_AnagGruppiList()
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetStAnagGruppi
.OrderBy(x => x.OrdVisual)
.AsNoTracking()
.ToList();
}
return dbResult;
}
public bool ST_CheckCleanByOdl(int idxOdl)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxOdl = new SqlParameter("@IdxOdl", idxOdl);
var result = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_ST_CHK_cleanByOdl @IdxOdl", IdxOdl);
fatto = result != 0;
}
return fatto;
}
public bool ST_CheckUpsert(int idxOdl, int idxST, int oggetto, int num, string valueRead, string extCode, bool checkOk, string userMod, bool forced)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxOdl = new SqlParameter("@IdxOdl", idxOdl);
var IdxST = new SqlParameter("@IdxST", idxST);
var Oggetto = new SqlParameter("@Oggetto", oggetto);
var Num = new SqlParameter("@Num", num);
var ValueRead = new SqlParameter("@ValueRead", valueRead);
var ExtCode = new SqlParameter("@ExtCode", extCode);
var CheckOk = new SqlParameter("@CheckOk", checkOk);
var UserMod = new SqlParameter("@UserMod", userMod);
var Forced = new SqlParameter("@Forced", forced);
var result = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_ST_CHK_upsert @IdxOdl, @IdxST, @Oggetto, @Num, @ValueRead, @ExtCode, @CheckOk, @UserMod, @Forced", IdxOdl, IdxST, Oggetto, Num, ValueRead, ExtCode, CheckOk, UserMod, Forced);
fatto = result != 0;
}
return fatto;
}
///
/// 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;
}
///
/// Recupero Righe pending da ODL
///
///
///
public List STAR_pendByOdl(int idxODL)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxODL = new SqlParameter("@IdxODL", idxODL);
dbResult = dbCtx
.DbSetStActRow
.FromSqlRaw("exec dbo.stp_ST_AR_getPendingOdl @IdxODL", IdxODL)
.AsNoTracking()
//.AsEnumerable()
.ToList();
}
return dbResult;
}
///
/// Intera tabella state machine ingressi 2 eventi data famiglia
///
///
///
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;
}
///
/// 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;
}
///
/// 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;
}
///
/// Elenco turni macchina (all)
///
///
///
public TurniMaccModel TurnoMacchinaGet(string idxMacchina)
{
TurniMaccModel dbResult = new TurniMaccModel();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
dbResult = dbCtx
.DbSetTurniMacc
.FromSqlRaw("exec dbo.stp_turniMacchineByIdxMacc @IdxMacchina", IdxMacchina)
.AsNoTracking()
.AsEnumerable()
.FirstOrDefault();
}
return dbResult;
}
///
/// Elenco turni macchina (all)
///
///
public List TurnoMacchinaGetAll()
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetTurniMacc
.AsNoTracking()
.ToList();
}
return dbResult;
}
///
/// Toggle turno macchina (da numero)
///
///
///
///
public bool TurnoMacchinaToggle(string idxMacchina, int numTurno)
{
bool answ = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var NumTurno = new SqlParameter("@numTurno", numTurno);
var result = dbCtx
.Database
.ExecuteSqlRaw("exec dbo.stp_turniMacchineUpdateTurno @IdxMacchina, @numTurno", IdxMacchina, NumTurno);
// indico eseguito!
answ = result > 0;
}
return answ;
}
///
/// 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;
}
///
/// Elenco causali scarto
///
///
public List VSCS_getAll()
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetVSCS
.AsNoTracking()
.ToList();
}
return dbResult;
}
///
/// Elenco ultimi ODL x macchina
///
/// Macchina
///
///
public List VSOdlGetLastByMacc(string idxMacchina, int numRec)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var NumRec = new SqlParameter("@numRec", numRec);
dbResult = dbCtx
.DbSetVSODL
.FromSqlRaw("EXEC stp_vsODL_getLastByMacc @IdxMacchina, @numRec", IdxMacc, NumRec)
.AsNoTracking()
.ToList();
}
return dbResult;
}
///
/// Elenco prossimi ODL/PODL x macchina
///
/// Macchina
///
///
///
public List VSOdlGetUnused(string idxMacchina, bool showAll, int numDayAdd)
{
List dbResult = new List();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var ShowAll = new SqlParameter("@showAll", showAll);
var NumDayAdd = new SqlParameter("@numDayAdd", numDayAdd);
dbResult = dbCtx
.DbSetVSODL
.FromSqlRaw("EXEC stp_vsODL_getUnused @IdxMacchina, @showAll, @numDayAdd", IdxMacc, ShowAll, NumDayAdd)
.AsNoTracking()
.ToList();
}
return dbResult;
}
#endregion Public Methods
#region Private Fields
private static IConfiguration _configuration;
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
#endregion Private Fields
}
}