using GPW.CORE.Data.DbModels; using Microsoft.Extensions.Configuration; using NLog; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GPW.CORE.Data.Controllers { public class AppAuthController : IDisposable { #region Public Constructors public AppAuthController(IConfiguration configuration) { _configuration = configuration; dbCtx = new AppAuthContext(configuration); Log.Info("Avviata classe AppAuthController"); } #endregion Public Constructors #region Public Methods public void Dispose() { // Clear database context dbCtx.Dispose(); } /// /// Elenco lingue ammesse /// /// public List LingueGetAll() { List dbResult = new List(); using (AppAuthContext localDbCtx = new AppAuthContext(_configuration)) { dbResult = localDbCtx .DbSetLingue .ToList(); } return dbResult; } /// /// Elenco completo permessi2funzione /// /// public List Permessi2FunzioneGetAll() { List dbResult = new List(); using (AppAuthContext dbCtx = new AppAuthContext(_configuration)) { dbResult = dbCtx .DbSetPermessi2Funzione .ToList(); } return dbResult; } /// /// Elenco permessi2funzione filtrato x elenco funzioni /// /// public List Permessi2FunzioneGetFilt(List FunList) { List dbResult = new List(); using (AppAuthContext dbCtx = new AppAuthContext(_configuration)) { dbResult = dbCtx .DbSetPermessi2Funzione .Where(x => FunList.Contains(x.CodFunzione)) .ToList(); } return dbResult; } /// /// Elenco completo permessi /// /// public List PermessiGetAll() { List dbResult = new List(); using (AppAuthContext dbCtx = new AppAuthContext(_configuration)) { dbResult = dbCtx .DbSetPermessi .ToList(); } return dbResult; } /// /// Elenco permessi dato elenco funzioni /// /// /// public List PermessiGetByFunc(List ListCodFun) { // converto a lower l'elenco... ListCodFun = ListCodFun.Select(x => x.ToLower()).ToList(); List dbResult = new List(); using (AppAuthContext dbCtx = new AppAuthContext(_configuration)) { var listPer = PermessiGetAll(); var listP2F_all = Permessi2FunzioneGetAll(); //var listP2F = Permessi2FunzioneGetFilt(ListCodFun); var listP2F = listP2F_all .Where(x => ListCodFun.Contains(x.CodFunzione.ToLower())) .Distinct() .ToList(); var query = from permesso in listPer join p2f in listP2F on permesso.CodPermesso equals p2f.CodPermesso select permesso; dbResult = query.Distinct().ToList(); } return dbResult; } public void ResetController() { dbCtx = new AppAuthContext(_configuration); Log.Info("Effettuato reset AppAuthController"); } /// /// Annulla modifiche su una specifica entity (cancel update) /// /// /// public bool RollBackEntity(object item) { bool answ = false; 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; } /// /// Vocabolario (completo) /// /// public List VocabolarioGetAll() { List dbResult = new List(); using (AppAuthContext localDbCtx = new AppAuthContext(_configuration)) { dbResult = localDbCtx .DbSetVocabolario .ToList(); } return dbResult; } #endregion Public Methods #region Private Fields private static Logger Log = LogManager.GetCurrentClassLogger(); #endregion Private Fields #region Private Properties private static IConfiguration _configuration { get; set; } = null!; private static AppAuthContext dbCtx { get; set; } = null!; #endregion Private Properties } }