Files
SHERPA/SHERPA.BBM/Controllers/BBMController.cs
T
2021-05-14 23:53:05 +02:00

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
}
}