Files
egtbeamwall/EgtBEAMWALL.DataLayer/Controllers/AliasController.cs
T
2024-01-29 14:22:46 +01:00

141 lines
4.4 KiB
C#

using EgtBEAMWALL.DataLayer.DatabaseModels;
using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
namespace EgtBEAMWALL.DataLayer.Controllers
{
/// <summary>
/// Gestione Alias su DB (es: materiali da BTL e su DB)
/// </summary>
public class AliasController : IDisposable
{
#region Public Constructors
public AliasController()
{
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Delete by key
/// </summary>
/// <param name="Family"></param>
/// <param name="ValueOriginal"></param>
/// <returns></returns>
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()
{
}
/// <summary>
/// Get record by Key
/// </summary>
/// <param name="MatId"></param>
/// <returns></returns>
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();
}
}
/// <summary>
/// Elenco Alias x famiglia
/// </summary>
/// <param name="Family">se "" restituisce tutti</param>
/// <returns></returns>
public List<AliasModel> 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();
}
}
/// <summary>
/// Update or insert Alias record
/// </summary>
/// <param name="updItem"></param>
/// <returns></returns>
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
/// <summary>
/// Istanza logger
/// </summary>
private NLog.Logger Log = LogManager.GetCurrentClassLogger();
#endregion Private Fields
}
}