using Microsoft.EntityFrameworkCore; using MP.Data.DbModels; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace MP.Data.Repository.MpVoc { public class MpVocRepository : IMpVocRepository { #region Public Constructors public MpVocRepository(IDbContextFactory ctxFactory) { _ctxFactory = ctxFactory; } #endregion Public Constructors #region Public Methods #if false /// public async Task> ConfigGetAllAsync() { await using var dbCtx = await _ctxFactory.CreateDbContextAsync(); return await dbCtx .DbSetConfig .AsNoTracking() .OrderBy(x => x.Chiave) .ToListAsync() ?? new(); } #endif /// public async Task> LingueGetAllAsync() { await using var dbCtx = await _ctxFactory.CreateDbContextAsync(); return await dbCtx .DbSetLilngue .AsNoTracking() .OrderBy(x => x.Lingua) .ToListAsync() ?? new(); } /// public async Task> VocabolarioGetAllAsync() { await using var dbCtx = await _ctxFactory.CreateDbContextAsync(); return await dbCtx .DbSetVocabolario .AsNoTracking() .OrderBy(x => x.Lemma) .ToListAsync() ?? new(); } /// public Dictionary VocabolarioGetLang(string lingua) { using var dbCtx = _ctxFactory.CreateDbContextAsync().GetAwaiter().GetResult(); var rawList = dbCtx .DbSetVocabolario .AsNoTracking() .Where(x => x.Lingua.ToLower() == lingua.ToLower()) .OrderBy(x => x.Lemma) .ToList(); // Proietto in dizionario return rawList .DistinctBy(t => t.Lemma, StringComparer.OrdinalIgnoreCase) .ToDictionary(t => t.Lemma, t => t.Traduzione, StringComparer.OrdinalIgnoreCase); } #endregion Public Methods #region Private Fields private readonly IDbContextFactory _ctxFactory; #endregion Private Fields } }