252 lines
9.2 KiB
C#
252 lines
9.2 KiB
C#
using NLog;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
/*------------------------------------------------
|
|
* Aggiunto fix come da link seguente:
|
|
*
|
|
* https://stackoverflow.com/questions/14033193/entity-framework-provider-type-could-not-be-loaded
|
|
*
|
|
* I solved this by adding an using stament on top of my DBContext class, like so:
|
|
* using SqlProviderServices= System.Data.Entity.SqlServer.SqlProviderServices;
|
|
*
|
|
*/
|
|
namespace EgwProxy.Icoel.DataLayer.Controllers
|
|
{
|
|
/// <summary>
|
|
/// Controller accesso dati DB vari x ICOEL
|
|
/// </summary>
|
|
public class DbController : IDisposable
|
|
{
|
|
#if false
|
|
private static EntrataDbContext dbEntrataCtx;
|
|
private static ExportDbContext dbExportCtx;
|
|
private static TrackerDbContext dbTrackerCtx;
|
|
#endif
|
|
private static SyncStateDbContext dbSyncStateCtx;
|
|
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
|
|
|
#if false
|
|
/// <summary>
|
|
/// Avvio dell'oggetto gestione DB con le 3 stringhe di connessione specifiche
|
|
/// </summary>
|
|
/// <param name="connEntrata">Connesisone Db frontiera Entrata Merce</param>
|
|
/// <param name="connTracker">Connessione DB Tracker</param>
|
|
/// <param name="connExport">Connessione DB IcoelExport</param>
|
|
/// <param name="connSyncState">Connessione DB locale di SYNC</param>
|
|
public DbController(string connEntrata, string connTracker, string connExport, string connSyncState)
|
|
{
|
|
dbEntrataCtx = new EntrataDbContext(connEntrata);
|
|
Log.Info("Avviata classe EntrataDbContext");
|
|
dbExportCtx = new ExportDbContext(connExport);
|
|
Log.Info("Avviata classe ExportDbContext");
|
|
dbTrackerCtx = new TrackerDbContext(connTracker);
|
|
Log.Info("Avviata classe dbTrackerCtx");
|
|
dbSyncStateCtx = new SyncStateDbContext(connSyncState);
|
|
Log.Info("Avviata classe dbSyncStateCtx");
|
|
}
|
|
#endif
|
|
/// <summary>
|
|
/// Avvio dell'oggetto gestione DB con stringa di connessione specifica
|
|
/// </summary>
|
|
/// <param name="connSyncState">Connessione DB locale di SYNC</param>
|
|
public DbController(string connSyncState)
|
|
{
|
|
dbSyncStateCtx = new SyncStateDbContext(connSyncState);
|
|
Log.Info("Avviata classe dbSyncStateCtx");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Dispose classe
|
|
/// </summary>
|
|
public void Dispose()
|
|
{
|
|
// Clear database context
|
|
#if false
|
|
dbEntrataCtx.Dispose();
|
|
dbExportCtx.Dispose();
|
|
dbTrackerCtx.Dispose();
|
|
#endif
|
|
dbSyncStateCtx.Dispose();
|
|
}
|
|
|
|
#if false
|
|
/// <summary>
|
|
/// Elenco record Entrata Merce (Frontiera)
|
|
/// </summary>
|
|
/// <param name="minIdx">idx da cui partire a recuperare</param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.EntrataModel> EntrateGetFromIdx(int minIdx = 0)
|
|
{
|
|
List<DatabaseModels.EntrataModel> dbResult = new List<DatabaseModels.EntrataModel>();
|
|
dbResult = dbEntrataCtx
|
|
.DbSetEntrataMerce
|
|
.Where(x => (x.ID_CHIAVE >= minIdx))
|
|
.OrderBy(x => x.ID_CHIAVE)
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco ultimi record Entrata Merce (Frontiera)
|
|
/// </summary>
|
|
/// <param name="numRec">numero records da recuperare</param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.EntrataModel> EntrateGetLast(int numRec = 100)
|
|
{
|
|
List<DatabaseModels.EntrataModel> dbResult = new List<DatabaseModels.EntrataModel>();
|
|
dbResult = dbEntrataCtx
|
|
.DbSetEntrataMerce
|
|
.OrderByDescending(x => x.ID_CHIAVE)
|
|
.Take(numRec)
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco record ProductsTotal (da Icoel Export Products)
|
|
/// </summary>
|
|
/// <param name="minIdx">idx da cui partire a recuperare</param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.ProductsTotalsModel> ExportProductsGetFromIdx(int minIdx = 0)
|
|
{
|
|
List<DatabaseModels.ProductsTotalsModel> dbResult = new List<DatabaseModels.ProductsTotalsModel>();
|
|
dbResult = dbExportCtx
|
|
.DbSetProductsTotals
|
|
.Where(x => (x.SizerBatchId >= minIdx))
|
|
.OrderBy(x => x.SizerBatchId)
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco ultimi record ProductsTotal (da Icoel Export Products)
|
|
/// </summary>
|
|
/// <param name="numRec">numero records da recuperare</param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.ProductsTotalsModel> ExportProductsGetLast(int numRec = 0)
|
|
{
|
|
List<DatabaseModels.ProductsTotalsModel> dbResult = new List<DatabaseModels.ProductsTotalsModel>();
|
|
dbResult = dbExportCtx
|
|
.DbSetProductsTotals
|
|
.OrderByDescending(x => x.SizerBatchId)
|
|
.ThenByDescending(x => x.Index)
|
|
.Take(numRec)
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
#endif
|
|
|
|
/// <summary>
|
|
/// Esegue una volta la stored di ImportAll (x recupero dati da DB esterni) e poi
|
|
/// restitusice in output la tab di SyncState x verificare lo stato
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.SyncStateModel> SyncStateDoImportAll()
|
|
{
|
|
List<DatabaseModels.SyncStateModel> dbResult = new List<DatabaseModels.SyncStateModel>();
|
|
|
|
dbResult = dbSyncStateCtx
|
|
.Database
|
|
.SqlQuery<DatabaseModels.SyncStateModel>("EXEC stp_ImportAll")
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Esegue una volta la stored di ImportAll (x recupero dati da DB esterni) e poi
|
|
/// restitusice in output la tab di SyncState x verificare lo stato
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.SyncStateModel> SyncStateDoExportAll()
|
|
{
|
|
List<DatabaseModels.SyncStateModel> dbResult = new List<DatabaseModels.SyncStateModel>();
|
|
|
|
dbResult = dbSyncStateCtx
|
|
.Database
|
|
.SqlQuery<DatabaseModels.SyncStateModel>("EXEC stp_ExportAll")
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// recupera la tab di SyncState corrente
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.SyncStateModel> SyncStateGetAll()
|
|
{
|
|
List<DatabaseModels.SyncStateModel> dbResult = new List<DatabaseModels.SyncStateModel>();
|
|
|
|
dbResult = dbSyncStateCtx
|
|
.DbSetSyncState
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
#if false
|
|
/// <summary>
|
|
/// Elenco record DettConfezioni (da Icoel TrackerLotti)
|
|
/// </summary>
|
|
/// <param name="minIdx">idx da cui partire a recuperare</param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.DettConfezioniModel> TrackConfezioniGetFromIdx(int minIdx = 0)
|
|
{
|
|
List<DatabaseModels.DettConfezioniModel> dbResult = new List<DatabaseModels.DettConfezioniModel>();
|
|
dbResult = dbTrackerCtx
|
|
.DbSetConfezioni
|
|
.Where(x => (x.Pack_Id >= minIdx))
|
|
.OrderBy(x => x.Pack_Id)
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco ultimi record DettaglioConfezioni (da Icoel TrackerLotti)
|
|
/// </summary>
|
|
/// <param name="numRec">numero records da recuperare</param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.DettConfezioniModel> TrackConfezioniGetLast(int numRec = 0)
|
|
{
|
|
List<DatabaseModels.DettConfezioniModel> dbResult = new List<DatabaseModels.DettConfezioniModel>();
|
|
dbResult = dbTrackerCtx
|
|
.DbSetConfezioni
|
|
.OrderByDescending(x => x.Pack_Id)
|
|
.Take(numRec)
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco dettaglio conferimento x PackId (da Icoel TrackerLotti)
|
|
/// ATTENZIONE: in caso di mancata associazione lotto ingresso con lavorazione corrente la
|
|
/// vista restituisce nuovo (possibile lavorare senza lotto ingresso e senza tracking)
|
|
/// </summary>
|
|
/// <param name="packId">idx da cui partire a recuperare</param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.DettConferimentoModel> TrackPackConfDetailByIdx(long packId = 0)
|
|
{
|
|
List<DatabaseModels.DettConferimentoModel> dbResult = new List<DatabaseModels.DettConferimentoModel>();
|
|
dbResult = dbTrackerCtx
|
|
.DbSetConferimento
|
|
.Where(x => (x.PackId == packId))
|
|
.OrderBy(x => x.NUMERO_LOTTO)
|
|
.ThenByDescending(x => x.QUANTITA_ENTRATA)
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
#endif
|
|
}
|
|
} |