using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using NLog; using System; using System.Collections.Generic; using System.Linq; 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 /// /// 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 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 da tabella Macchine /// /// public List ConfigGetAll() { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { dbResult = dbCtx .DbSetConfig .AsNoTracking() .OrderBy(x => x.Chiave) .ToList(); } return dbResult; } public void Dispose() { } /// /// 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 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; } /// /// 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; } #endregion Public Methods #region Private Fields private static IConfiguration _configuration; private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); #endregion Private Fields } }