using EgwProxy.DataLayer.DbModel; using EgwProxy.MagMan.DTO; using NLog; using System; using System.Collections.Generic; using System.Collections.Concurrent; using System.Linq; using System.Text; using System.Threading.Tasks; using static System.Data.Entity.Infrastructure.Design.Executor; namespace EgwProxy.DataLayer.Controllers { public class LogMachineController : IDisposable { #region Public Constructors /// /// Init classe /// /// public LogMachineController() { } #endregion Public Constructors #region Public Methods /// /// Helper conversione a LogMachineDTO /// /// /// public static LogMachineDTO ConvToItemDto(LogMachineModel currRec) { LogMachineDTO answ = new LogMachineDTO() { DtEvent = currRec.DtEvent, EvType = (MagMan.MachLogTypes)currRec.EvType, ProjCloudId = currRec.ProjCloudId, SupervId = currRec.SupervId, VarValue = currRec.VarValue }; return answ; } public void Dispose() { } /// /// Recupero i dati in ordine crescente fino al num max indicato /// /// /// public List GetUnsentAsc(int numMax) { using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING)) { // retrieve return localDbCtx .DbSetLogMac .Where(x => (x.DtSent == null || x.DtSent < x.DtEvent) && x.ProjCloudId > 0) .OrderBy(x => x.DtEvent) .Take(numMax) .ToList(); } } /// /// Aggiorna i record indicati inserendo dataora corrente x DtSent /// /// /// public bool SetDtSent(List rec2upd) { bool done = false; using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING)) { DateTime adesso = DateTime.Now; foreach (var item in rec2upd) { var currRec = localDbCtx .DbSetLogMac .Where(x => (x.DtSent == null || x.DtSent < new DateTime(2000, 1, 1)) && x.LogDbId == item.LogDbId) .FirstOrDefault(); if (currRec != null) { currRec.DtSent = adesso; } // indico modificato localDbCtx.Entry(currRec).State = System.Data.Entity.EntityState.Modified; } // Salvataggio finale localDbCtx.SaveChanges(); } return done; } /// /// Cerca di sistemare gli ID di Prod e ProjCloud mancanti /// /// public bool TryFixProjCloudId() { // init vars bool fatto = false; List> listBatch = new List>(); // vado sul DB using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING)) { // retrieve var list2proc = localDbCtx .DbSetLogMac .Where(x => x.ProjCloudId == 0 && ((int)x.EvType == 1 || (int)x.EvType == 2)) .OrderBy(x => x.DtEvent) .ToList(); // se ci sono... if (list2proc != null && list2proc.Count > 0) { // chiamo stored... localDbCtx.Database.ExecuteSqlCommand("call stp_LogMachineFixPid"); } } // risultato return fatto; } #endregion Public Methods #region Private Fields /// /// Istanza logger /// private NLog.Logger Log = LogManager.GetCurrentClassLogger(); #endregion Private Fields } }