using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using NLog;
using StockMan.Data.DbModels;
namespace StockMan.Data.Controllers
{
public class StoManController : IDisposable
{
#region Public Constructors
public StoManController(IConfiguration configuration)
{
_configuration = configuration;
Log.Info("Avviata classe StoManController");
}
#endregion Public Constructors
#region Public Methods
///
/// Conferma movimenti
///
///
///
public async Task ConfermaMov(int itemID)
{
bool answ = false;
using (var dbCtx = new StockManContext(_configuration))
{
var ItemID = new SqlParameter("@ItemID", itemID);
var callResult = await dbCtx
.Database
.ExecuteSqlRawAsync("exec dbo.stp_ItemConsolidate @ItemID", ItemID);
answ = true;
}
return answ;
}
///
/// Lista Contatori
///
///
public List CountersGetAll()
{
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
dbResult = localDbCtx
.DbSetCountersList
.OrderBy(x => x.Id)
.ToList();
}
return dbResult;
}
///
/// Flux Delete
///
///
public async Task DeleteFlux(ItemFluxModel currRec)
{
bool fatto = false;
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
try
{
var dbResult = localDbCtx
.DbSetItemFlux
.Where(x => x.Id == currRec.Id)
.FirstOrDefault();
if (dbResult != null)
{
localDbCtx
.DbSetItemFlux
.Remove(dbResult);
await localDbCtx.SaveChangesAsync();
fatto = true;
}
}
catch (Exception exc)
{
Log.Error($"Eccezione durante DeleteFlux{Environment.NewLine}{exc}");
}
}
return fatto;
}
public void Dispose()
{
GC.Collect();
}
///
/// Elimina movimenti duplicati
///
///
///
public async Task EliminaDup(int itemID)
{
bool answ = false;
using (var dbCtx = new StockManContext(_configuration))
{
var ItemID = new SqlParameter("@ItemID", itemID);
var callResult = await dbCtx
.Database
.ExecuteSqlRawAsync("exec dbo.stp_ItemShrinkHist @ItemID", ItemID);
answ = true;
}
return answ;
}
///
/// aggiunta item
///
///
public async Task FluxAdd(ItemFluxModel newRec)
{
bool fatto = false;
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
try
{
var currRec = localDbCtx
.DbSetItemFlux
.Where(x => x.Id == newRec.Id)
.FirstOrDefault();
if (currRec != null)
{
fatto = false;
}
else
{
localDbCtx
.DbSetItemFlux
.Add(newRec);
}
await localDbCtx.SaveChangesAsync();
fatto = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante FluxAdd{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Modifica flux
///
///
public async Task FluxMod(ItemFluxModel editRec)
{
bool fatto = false;
//List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
try
{
var currRec = localDbCtx
.DbSetItemFlux
.Where(x => x.Id == editRec.Id)
.FirstOrDefault();
if (currRec != null)
{
currRec.ItemId = editRec.ItemId;
currRec.LocationId = editRec.LocationId;
currRec.MovTypeId = editRec.MovTypeId;
currRec.ExtLocationId = editRec.ExtLocationId;
currRec.DtMov = editRec.DtMov;
currRec.Qta = editRec.Qta;
currRec.TotValue = editRec.TotValue;
currRec.OperatorId = "ND";
currRec.Note = editRec.Note;
currRec.CodDoc = editRec.CodDoc;
currRec.ModOperatorId = "ND";
localDbCtx.Entry(currRec).State = EntityState.Modified;
}
else
{
localDbCtx
.DbSetItemFlux
.Add(editRec);
}
await localDbCtx.SaveChangesAsync();
fatto = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante FluxMod;{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// aggiunta item
///
///
public async Task ItemAdd(ItemModel newRec)
{
bool fatto = false;
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
try
{
var currRec = localDbCtx
.DbSetItem
.Where(x => x.Id == newRec.Id)
.FirstOrDefault();
if (currRec != null)
{
fatto = false;
}
else
{
localDbCtx
.DbSetItem
.Add(newRec);
}
await localDbCtx.SaveChangesAsync();
fatto = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante ItemAdd{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Aggiunta famiglia di item
///
///
public async Task ItemFamilyAdd(ItemFamilyModel newRec)
{
bool fatto = false;
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
try
{
var currRec = localDbCtx
.DbSetItemFamily
.Where(x => x.Id == newRec.Id)
.FirstOrDefault();
if (currRec != null)
{
fatto = false;
}
else
{
localDbCtx
.DbSetItemFamily
.Add(newRec);
}
await localDbCtx.SaveChangesAsync();
fatto = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante ItemFamilyAdd{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Lista Items
///
///
public async Task ItemFamilyDeleteByID(ItemFamilyModel currRec)
{
bool fatto = false;
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
try
{
var dbResult = localDbCtx
.DbSetItemFamily
.Where(x => x.Id == currRec.Id)
.FirstOrDefault();
if (dbResult != null)
{
localDbCtx
.DbSetItemFamily
.Remove(dbResult);
await localDbCtx.SaveChangesAsync();
fatto = true;
}
}
catch (Exception exc)
{
Log.Error($"Eccezione durante ItemFamilyDeleteByID{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Lista Famiglie Articoli
///
///
public List ItemFamilyGetAll()
{
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
dbResult = localDbCtx
.DbSetItemFamily
.OrderBy(x => x.Descr)
.ToList();
}
return dbResult;
}
///
/// Lista Famiglie Articoli da ricerca
///
///
public List ItemFamilyGetSearch(string searchVal)
{
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
dbResult = localDbCtx
.DbSetItemFamily
.Where(x => x.Descr.Contains(searchVal))
.OrderBy(x => x.Descr)
.ToList();
}
return dbResult;
}
///
/// Modifica famiglia articoli
///
///
public async Task ItemFamilyMod(ItemFamilyModel editRec)
{
bool fatto = false;
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
try
{
var currRec = localDbCtx
.DbSetItemFamily
.Where(x => x.Id == editRec.Id)
.FirstOrDefault();
if (currRec != null)
{
currRec.Descr = editRec.Descr;
}
else
{
localDbCtx
.DbSetItemFamily
.Add(editRec);
}
await localDbCtx.SaveChangesAsync();
fatto = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante ItemFamilyMod{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Lista Flux x item
///
///
public List ItemFluxGetById(int id)
{
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
dbResult = localDbCtx
.DbSetItemFlux
.Include(l => l.Location)
.Include(e => e.ExtLocation)
.Where(x => x.ItemId == id)
.OrderByDescending(x => x.Id)
.ToList();
}
return dbResult;
}
///
/// Modifica item,
///
///
public async Task ItemMod(ItemModel editRec)
{
bool fatto = false;
//List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
try
{
var currRec = localDbCtx
.DbSetItem
.Where(x => x.Id == editRec.Id)
.FirstOrDefault();
if (currRec != null)
{
currRec.Descr = editRec.Descr;
currRec.CodInt = editRec.CodInt;
currRec.ItemFamilyId = editRec.ItemFamilyId;
currRec.CodExt = editRec.CodExt;
currRec.DescrExt = editRec.DescrExt;
currRec.QtaMin = editRec.QtaMin;
currRec.QtaBatch = editRec.QtaBatch;
currRec.CurrValue = editRec.CurrValue;
currRec.QtaCurr = editRec.QtaCurr;
currRec.QtaPend = editRec.QtaPend;
currRec.Um = editRec.Um;
localDbCtx.Entry(currRec).State = EntityState.Modified;
}
else
{
localDbCtx
.DbSetItem
.Add(editRec);
}
await localDbCtx.SaveChangesAsync();
fatto = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante ItemMod{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Lista Items
///
///
public List ItemsGetAll()
{
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
dbResult = localDbCtx
.DbSetItem
.OrderBy(x => x.Descr)
.ToList();
}
return dbResult;
}
///
/// Lista Items da ricerca
///
///
public List ItemsGetByID(int id)
{
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
var risultato = localDbCtx
.DbSetItem
.Where(x => ((x.Id == id)))
.ToList();
if (risultato != null)
{
dbResult = risultato;
}
}
return dbResult;
}
///
/// Lista Items da ricerca
///
///
public List ItemsGetByLocation(string locationSel)
{
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
dbResult = localDbCtx
.DbSetItemStock
.Where(x => x.LocationId == locationSel)
.Include(l => l.ItemNav)
.ToList();
}
return dbResult;
}
/////
///// Lista Items da ricerca
/////
/////
//public List ItemsGetSearch(string searchVal, string famID)
//{
// List dbResult = new List();
// using (StockManContext localDbCtx = new StockManContext(_configuration))
// {
// dbResult = localDbCtx
// .DbSetItem
// .Where(x => (x.ItemFamilyId == famID || string.IsNullOrEmpty(famID)) && (x.CodExt.Contains(searchVal) || x.Descr.Contains(searchVal) || x.DescrExt.Contains(searchVal) || string.IsNullOrEmpty(searchVal)))
// .OrderBy(x => x.Descr)
// .ToList();
// }
// return dbResult;
//}
///
/// Lista Items da ricerca
///
///
public List ItemsGetSearch(string searchVal, string itemFamId)
{
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
if (!string.IsNullOrEmpty(searchVal) && itemFamId == "*")
{
var risultato = localDbCtx
.DbSetItem
.Where(x => ((x.Id.ToString() == searchVal)) || (x.CodInt.Contains(searchVal)) || (x.CodExt.Contains(searchVal)) || (x.Descr.Contains(searchVal) || (x.CurrValue.ToString().Contains(searchVal))))
.ToList();
if (risultato != null)
{
dbResult = risultato;
}
}
else if (itemFamId != "*" && string.IsNullOrEmpty(searchVal))
{
var risultato = localDbCtx
.DbSetItem
.Where(x => ((x.ItemFamilyId == itemFamId)))
.ToList();
if (risultato != null)
{
dbResult = risultato;
}
}
else if (itemFamId != "*" && !string.IsNullOrEmpty(searchVal))
{
var risultato = localDbCtx
.DbSetItem
.Where(x => ((x.ItemFamilyId == itemFamId) && ((x.CodInt.Contains(searchVal)) || (x.CodExt.Contains(searchVal)) || (x.Descr.Contains(searchVal) || (x.CurrValue.ToString().Contains(searchVal))))))
.ToList();
if (risultato != null)
{
dbResult = risultato;
}
}
else
{
dbResult = localDbCtx
.DbSetItem
.OrderBy(x => x.Id)
.ToList();
}
}
return dbResult;
}
///
/// Lista Item Stock (ALL!)
///
///
public List ItemsStockGetAll()
{
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
dbResult = localDbCtx
.DbSetItemStock
.OrderBy(x => x.Id)
.ToList();
}
return dbResult;
}
///
/// Lista Item Stock (By ID)
///
///
///
public List ItemsStockGetById(int ItemID)
{
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
dbResult = localDbCtx
.DbSetItemStock
.Where(x => x.ItemId == ItemID)
.OrderBy(x => x.Id)
.ToList();
}
return dbResult;
}
///
/// Aggiungi Locazione
///
///
public async Task LocationAddNew(LocationModel editRec)
{
bool fatto = false;
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
try
{
var currRec = localDbCtx
.DbSetLocation
.Where(x => x.Id == editRec.Id)
.FirstOrDefault();
if (currRec != null)
{
fatto = false;
}
else
{
localDbCtx
.DbSetLocation
.Add(editRec);
}
await localDbCtx.SaveChangesAsync();
fatto = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante LocationAddNew{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Lista Locazioni
///
///
public List LocationGetAll()
{
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
dbResult = localDbCtx
.DbSetLocation
.OrderBy(x => x.Descr)
.ToList();
}
return dbResult;
}
///
/// Lista Locazioni join con tabella location type
///
///
public List LocationGetLocType()
{
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
dbResult = localDbCtx
.DbSetLocation
.Include(l => l.LocTypeNav)
.Where(x => x.LocTypeNav.IsStock)
.OrderBy(x => x.Id)
.ToList();
}
return dbResult;
}
///
/// Modifica Locazione
///
///
public async Task LocationMod(LocationModel editRec)
{
bool fatto = false;
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
try
{
var currRec = localDbCtx
.DbSetLocation
.Where(x => x.Id == editRec.Id)
.FirstOrDefault();
if (currRec != null)
{
currRec.Descr = editRec.Descr;
currRec.LocTypeId = editRec.LocTypeId;
}
else
{
localDbCtx
.DbSetLocation
.Add(editRec);
}
await localDbCtx.SaveChangesAsync();
fatto = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante LocationMod{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Lista Tipi Locazioni
///
///
public List LocTypeGetAll()
{
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
dbResult = localDbCtx
.DbSetLocType
.OrderBy(x => x.Descr)
.ToList();
}
return dbResult;
}
///
/// Muove gli items nei vari scaffali
///
///
public async Task MoveItems(int stockId, string locationIdFrom, string locationIdTo, string oprId)
{
bool answ = false;
using (var dbCtx = new StockManContext(_configuration))
{
var StockId = new SqlParameter("@StockID", stockId);
var LocationIdFrom = new SqlParameter("@LocationID_FROM", locationIdFrom);
var LocationIdTo = new SqlParameter("@LocationID_TO", locationIdTo);
var OprId = new SqlParameter("@OperatorID", oprId);
var callResult = await dbCtx
.Database
.ExecuteSqlRawAsync("exec dbo.stp_ItemStockMove @StockID, @LocationID_FROM, @LocationID_TO, @OperatorID", StockId, LocationIdFrom, LocationIdTo, OprId);
answ = true;
}
return answ;
}
///
/// Muove gli items nei vari scaffali
///
///
public async Task MoveItems_New(int stockId, string locationIdFrom, string locationIdTo, string oprId, int qtyMov)
{
bool answ = false;
using (var dbCtx = new StockManContext(_configuration))
{
var StockId = new SqlParameter("@StockID", stockId);
var LocationIdFrom = new SqlParameter("@LocationID_FROM", locationIdFrom);
var LocationIdTo = new SqlParameter("@LocationID_TO", locationIdTo);
var OprId = new SqlParameter("@OperatorID", oprId);
var QtyMov = new SqlParameter("@QtyMov", qtyMov);
var callResult = await dbCtx
.Database
.ExecuteSqlRawAsync("exec stp_ItemStockMove_New @StockID, @LocationID_FROM, @LocationID_TO, @OperatorID, @QtyMov", StockId, LocationIdFrom, LocationIdTo, OprId, QtyMov);
answ = true;
}
return answ;
}
///
/// Lista Tipi Movimenti
///
///
public List MovTypeGetAll()
{
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
dbResult = localDbCtx
.DbSetMovType
.OrderBy(x => x.Descr)
.ToList();
}
return dbResult;
}
//}
///
/// Aggiungi Operatore
///
///
public async Task OperatorAddNew(OperatorModel editRec)
{
bool fatto = false;
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
try
{
var currRec = localDbCtx
.DbSetOperator
.Where(x => x.CodExt == editRec.CodExt)
.FirstOrDefault();
if (currRec != null)
{
fatto = false;
}
else
{
localDbCtx
.DbSetOperator
.Add(editRec);
}
await localDbCtx.SaveChangesAsync();
fatto = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OperatorMod{Environment.NewLine}{exc}");
}
}
return fatto;
}
/////
///// Modifica Famiglie Articoli
/////
/////
//public List ItemFamilyMod()
//{
// List dbResult = new List();
// using (StockManContext localDbCtx = new StockManContext(_configuration))
// {
// dbResult = localDbCtx
// .DbSetItemFamily
// .OrderBy(x => x.Descr)
// .ToList();
// }
// return dbResult;
///
/// Modifica Operatore
///
///
public async Task OperatorMod(OperatorModel editRec)
{
bool fatto = false;
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
try
{
var currRec = localDbCtx
.DbSetOperator
.Where(x => x.Id == editRec.Id)
.FirstOrDefault();
if (currRec != null)
{
currRec.CodExt = editRec.CodExt;
currRec.LastName = editRec.LastName;
currRec.FirstName = editRec.FirstName;
}
else
{
localDbCtx
.DbSetOperator
.Add(editRec);
}
await localDbCtx.SaveChangesAsync();
fatto = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OperatorMod{Environment.NewLine}{exc}");
}
}
return fatto;
}
///
/// Lista Operatori
///
///
public List OperatorsGetAll()
{
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
dbResult = localDbCtx
.DbSetOperator
.OrderBy(x => x.LastName)
.ThenBy(x => x.FirstName)
.ToList();
}
return dbResult;
}
///
/// Operatore cercato
///
///
public OperatorModel OperatorsGetByCodExt(string codExt)
{
OperatorModel dbResult = new OperatorModel();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
var risultato = localDbCtx
.DbSetOperator
.Where(x => x.CodExt == codExt)
.OrderBy(x => x.LastName)
.ThenBy(x => x.FirstName)
.FirstOrDefault();
if (risultato != null)
{
dbResult = risultato;
}
}
return dbResult;
}
///
/// Lista Permessi
///
///
public List PermessiGetAll()
{
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
dbResult = localDbCtx
.DbSetPermessi
.OrderBy(x => x.GRUPPO)
.ToList();
}
return dbResult;
}
///
/// Lista Item Stock (raggruppati x location)
///
///
public List StockStatus()
{
List dbResult = new List();
using (StockManContext localDbCtx = new StockManContext(_configuration))
{
dbResult = localDbCtx
.DbSetVLocationVal
.Include(l => l.LocationNav)
.ToList();
}
return dbResult;
}
#endregion Public Methods
#region Private Fields
private static IConfiguration _configuration = null!;
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
#endregion Private Fields
}
}