using EgtBEAMWALL.DataLayer.DatabaseModels; using NLog; using System; using System.Collections.Generic; using System.Linq; namespace EgtBEAMWALL.DataLayer.Controllers { /// /// Gestione Alias su DB (es: materiali da BTL e su DB) /// public class AliasController : IDisposable { #region Public Constructors public AliasController() { } #endregion Public Constructors #region Public Methods /// /// Delete by key /// /// /// /// public bool DeleteByKey(string Family, string ValueOriginal) { bool done = false; using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING)) { var items2del = localDbCtx .AliasList .Where(x => x.Family == Family && x.ValueOriginal == ValueOriginal); try { // Add to database localDbCtx.AliasList.RemoveRange(items2del); // Commit changes localDbCtx.SaveChanges(); done = true; } catch (Exception exc) { Log.Error($"EXCEPTION on Alias.DeleteByKey: {Environment.NewLine}{exc}"); } } return done; } public void Dispose() { } /// /// Get record by Key /// /// /// public AliasModel FindByDbId(string Family, string ValueOriginal) { using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING)) { return localDbCtx .AliasList .Where(x => x.Family == Family && x.ValueOriginal == ValueOriginal) .SingleOrDefault(); } } /// /// Elenco Alias x famiglia /// /// se "" restituisce tutti /// public List GetFilt(string Family) { // retrieve using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING)) { return localDbCtx .AliasList .Where(x => x.Family == Family) .OrderBy(x => x.ValueOriginal) .ToList(); } } /// /// Update or insert Alias record /// /// /// public bool Upsert(AliasModel updItem) { bool fatto = false; using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING)) { try { var item2update = localDbCtx .AliasList .Where(x => x.Family == updItem.Family && x.ValueOriginal == updItem.ValueOriginal) .SingleOrDefault(); if (item2update != null) { // update, vers 1... localDbCtx.Entry(item2update).CurrentValues.SetValues(updItem); // Commit changes localDbCtx.SaveChanges(); fatto = true; } else { localDbCtx.AliasList.Add(updItem); } } catch (Exception exc) { Log.Error($"EXCEPTION on Alias.Upsert: {Environment.NewLine}{exc}"); } } return fatto; } #endregion Public Methods #region Private Fields /// /// Istanza logger /// private NLog.Logger Log = LogManager.GetCurrentClassLogger(); #endregion Private Fields } }