From 467010dc1382fbf084db75817e4f734b66fe8a55 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 29 Jan 2024 14:22:46 +0100 Subject: [PATCH] Aggiunto controller x Alias --- .../Controllers/AliasController.cs | 141 ++++++++++++++++++ .../Controllers/MagmanController.cs | 93 ++++++++++++ .../EgtBEAMWALL.DataLayer.csproj | 4 +- EgtBEAMWALL.DataLayer/packages.config | 2 +- 4 files changed, 238 insertions(+), 2 deletions(-) create mode 100644 EgtBEAMWALL.DataLayer/Controllers/AliasController.cs create mode 100644 EgtBEAMWALL.DataLayer/Controllers/MagmanController.cs diff --git a/EgtBEAMWALL.DataLayer/Controllers/AliasController.cs b/EgtBEAMWALL.DataLayer/Controllers/AliasController.cs new file mode 100644 index 00000000..f84ec9aa --- /dev/null +++ b/EgtBEAMWALL.DataLayer/Controllers/AliasController.cs @@ -0,0 +1,141 @@ +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 + } +} \ No newline at end of file diff --git a/EgtBEAMWALL.DataLayer/Controllers/MagmanController.cs b/EgtBEAMWALL.DataLayer/Controllers/MagmanController.cs new file mode 100644 index 00000000..1db68c5f --- /dev/null +++ b/EgtBEAMWALL.DataLayer/Controllers/MagmanController.cs @@ -0,0 +1,93 @@ +using EgtBEAMWALL.DataLayer.DatabaseModels; +using EgwProxy.MagMan; +using EgwProxy.MagMan.DTO; +using NLog; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace EgtBEAMWALL.DataLayer.Controllers +{ + /// + /// Gestione Sync MagMan (DB locale/online) + /// + public class MagmanController : IDisposable + { + #region Public Constructors + + private DataSyncro commLib = null; + + /// + /// Init controller gestione MagmanSync + /// + /// + /// + public MagmanController(string ServerAddress, string AuthToken) + { + commLib = new DataSyncro(ServerAddress, AuthToken); + bool servOk = commLib.CheckRemote(); + Log.Info($"Avviato MagmanController | server: {ServerAddress} | CheckRemote OK: {servOk}"); + } + + #endregion Public Constructors + + #region Public Methods + + /// + /// Esegue sync materiali: + /// - upload + sync (cloud) + /// - download + sync (locale) + /// + /// + public bool SyncMaterials() + { + bool answ = false; + // to be done + return answ; + } + + public void Dispose() + { + commLib = null; + } + + /// + /// Esegue sync delle giacenze RawItems: + /// + /// Se "" --> tutti, altrimenti limitatamente al MatCode cercato + /// + public bool SyncRawItems(string MatCode) + { + bool answ = false; + // to be done + return answ; + } + + + /// + /// Invia un set di consumi (stimati) per gli Item gestiti + /// + /// DbId del progetto da inviare + /// tipo di registrazione da inviare (stima, consumo, ...) + /// record da inviare, se consumo Qty deve essere negativa + /// + public bool SendResource(int idxProjDbId, ProjResState recType, List rec2send) + { + bool answ = false; + // to be done + return answ; + } + + + #endregion Public Methods + + #region Private Fields + + /// + /// Istanza logger + /// + private NLog.Logger Log = LogManager.GetCurrentClassLogger(); + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/EgtBEAMWALL.DataLayer/EgtBEAMWALL.DataLayer.csproj b/EgtBEAMWALL.DataLayer/EgtBEAMWALL.DataLayer.csproj index a307913a..020221d5 100644 --- a/EgtBEAMWALL.DataLayer/EgtBEAMWALL.DataLayer.csproj +++ b/EgtBEAMWALL.DataLayer/EgtBEAMWALL.DataLayer.csproj @@ -47,7 +47,7 @@ ..\ExtLibs\EgtWPFLib5.dll - ..\packages\EgwProxy.MagMan.0.9.2401.2909\lib\EgwProxy.MagMan.dll + ..\packages\EgwProxy.MagMan.1.0.2401.2912\lib\EgwProxy.MagMan.dll ..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.dll @@ -146,6 +146,8 @@ + + diff --git a/EgtBEAMWALL.DataLayer/packages.config b/EgtBEAMWALL.DataLayer/packages.config index c63caeaa..f7c4e2c2 100644 --- a/EgtBEAMWALL.DataLayer/packages.config +++ b/EgtBEAMWALL.DataLayer/packages.config @@ -2,7 +2,7 @@ - +