using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; using MP.Data.DbModels; using System.Collections.Generic; using System.Data; using System.Linq; using System.Threading.Tasks; namespace MP.Data.Repository.MpMon { public class MpMonRepository : IMpMonRepository { #region Private Fields private readonly IDbContextFactory _ctxFactory; #endregion #region Public Constructors public MpMonRepository(IDbContextFactory ctxFactory) { _ctxFactory = ctxFactory; } #endregion #region Public Methods /// public async Task> ConfigGetAllAsync() { await using var dbCtx = await _ctxFactory.CreateDbContextAsync(); return await dbCtx .DbSetConfig .AsNoTracking() .OrderBy(x => x.Chiave) .ToListAsync() ?? new(); } /// public async Task> MacchineGetAllAsync() { await using var dbCtx = await _ctxFactory.CreateDbContextAsync(); return await dbCtx .DbSetMacchine .AsNoTracking() .OrderBy(x => x.IdxMacchina) .ToListAsync() ?? new(); } /// public async Task> MacchineGetFiltAsync(string codGruppo) { await using var dbCtx = await _ctxFactory.CreateDbContextAsync(); List dbResult; if (codGruppo == "*") { dbResult = await dbCtx .DbSetMacchine .AsNoTracking() .OrderBy(x => x.IdxMacchina) .ToListAsync(); } else { dbResult = await dbCtx .DbSetGrp2Macc .Where(g => g.CodGruppo == codGruppo) .Join(dbCtx.DbSetMacchine, g => g.IdxMacchina, m => m.IdxMacchina, (g, m) => m ) .AsNoTracking() .OrderBy(x => x.IdxMacchina) .ToListAsync(); } dbResult = dbResult .Where(x => !string.IsNullOrEmpty(x.locazione)) .OrderBy(x => x.locazione).ToList(); return dbResult; } /// public async Task> MseGetAllAsync(int maxAge = 2000) { await using var dbCtx = await _ctxFactory.CreateDbContextAsync(); var maxAgeSec = new SqlParameter("@maxAgeSec", maxAge); var dbResult = await dbCtx .DbSetMSE .FromSqlRaw("EXEC stp_MSE_getData @maxAgeSec", maxAgeSec) .AsNoTracking() .ToListAsync(); return dbResult; } #endregion } }