using MagMan.Data.Admin.DbModels; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using NLog; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using static Microsoft.EntityFrameworkCore.DbLoggerCategory; namespace MagMan.Data.Admin.Controllers { public class MTAdminController : IDisposable { #region Public Constructors public MTAdminController(IConfiguration configuration) { _configuration = configuration; } #endregion Public Constructors #region Public Methods /// /// Elimina item AuthKey /// /// /// public bool AuthKeyDelete(AuthKeyModel updItem) { bool done = false; using (MultiTenantContext dbCtx = new MultiTenantContext()) { try { var currData = dbCtx .DbSetAuthKey .Where(x => x.AuthKeyID == updItem.AuthKeyID) .FirstOrDefault(); if (currData != null) { dbCtx .DbSetAuthKey .Remove(currData); dbCtx.SaveChanges(); done = true; } } catch (Exception exc) { Log.Error($"Eccezione in AuthKeyDelete{Environment.NewLine}{exc}"); } } return done; } /// /// Elenco AuthKey dato Customer /// /// 0 = tutti /// public List AuthKeyByCustId(int CustomerId) { List dbResult = new List(); using (MultiTenantContext dbCtx = new MultiTenantContext()) { dbResult = dbCtx .DbSetAuthKey .Where(x => CustomerId == 0 || x.CustomerID == CustomerId) .Include(c => c.CustomerNav) .OrderBy(x => x.KeyNum) .ToList(); } return dbResult; } /// /// Aggiunge/Modifica un item AuthKey /// /// /// public bool AuthKeyUpdate(AuthKeyModel updItem) { bool done = false; using (MultiTenantContext dbCtx = new MultiTenantContext()) { try { var currData = dbCtx .DbSetAuthKey .Where(x => x.AuthKeyID == updItem.AuthKeyID) .FirstOrDefault(); if (currData != null) { currData.KeyNum = updItem.KeyNum; currData.KeyValue = updItem.KeyValue; currData.Note = updItem.Note; currData.CustomerID = updItem.CustomerID; currData.IsActive = updItem.IsActive; currData.DtActivation = updItem.DtActivation; dbCtx.Entry(currData).State = EntityState.Modified; } else { dbCtx .DbSetAuthKey .Add(updItem); } dbCtx.SaveChanges(); done = true; } catch (Exception exc) { Log.Error($"Eccezione in AuthKeyUpdate{Environment.NewLine}{exc}"); } } return done; } /// /// Elimina item Customer /// /// /// public bool CustomerDelete(CustomerModel updItem) { bool done = false; using (MultiTenantContext dbCtx = new MultiTenantContext()) { try { var currData = dbCtx .DbSetCustomers .Where(x => x.CustomerID == updItem.CustomerID) .FirstOrDefault(); if (currData != null) { dbCtx .DbSetCustomers .Remove(currData); dbCtx.SaveChanges(); done = true; } } catch (Exception exc) { Log.Error($"Eccezione in CustomerDelete{Environment.NewLine}{exc}"); } } return done; } /// /// Elenco clienti /// /// public List CustomerGetAll() { List dbResult = new List(); using (MultiTenantContext dbCtx = new MultiTenantContext()) { dbResult = dbCtx .DbSetCustomers .Select(s => new CustomerModel { CustomerID = s.CustomerID, DtActivation = s.DtActivation, IsActive = s.IsActive, RestToken = s.RestToken, Name = s.Name, Note = s.Note, MainKey = s.MainKey, HasDb = s.HasDb, HasChildren = s.MachineNav.Any() }) .OrderBy(x => x.Name) .ToList(); } return dbResult; } /// /// Aggiunge/Modifica un item Customer /// /// /// public bool CustomerUpdate(CustomerModel updItem) { bool done = false; using (MultiTenantContext dbCtx = new MultiTenantContext()) { try { var currData = dbCtx .DbSetCustomers .Where(x => x.CustomerID == updItem.CustomerID) .FirstOrDefault(); if (currData != null) { currData.Name = updItem.Name; currData.Note = updItem.Note; currData.IsActive = updItem.IsActive; currData.DtActivation = updItem.DtActivation; currData.RestToken = updItem.RestToken; currData.MainKey = updItem.MainKey; currData.HasDb = updItem.HasDb; dbCtx.Entry(currData).State = EntityState.Modified; } else { dbCtx .DbSetCustomers .Add(updItem); } dbCtx.SaveChanges(); done = true; } catch (Exception exc) { Log.Error($"Eccezione in CustomerUpdate{Environment.NewLine}{exc}"); } } return done; } public void Dispose() { // Clear database context Log.Info("Dispose di MultiTenantController"); } /// /// Elimina item Machine /// /// /// public bool MachineDelete(MachineModel updItem) { bool done = false; using (MultiTenantContext dbCtx = new MultiTenantContext()) { try { var currData = dbCtx .DbSetMachines .Where(x => x.MachineID == updItem.MachineID) .FirstOrDefault(); if (currData != null) { dbCtx .DbSetMachines .Remove(currData); dbCtx.SaveChanges(); done = true; } } catch (Exception exc) { Log.Error($"Eccezione in MachineDelete{Environment.NewLine}{exc}"); } } return done; } /// /// Elenco Machine dato Customer /// /// 0 = tutti /// public List MachineGetByCustId(int CustomerId) { List dbResult = new List(); using (MultiTenantContext dbCtx = new MultiTenantContext()) { dbResult = dbCtx .DbSetMachines .Where(x => CustomerId == 0 || x.CustomerID == CustomerId) .OrderBy(x => x.Name) .ToList(); } return dbResult; } /// /// Aggiunge/Modifica un item Machine /// /// /// public bool MachineUpdate(MachineModel updItem) { bool done = false; using (MultiTenantContext dbCtx = new MultiTenantContext()) { try { var currData = dbCtx .DbSetMachines .Where(x => x.MachineID == updItem.MachineID) .FirstOrDefault(); if (currData != null) { currData.Name = updItem.Name; currData.Note = updItem.Note; currData.CustomerID = updItem.CustomerID; currData.IsActive = updItem.IsActive; currData.DtActivation = updItem.DtActivation; currData.MainKey = updItem.MainKey; dbCtx.Entry(currData).State = EntityState.Modified; } else { dbCtx .DbSetMachines .Add(updItem); } dbCtx.SaveChanges(); done = true; } catch (Exception exc) { Log.Error($"Eccezione in MachineUpdate{Environment.NewLine}{exc}"); } } return done; } #endregion Public Methods #region Private Fields private static IConfiguration _configuration = null!; private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); #endregion Private Fields } }