1236 lines
37 KiB
C#
1236 lines
37 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Configuration;
|
|
using NLog;
|
|
|
|
namespace SHERPA.BBM.Controllers
|
|
{
|
|
public class BBMController : IDisposable
|
|
{
|
|
#region Private Fields
|
|
|
|
private static MainDbContext dbCtx;
|
|
private static FattDbContext dbFattCtx;
|
|
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
|
|
|
#endregion Private Fields
|
|
|
|
#region Public Constructors
|
|
|
|
public BBMController(string connBBM, string connFatt)
|
|
{
|
|
dbCtx = new MainDbContext(connBBM);
|
|
Log.Info("Avviata classe BBMController.MainDbContext");
|
|
dbFattCtx = new FattDbContext(connFatt);
|
|
Log.Info("Avviata classe BBMController.FattDbContext");
|
|
}
|
|
|
|
#endregion Public Constructors
|
|
|
|
#region Public Properties
|
|
|
|
public string currConnString
|
|
{
|
|
get
|
|
{
|
|
return dbCtx.Database.Connection.ConnectionString;
|
|
}
|
|
}
|
|
|
|
#endregion Public Properties
|
|
|
|
#region Public Methods
|
|
|
|
/// <summary>
|
|
/// Importo complessivo fatture EMESSE x ANNO
|
|
/// </summary>
|
|
/// <param name="anno"></param>
|
|
/// <returns></returns>
|
|
public decimal SumTotImporto(int anno = 0)
|
|
{
|
|
decimal answ = dbCtx
|
|
.DbSetFatt2Doc
|
|
.Where(x => (x.DataIns.Year == anno || anno == 0))
|
|
.Select(x => x.Importo)
|
|
.Sum();
|
|
return answ;
|
|
}
|
|
/// <summary>
|
|
/// Incasso complessivo fatture INCASSATE x ANNO
|
|
/// </summary>
|
|
/// <param name="anno"></param>
|
|
/// <returns></returns>
|
|
public decimal SumTotIncasso(int anno = 0)
|
|
{
|
|
decimal answ = dbCtx
|
|
.DbSetFatt2Doc
|
|
.Where(x => (x.DataIns.Year == anno || anno == 0))
|
|
.Select(x => x.Incassato)
|
|
.Sum();
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Valore complessivo ORDINATO x ANNO
|
|
/// </summary>
|
|
/// <param name="anno"></param>
|
|
/// <returns></returns>
|
|
public double SumTotOrdinato(int anno = 0)
|
|
{
|
|
double answ = dbCtx
|
|
.DbSetResources
|
|
.Where(x => ((x.Document.DataIns.Year == anno || anno == 0) && x.Document.DocType == BbmDocType.OrderConfirm))
|
|
.Select(x => x.FinalPrice)
|
|
.Sum();
|
|
return answ;
|
|
}
|
|
/// <summary>
|
|
/// Valore complessivo TRATTATO x ANNO
|
|
/// </summary>
|
|
/// <param name="anno"></param>
|
|
/// <returns></returns>
|
|
public double SumTotTrattato(int anno = 0)
|
|
{
|
|
double answ = dbCtx
|
|
.DbSetResources
|
|
.Where(x => ((x.Document.DataIns.Year == anno || anno == 0) && x.Document.IsActive))
|
|
.Select(x => x.FinalPrice)
|
|
.Sum();
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Aggiunge un nuovo item Basket
|
|
/// </summary>
|
|
/// <param name="newItem"></param>
|
|
/// <returns></returns>
|
|
public bool BaskAddNew(DatabaseModels.BasketsModel newItem)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
dbCtx
|
|
.DbSetBaskets
|
|
.Add(newItem);
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elimina item Basket
|
|
/// </summary>
|
|
/// <param name="newItem"></param>
|
|
/// <returns></returns>
|
|
public bool BaskDelete(string CodBasket)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
var item2del = dbCtx
|
|
.DbSetBaskets
|
|
.Where(x => x.CodBasket == CodBasket)
|
|
.FirstOrDefault();
|
|
dbCtx.DbSetBaskets.Remove(item2del);
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
public int BasketsCount()
|
|
{
|
|
int answ = dbCtx
|
|
.DbSetBaskets
|
|
.Count();
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco ultimi Baskets
|
|
/// </summary>
|
|
/// <param name="numRecord"></param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.BasketsModel> BaskGetLastDesc(string searchVal, int numRecord)
|
|
{
|
|
List<DatabaseModels.BasketsModel> dbResult = new List<DatabaseModels.BasketsModel>();
|
|
// se numRecord = 0 --> passo tutti
|
|
if (numRecord == 0)
|
|
{
|
|
numRecord = dbCtx.DbSetBaskets.Count();
|
|
}
|
|
dbResult = dbCtx
|
|
.DbSetBaskets
|
|
.Where(x => (x.BasketId > 1) && (string.IsNullOrEmpty(searchVal) || x.CodBasket.Contains(searchVal) || x.Descript.Contains(searchVal) || x.Customer.RagSoc.Contains(searchVal) || x.Customer.Descript.Contains(searchVal)))
|
|
.OrderByDescending(x => x.CodBasket)
|
|
.OrderByDescending(x => x.DataIns)
|
|
.Take(numRecord)
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Aggiorna un item Baskets
|
|
/// </summary>
|
|
/// <param name="updItem"></param>
|
|
/// <returns></returns>
|
|
public bool BaskUpdate(DatabaseModels.BasketsModel updItem)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
var currData = dbCtx
|
|
.DbSetBaskets
|
|
.Where(x => x.CodBasket == updItem.CodBasket)
|
|
.FirstOrDefault();
|
|
if (currData != null)
|
|
{
|
|
dbCtx.Entry(updItem).State = System.Data.Entity.EntityState.Modified;
|
|
}
|
|
else
|
|
{
|
|
dbCtx
|
|
.DbSetBaskets
|
|
.Add(updItem);
|
|
}
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elimina item Fatt2Doc
|
|
/// </summary>
|
|
/// <param name="IdxFatt"></param>
|
|
/// <returns></returns>
|
|
public bool BillDelete(int IdxFatt)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
var item2del = dbCtx
|
|
.DbSetFatt2Doc
|
|
.Where(x => x.IdxFatt == IdxFatt)
|
|
.FirstOrDefault();
|
|
dbCtx.DbSetFatt2Doc.Remove(item2del);
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elimina Fatture del doc indicato
|
|
/// </summary>
|
|
/// <param name="DocId"></param>
|
|
/// <returns></returns>
|
|
public bool BillDeleteByDoc(int DocId)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
var item2del = dbCtx
|
|
.DbSetFatt2Doc
|
|
.Where(x => x.DocId == DocId)
|
|
.ToList();
|
|
dbCtx.DbSetFatt2Doc.RemoveRange(item2del);
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Conteggio fatture
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public int BillsCount()
|
|
{
|
|
int answ = dbCtx
|
|
.DbSetFatt2Doc
|
|
.Count();
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco Docs da Item
|
|
/// </summary>
|
|
/// <param name="DocId"></param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.Fatt2DocModel> BillsGetByDoc(int DocId = 0)
|
|
{
|
|
List<DatabaseModels.Fatt2DocModel> dbResult = new List<DatabaseModels.Fatt2DocModel>();
|
|
dbResult = dbCtx
|
|
.DbSetFatt2Doc
|
|
.Where(x => (x.DocId == DocId || DocId == 0))
|
|
.OrderByDescending(x => x.DataIns)
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Importo complessivo fatture emesse x DOC
|
|
/// </summary>
|
|
/// <param name="numRecord"></param>
|
|
/// <returns></returns>
|
|
public decimal BillsGetTotImporto(int DocId = 0)
|
|
{
|
|
decimal answ = dbCtx
|
|
.DbSetFatt2Doc
|
|
.Where(x => (x.DocId == DocId || DocId == 0))
|
|
.Select(x => x.Importo)
|
|
.Sum();
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Incasso complessivo fatture emesse x DOC
|
|
/// </summary>
|
|
/// <param name="numRecord"></param>
|
|
/// <returns></returns>
|
|
public decimal BillsGetTotIncasso(int DocId = 0)
|
|
{
|
|
decimal answ = dbCtx
|
|
.DbSetFatt2Doc
|
|
.Where(x => (x.DocId == DocId || DocId == 0))
|
|
.Select(x => x.Incassato)
|
|
.Sum();
|
|
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Aggiunge un nuova Fattura
|
|
/// </summary>
|
|
/// <param name="updItem"></param>
|
|
/// <returns></returns>
|
|
public bool BillUpdate(DatabaseModels.Fatt2DocModel updItem)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
var currData = dbCtx
|
|
.DbSetFatt2Doc
|
|
.Where(x => x.IdxFatt == updItem.IdxFatt)
|
|
.FirstOrDefault();
|
|
if (currData != null)
|
|
{
|
|
dbCtx.Entry(updItem).State = System.Data.Entity.EntityState.Modified;
|
|
}
|
|
else
|
|
{
|
|
dbCtx
|
|
.DbSetFatt2Doc
|
|
.Add(updItem);
|
|
}
|
|
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
public string CounterGetNext(string CodCounter, int numZeros)
|
|
{
|
|
string answ = $"{CodCounter}.0000";
|
|
int nextId = 1;
|
|
var lastCount = dbCtx
|
|
.DbSetCounters
|
|
.Where(x => x.CodCounter == CodCounter)
|
|
.OrderByDescending(x => x.LastNum)
|
|
.FirstOrDefault();
|
|
if (lastCount != null)
|
|
{
|
|
lastCount.LastNum++;
|
|
nextId = lastCount.LastNum;
|
|
}
|
|
else
|
|
{
|
|
var newRecord = new DatabaseModels.FluxCountersModel()
|
|
{
|
|
CodCounter = CodCounter,
|
|
LastNum = nextId
|
|
};
|
|
dbCtx
|
|
.DbSetCounters
|
|
.Add(newRecord);
|
|
}
|
|
string subCounter = nextId.ToString().PadLeft(numZeros, '0');
|
|
answ = $"{CodCounter}.{subCounter}";
|
|
dbCtx.SaveChanges();
|
|
|
|
return answ;
|
|
}
|
|
|
|
public int CountersCount()
|
|
{
|
|
int answ = dbCtx
|
|
.DbSetCounters
|
|
.Count();
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco Conunters
|
|
/// </summary>
|
|
/// <param name="searchVal"></param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.FluxCountersModel> CountersGetAll(string searchVal = "")
|
|
{
|
|
List<DatabaseModels.FluxCountersModel> dbResult = new List<DatabaseModels.FluxCountersModel>();
|
|
|
|
dbResult = dbCtx
|
|
.DbSetCounters
|
|
.Where(x => x.CodCounter.Contains(searchVal) || string.IsNullOrEmpty(searchVal))
|
|
.OrderBy(x => x.CodCounter)
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Aggiorna un FluxCounter
|
|
/// </summary>
|
|
/// <param name="updItem"></param>
|
|
/// <returns></returns>
|
|
public bool CounterUpdate(DatabaseModels.FluxCountersModel updItem)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
var currData = dbCtx
|
|
.DbSetCounters
|
|
.Where(x => x.CodCounter == updItem.CodCounter)
|
|
.FirstOrDefault();
|
|
if (currData != null)
|
|
{
|
|
dbCtx.Entry(updItem).State = System.Data.Entity.EntityState.Modified;
|
|
}
|
|
else
|
|
{
|
|
dbCtx
|
|
.DbSetCounters
|
|
.Add(updItem);
|
|
}
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch (Exception exc)
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
public int CustomersCount()
|
|
{
|
|
int answ = dbCtx
|
|
.DbSetCustomers
|
|
.Count();
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco Customers
|
|
/// </summary>
|
|
/// <param name="searchVal"></param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.CustomersModel> CustomersGetAll(string searchVal)
|
|
{
|
|
List<DatabaseModels.CustomersModel> dbResult = new List<DatabaseModels.CustomersModel>();
|
|
|
|
dbResult = dbCtx
|
|
.DbSetCustomers
|
|
.Where(x => x.RagSoc.Contains(searchVal) || x.Descript.Contains(searchVal) || string.IsNullOrEmpty(searchVal))
|
|
.OrderBy(x => x.RagSoc)
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Aggiorna un Cliente
|
|
/// </summary>
|
|
/// <param name="updItem"></param>
|
|
/// <returns></returns>
|
|
public bool CustomerUpdate(DatabaseModels.CustomersModel updItem)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
var currData = dbCtx
|
|
.DbSetCustomers
|
|
.Where(x => x.CustomerId == updItem.CustomerId)
|
|
.FirstOrDefault();
|
|
if (currData != null)
|
|
{
|
|
dbCtx.Entry(updItem).State = System.Data.Entity.EntityState.Modified;
|
|
}
|
|
else
|
|
{
|
|
dbCtx
|
|
.DbSetCustomers
|
|
.Add(updItem);
|
|
}
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch (Exception exc)
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
// Clear database context
|
|
dbCtx.Dispose();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elimina item Doc
|
|
/// </summary>
|
|
/// <param name="DocId"></param>
|
|
/// <returns></returns>
|
|
public bool DocDelete(int DocId)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
var item2del = dbCtx
|
|
.DbSetDocs
|
|
.Where(x => x.DocId == DocId)
|
|
.FirstOrDefault();
|
|
dbCtx.DbSetDocs.Remove(item2del);
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Recupera Doc da ID
|
|
/// </summary>
|
|
/// <param name="newItem"></param>
|
|
/// <returns></returns>
|
|
public DatabaseModels.DocsModel DocGetByKey(int DocId)
|
|
{
|
|
DatabaseModels.DocsModel currDoc = null;
|
|
try
|
|
{
|
|
currDoc = dbCtx
|
|
.DbSetDocs
|
|
.Where(x => x.DocId == DocId)
|
|
.FirstOrDefault();
|
|
}
|
|
catch
|
|
{ }
|
|
return currDoc;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco ultimi Docs
|
|
/// </summary>
|
|
/// <param name="numRecord"></param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.DocsModel> DocGetLastDesc(int numRecord)
|
|
{
|
|
List<DatabaseModels.DocsModel> dbResult = new List<DatabaseModels.DocsModel>();
|
|
// se numRecord = 0 --> passo tutti
|
|
if (numRecord == 0)
|
|
{
|
|
numRecord = dbCtx.DbSetDocs.Count();
|
|
}
|
|
dbResult = dbCtx
|
|
.DbSetDocs
|
|
.OrderByDescending(x => x.CodDoc)
|
|
.OrderByDescending(x => x.DataIns)
|
|
.Take(numRecord)
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco ultimi Docs
|
|
/// </summary>
|
|
/// <param name="CodBasket"></param>
|
|
/// <param name="CodNegotiation"></param>
|
|
/// <param name="numRecord"></param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.DocsModel> DocGetLastDesc(int BasketId = 0, int NegotiationId = 0, int numRecord = 0)
|
|
{
|
|
List<DatabaseModels.DocsModel> dbResult = new List<DatabaseModels.DocsModel>();
|
|
// se numRecord = 0 --> passo tutti
|
|
if (numRecord == 0)
|
|
{
|
|
numRecord = dbCtx.DbSetDocs.Count();
|
|
}
|
|
dbResult = dbCtx
|
|
.DbSetDocs
|
|
.Where(x => (x.BasketId == BasketId || BasketId == 0) && (x.NegotiationId == NegotiationId || NegotiationId == 0))
|
|
.OrderByDescending(x => x.CodDoc)
|
|
.OrderByDescending(x => x.DataIns)
|
|
.Take(numRecord)
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Aggiunge un nuovo item Doc
|
|
/// </summary>
|
|
/// <param name="newItem"></param>
|
|
/// <returns></returns>
|
|
public bool DocsAddNew(DatabaseModels.DocsModel newItem)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
dbCtx
|
|
.DbSetDocs
|
|
.Add(newItem);
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
public int DocsCount()
|
|
{
|
|
int answ = dbCtx
|
|
.DbSetDocs
|
|
.Count();
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Aggiorna un item Doc come ACTIVE (e inactive gli altri della stessa negoziazione)
|
|
/// </summary>
|
|
/// <param name="updItem"></param>
|
|
/// <returns></returns>
|
|
public bool DocSetActive(DatabaseModels.DocsModel updItem)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
// attivo record corrente
|
|
var currData = dbCtx
|
|
.DbSetDocs
|
|
.Where(x => x.DocId == updItem.DocId)
|
|
.FirstOrDefault();
|
|
currData.IsActive = true;
|
|
|
|
// altri record da disattivare
|
|
var otherData = dbCtx
|
|
.DbSetDocs
|
|
.Where(x => x.NegotiationId == updItem.NegotiationId && x.DocId != updItem.DocId)
|
|
.ToList();
|
|
foreach (var item in otherData)
|
|
{
|
|
item.IsActive = false;
|
|
}
|
|
dbCtx.SaveChanges();
|
|
// rileggo
|
|
dbCtx.Entry(currData).Reload();
|
|
// anche altri valori
|
|
foreach (var item in otherData)
|
|
{
|
|
dbCtx.Entry(item).Reload();
|
|
}
|
|
done = true;
|
|
}
|
|
catch (Exception exc)
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Aggiorna un item Doc
|
|
/// </summary>
|
|
/// <param name="updItem"></param>
|
|
/// <returns></returns>
|
|
public bool DocUpdate(DatabaseModels.DocsModel updItem)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
var currData = dbCtx
|
|
.DbSetDocs
|
|
.Where(x => x.DocId == updItem.DocId)
|
|
.FirstOrDefault();
|
|
if (currData != null)
|
|
{
|
|
dbCtx.Entry(updItem).State = System.Data.Entity.EntityState.Modified;
|
|
}
|
|
else
|
|
{
|
|
dbCtx
|
|
.DbSetDocs
|
|
.Add(updItem);
|
|
}
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Aggiunge un nuovo item
|
|
/// </summary>
|
|
/// <param name="newItem"></param>
|
|
/// <returns></returns>
|
|
public bool ItemAddNew(DatabaseModels.ItemsModel newItem)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
dbCtx
|
|
.DbSetItems
|
|
.Add(newItem);
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elimina item Basket
|
|
/// </summary>
|
|
/// <param name="CodItem"></param>
|
|
/// <returns></returns>
|
|
public bool ItemDelete(string CodItem)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
var item2del = dbCtx
|
|
.DbSetItems
|
|
.Where(x => x.CodItem == CodItem)
|
|
.FirstOrDefault();
|
|
dbCtx.DbSetItems.Remove(item2del);
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Recupera singolo ITEM da chiave
|
|
/// </summary>
|
|
/// <param name="ItemId"></param>
|
|
/// <returns></returns>
|
|
public DatabaseModels.ItemsModel ItemFind(int ItemId)
|
|
{
|
|
var dbResult = dbCtx
|
|
.DbSetItems
|
|
.Find(ItemId);
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco ultimi Items
|
|
/// </summary>
|
|
/// <param name="numRecord"></param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.ItemsModel> ItemGetLastDesc(int numRecord)
|
|
{
|
|
List<DatabaseModels.ItemsModel> dbResult = new List<DatabaseModels.ItemsModel>();
|
|
// se numRecord = 0 --> passo tutti
|
|
if (numRecord == 0)
|
|
{
|
|
numRecord = dbCtx.DbSetItems.Count();
|
|
}
|
|
dbResult = dbCtx
|
|
.DbSetItems
|
|
.OrderByDescending(x => x.CodItem)
|
|
.Take(numRecord)
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco ultimi Items
|
|
/// </summary>
|
|
/// <param name="searchVal"></param>
|
|
/// <param name="ResType"></param>
|
|
/// <param name="UM"></param>
|
|
/// <param name="numRecord"></param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.ItemsModel> ItemGetLastDesc(string searchVal, BbmResType ResType = BbmResType.ND, string UM = "", int numRecord = 0)
|
|
{
|
|
List<DatabaseModels.ItemsModel> dbResult = new List<DatabaseModels.ItemsModel>();
|
|
// se numRecord = 0 --> passo tutti
|
|
if (numRecord == 0)
|
|
{
|
|
numRecord = dbCtx.DbSetItems.Count();
|
|
}
|
|
dbResult = dbCtx
|
|
.DbSetItems
|
|
.Where(x => (x.CodItem != "ITEM.0000.0000") && (string.IsNullOrEmpty(searchVal) || (x.Descript.Contains(searchVal) || x.CodItem.Contains(searchVal))) && (x.ResType == ResType || ResType == BbmResType.ND) && (x.UM == UM || UM == ""))
|
|
.OrderByDescending(x => x.CodItem)
|
|
.Take(numRecord)
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
public int ItemsCount()
|
|
{
|
|
int answ = dbCtx
|
|
.DbSetItems
|
|
.Count();
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Aggiorna un item
|
|
/// </summary>
|
|
/// <param name="updItem"></param>
|
|
/// <returns></returns>
|
|
public bool ItemUpdate(DatabaseModels.ItemsModel updItem)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
var currData = dbCtx
|
|
.DbSetItems
|
|
.Where(x => x.ItemId == updItem.ItemId)
|
|
.FirstOrDefault();
|
|
if (currData != null)
|
|
{
|
|
dbCtx.Entry(updItem).State = System.Data.Entity.EntityState.Modified;
|
|
}
|
|
else
|
|
{
|
|
dbCtx
|
|
.DbSetItems
|
|
.Add(updItem);
|
|
}
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch (Exception exc)
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Aggiunge un nuovo item Negotiation
|
|
/// </summary>
|
|
/// <param name="newItem"></param>
|
|
/// <returns></returns>
|
|
public bool NegotAddNew(DatabaseModels.NegotiationsModel newItem)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
dbCtx
|
|
.DbSetNegotiations
|
|
.Add(newItem);
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elimina item Negotiation
|
|
/// </summary>
|
|
/// <param name="newItem"></param>
|
|
/// <returns></returns>
|
|
public bool NegotDelete(string CodNegotiation)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
var item2del = dbCtx
|
|
.DbSetNegotiations
|
|
.Where(x => x.CodNegotiation == CodNegotiation)
|
|
.FirstOrDefault();
|
|
dbCtx.DbSetNegotiations.Remove(item2del);
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco ultime Negoziazioni
|
|
/// </summary>
|
|
/// <param name="searchVal"></param>
|
|
/// <param name="numRecord"></param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.NegotiationsModel> NegotGetLastDesc(string searchVal, int numRecord)
|
|
{
|
|
List<DatabaseModels.NegotiationsModel> dbResult = new List<DatabaseModels.NegotiationsModel>();
|
|
// se numRecord = 0 --> passo tutti
|
|
if (numRecord == 0)
|
|
{
|
|
numRecord = dbCtx.DbSetNegotiations.Count();
|
|
}
|
|
dbResult = dbCtx
|
|
.DbSetNegotiations
|
|
.Where(x => (x.NegotiationId > 1) && (string.IsNullOrEmpty(searchVal) || x.CodNegotiation.Contains(searchVal) || x.Customer.RagSoc.Contains(searchVal) || x.BasePath.Contains(searchVal)))
|
|
.OrderByDescending(x => x.CodNegotiation)
|
|
.OrderByDescending(x => x.DataIns)
|
|
.Take(numRecord)
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
public int NegotiationsCount()
|
|
{
|
|
int answ = dbCtx
|
|
.DbSetNegotiations
|
|
.Count();
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Aggiorna un item Negotiation
|
|
/// </summary>
|
|
/// <param name="updItem"></param>
|
|
/// <returns></returns>
|
|
public bool NegotUpdate(DatabaseModels.NegotiationsModel updItem)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
var currData = dbCtx
|
|
.DbSetNegotiations
|
|
.Where(x => x.CodNegotiation == updItem.CodNegotiation)
|
|
.FirstOrDefault();
|
|
if (currData != null)
|
|
{
|
|
dbCtx.Entry(updItem).State = System.Data.Entity.EntityState.Modified;
|
|
}
|
|
else
|
|
{
|
|
dbCtx
|
|
.DbSetNegotiations
|
|
.Add(updItem);
|
|
}
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Aggiunge un nuova Resource
|
|
/// </summary>
|
|
/// <param name="newItem"></param>
|
|
/// <returns></returns>
|
|
public bool ResourceAddNew(DatabaseModels.ResourcesModel newItem)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
dbCtx
|
|
.DbSetResources
|
|
.Add(newItem);
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Duplica resource da documento source --> target
|
|
/// </summary>
|
|
/// <param name="DocIdSrc"></param>
|
|
/// <param name="DocIdTgt"></param>
|
|
/// <param name="numRecord"></param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.ResourcesModel> ResourceCloneByDoc(int DocIdSrc, int DocIdTgt)
|
|
{
|
|
List<DatabaseModels.ResourcesModel> dbResult = new List<DatabaseModels.ResourcesModel>();
|
|
|
|
dbResult = dbCtx
|
|
.DbSetResources
|
|
.AsNoTracking()
|
|
.Where(x => x.DocId == DocIdSrc)
|
|
.ToList();
|
|
|
|
// aggiorno doc ed aggiungo...
|
|
foreach (var item in dbResult)
|
|
{
|
|
item.DocId = DocIdTgt;
|
|
dbCtx
|
|
.DbSetResources
|
|
.Add(item);
|
|
}
|
|
// salvo!
|
|
dbCtx.SaveChanges();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elimina item Resource
|
|
/// </summary>
|
|
/// <param name="ResourceId"></param>
|
|
/// <returns></returns>
|
|
public bool ResourceDelete(int ResourceId)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
var item2del = dbCtx
|
|
.DbSetResources
|
|
.Where(x => x.ResourceId == ResourceId)
|
|
.FirstOrDefault();
|
|
dbCtx.DbSetResources.Remove(item2del);
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elimina Resource del doc indicato
|
|
/// </summary>
|
|
/// <param name="DocId"></param>
|
|
/// <returns></returns>
|
|
public bool ResourceDeleteByDoc(int DocId)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
var item2del = dbCtx
|
|
.DbSetResources
|
|
.Where(x => x.DocId == DocId)
|
|
.ToList();
|
|
dbCtx.DbSetResources.RemoveRange(item2del);
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco ultimi Items
|
|
/// </summary>
|
|
/// <param name="numRecord"></param>
|
|
/// <returns></returns>
|
|
public double ResourceGetGrandTotal(int DocId = 0)
|
|
{
|
|
double answ = dbCtx
|
|
.DbSetResources
|
|
.Where(x => (x.DocId == DocId || DocId == 0))
|
|
.Select(x => x.FinalPrice)
|
|
.Sum();
|
|
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco ultimi Items
|
|
/// </summary>
|
|
/// <param name="numRecord"></param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.ResourcesModel> ResourceGetLastDesc(int numRecord)
|
|
{
|
|
List<DatabaseModels.ResourcesModel> dbResult = new List<DatabaseModels.ResourcesModel>();
|
|
// se numRecord = 0 --> passo tutti
|
|
if (numRecord == 0)
|
|
{
|
|
numRecord = dbCtx.DbSetResources.Count();
|
|
}
|
|
dbResult = dbCtx
|
|
.DbSetResources
|
|
.OrderByDescending(x => x.Ordinal)
|
|
.Take(numRecord)
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco ultimi Items
|
|
/// </summary>
|
|
/// <param name="DocId"></param>
|
|
/// <param name="ResType"></param>
|
|
/// <param name="numRecord"></param>
|
|
/// <returns></returns>
|
|
public List<DatabaseModels.ResourcesModel> ResourceGetLastDesc(int DocId = 0, BbmResType ResType = BbmResType.ND, int numRecord = 0)
|
|
{
|
|
List<DatabaseModels.ResourcesModel> dbResult = new List<DatabaseModels.ResourcesModel>();
|
|
// se numRecord = 0 --> passo tutti
|
|
if (numRecord == 0)
|
|
{
|
|
numRecord = dbCtx.DbSetResources.Count();
|
|
}
|
|
dbResult = dbCtx
|
|
.DbSetResources
|
|
.Where(x => (x.Item.ResType == ResType || ResType == BbmResType.ND) && (x.DocId == DocId || DocId == 0))
|
|
.OrderByDescending(x => x.Ordinal)
|
|
.Take(numRecord)
|
|
.ToList();
|
|
|
|
return dbResult;
|
|
}
|
|
|
|
public int ResourcesCount()
|
|
{
|
|
int answ = dbCtx
|
|
.DbSetResources
|
|
.Count();
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Aggiorna una Resource
|
|
/// </summary>
|
|
/// <param name="updItem"></param>
|
|
/// <returns></returns>
|
|
public bool ResourceUpdate(DatabaseModels.ResourcesModel updItem)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
var currData = dbCtx
|
|
.DbSetResources
|
|
.Where(x => x.ResourceId == updItem.ResourceId)
|
|
.FirstOrDefault();
|
|
if (currData != null)
|
|
{
|
|
dbCtx.Entry(updItem).State = System.Data.Entity.EntityState.Modified;
|
|
}
|
|
else
|
|
{
|
|
dbCtx
|
|
.DbSetResources
|
|
.Add(updItem);
|
|
}
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch (Exception exc)
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Aggiorna una Resource come POSIZIONE (SE NON VA oltre i limiti)
|
|
/// </summary>
|
|
/// <param name="ResourceId"></param>
|
|
/// <param name="move">INT movimento: -1 = UP / 1 = DOWN</param>
|
|
/// <returns></returns>
|
|
public bool ResourceUpdateOrder(int ResourceId, int move)
|
|
{
|
|
bool done = false;
|
|
try
|
|
{
|
|
var currItem = dbCtx
|
|
.DbSetResources
|
|
.Where(x => x.ResourceId == ResourceId)
|
|
.FirstOrDefault();
|
|
|
|
if (currItem != null)
|
|
{
|
|
var currData = dbCtx
|
|
.DbSetResources
|
|
.Where(x => x.DocId == currItem.DocId)
|
|
.ToList();
|
|
// verifico quanti sono x determinare estremi movimento... 1 <= x <= maxOrder
|
|
bool canMove = false;
|
|
|
|
int maxOrder = currData.Count();
|
|
// se ammesso...
|
|
if (move < 0)
|
|
{
|
|
canMove = currItem.Ordinal + move >= 1;
|
|
}
|
|
else
|
|
{
|
|
canMove = currItem.Ordinal + move <= maxOrder;
|
|
}
|
|
if (canMove)
|
|
{
|
|
// recupero altro itemo x movimento opposto.
|
|
var otherItem = currData
|
|
.Where(x => x.Ordinal == currItem.Ordinal + move)
|
|
.FirstOrDefault();
|
|
if (otherItem != null)
|
|
{
|
|
otherItem.Ordinal -= move;
|
|
currItem.Ordinal += move;
|
|
}
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception exc)
|
|
{ }
|
|
return done;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Annulla modifiche su una specifica entity (cancel update)
|
|
/// </summary>
|
|
/// <param name="item"></param>
|
|
/// <returns></returns>
|
|
public bool rollBackEntity(object item)
|
|
{
|
|
bool answ = false;
|
|
try
|
|
{
|
|
if (dbCtx.Entry(item).State == System.Data.Entity.EntityState.Deleted || dbCtx.Entry(item).State == System.Data.Entity.EntityState.Modified)
|
|
{
|
|
dbCtx.Entry(item).Reload();
|
|
}
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
Log.Error($"Eccezione in rollBackEntity{Environment.NewLine}{exc}");
|
|
}
|
|
return answ;
|
|
}
|
|
|
|
#endregion Public Methods
|
|
}
|
|
} |