using MagMan.Data.Tenant.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; namespace MagMan.Data.Tenant.Controllers { public class TenantController : IDisposable { #region Public Constructors public TenantController() { } #endregion Public Constructors #region Public Methods public async Task DatabaseMigrate(string connString) { bool answ = false; using (MagManContext dbCtx = new MagManContext(connString)) { await dbCtx.Database.MigrateAsync(); answ = true; } return answ; } public void Dispose() { // Clear database context Log.Info("Dispose di TenantController"); } /// /// Elimina Item da magazzino /// /// Stringa connessione (variabile x cliente) /// Item da eliminare /// public bool ItemDelete(string connString, ItemModel rec2del) { bool done = false; using (MagManContext dbCtx = new MagManContext(connString)) { try { var currData = dbCtx .DbSetItems .Where(x => x.ItemID == rec2del.ItemID) .FirstOrDefault(); if (currData != null) { dbCtx .DbSetItems .Remove(currData); dbCtx.SaveChanges(); done = true; } } catch (Exception exc) { Log.Error($"Eccezione in ItemDelete{Environment.NewLine}{exc}"); } } return done; } /// /// Elenco Items gestiti a magazzino (all) /// /// Stringa connessione (variabile x cliente) /// public List ItemGetAll(string connString) { List dbResult = new List(); using (MagManContext dbCtx = new MagManContext(connString)) { dbResult = dbCtx .DbSetItems //.Where(x => CustomerId == 0 || x.CustomerID == CustomerId) .Include(c => c.MaterialNav) .OrderBy(x => x.MatID) .ToList(); } return dbResult; } /// /// Elenco Items gestiti a magazzino dato Materiale /// /// Stringa connessione (variabile x cliente) /// ID del materiale x cui filtrare, 0 = tutti /// public List ItemGetByMat(string connString, int matID) { List dbResult = new List(); using (MagManContext dbCtx = new MagManContext(connString)) { dbResult = dbCtx .DbSetItems .Where(x => matID == 0 || x.MatID == matID) .Include(c => c.MaterialNav) //.OrderBy(x => x.MatID) .OrderBy(x => x.WMm) .ThenBy(x => x.TMm) .ThenBy(x => x.LMm) .ToList(); } return dbResult; } /// /// Aggiunge/Modifica un item in magazzino /// /// Stringa connessione (variabile x cliente) /// Record da aggiungere/aggiornare /// public bool ItemUpdate(string connString, ItemModel rec2upd) { bool done = false; using (MagManContext dbCtx = new MagManContext(connString)) { try { var currData = dbCtx .DbSetItems .Where(x => x.ItemID == rec2upd.ItemID) .FirstOrDefault(); if (currData != null) { currData.MatID = rec2upd.MatID; currData.IsRemn = rec2upd.IsRemn; currData.Location = rec2upd.Location; currData.QtyAvail = rec2upd.QtyAvail; currData.Note = rec2upd.Note; currData.LMm = rec2upd.LMm; currData.TMm = rec2upd.TMm; currData.WMm = rec2upd.WMm; currData.DtMod = rec2upd.DtMod; dbCtx.Entry(currData).State = EntityState.Modified; } else { dbCtx .DbSetItems .Add(rec2upd); } dbCtx.SaveChanges(); done = true; } catch (Exception exc) { Log.Error($"Eccezione in ItemUpdate{Environment.NewLine}{exc}"); } } return done; } /// /// Elimina Materiale da magazzino /// /// Stringa connessione (variabile x cliente) /// Item da eliminare /// public bool MaterialDelete(string connString, MaterialModel rec2del) { bool done = false; using (MagManContext dbCtx = new MagManContext(connString)) { try { var currData = dbCtx .DbSetMaterials .Where(x => x.MatID == rec2del.MatID) .FirstOrDefault(); if (currData != null) { dbCtx .DbSetMaterials .Remove(currData); dbCtx.SaveChanges(); done = true; } } catch (Exception exc) { Log.Error($"Eccezione in MaterialDelete{Environment.NewLine}{exc}"); } } return done; } /// /// Elenco Materiali gestiti a magazzino /// /// Stringa connessione (variabile x cliente) /// public List MaterialGetAll(string connString, bool withChild) { List dbResult = new List(); using (MagManContext dbCtx = new MagManContext(connString)) { if (withChild) { dbResult = dbCtx .DbSetMaterials .Include(x => x.ItemNav) .OrderBy(x => x.MatDesc) .ThenBy(x => x.WMm) .ThenBy(x => x.TMm) .ThenBy(x => x.LMm) .ToList(); } else { dbResult = dbCtx .DbSetMaterials .OrderBy(x => x.MatDesc) .ThenBy(x => x.WMm) .ThenBy(x => x.TMm) .ThenBy(x => x.LMm) .ToList(); } } return dbResult; } /// /// Elenco Materiali gestiti a magazzino /// /// Stringa connessione (variabile x cliente) /// Materiale richiesto /// Se true allora include record child (Items) /// public List MaterialGetFilt(string connString, int matID, bool withChild) { List dbResult = new List(); using (MagManContext dbCtx = new MagManContext(connString)) { if (withChild) { dbResult = dbCtx .DbSetMaterials .Where(x=> x.MatID == matID) .Include(x => x.ItemNav) .OrderBy(x => x.MatDesc) .ThenBy(x => x.WMm) .ThenBy(x => x.TMm) .ThenBy(x => x.LMm) .ToList(); } else { dbResult = dbCtx .DbSetMaterials .Where(x => x.MatID == matID) .OrderBy(x => x.MatDesc) .ThenBy(x => x.WMm) .ThenBy(x => x.TMm) .ThenBy(x => x.LMm) .ToList(); } } return dbResult; } /// /// Aggiunge/Modifica un Materiale in magazzino /// /// Stringa connessione (variabile x cliente) /// Record da aggiungere/aggiornare /// public bool MaterialUpdate(string connString, MaterialModel rec2upd) { bool done = false; using (MagManContext dbCtx = new MagManContext(connString)) { try { var currData = dbCtx .DbSetMaterials .Where(x => x.MatID == rec2upd.MatID || x.MatExtCode == rec2upd.MatExtCode) .FirstOrDefault(); if (currData != null) { currData.MatExtCode = rec2upd.MatExtCode; currData.MatDesc = rec2upd.MatDesc; currData.ApprovDate = rec2upd.ApprovDate; currData.ApprovUser = rec2upd.ApprovUser; currData.LMm = rec2upd.LMm; currData.TMm = rec2upd.TMm; currData.WMm = rec2upd.WMm; dbCtx.Entry(currData).State = EntityState.Modified; } else { dbCtx .DbSetMaterials .Add(rec2upd); } dbCtx.SaveChanges(); done = true; } catch (Exception exc) { Log.Error($"Eccezione in MaterialUpdate{Environment.NewLine}{exc}"); } } return done; } #endregion Public Methods #region Private Fields private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); #endregion Private Fields } }