using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using NLog; using SHERPA.Data.DbModels; using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; namespace SHERPA.Data.Controllers { public class SInManController : IDisposable { #region Private Fields private static IConfiguration _configuration = null!; private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); #endregion Private Fields #region Public Constructors public SInManController(IConfiguration configuration) { _configuration = configuration; Log.Info("Avviata classe BBMController.SHERPAFattContext"); } #endregion Public Constructors #region Public Methods public int CustomersCount() { int answ = 0; using (SHERPAFattContext dbCtx = new SHERPAFattContext(_configuration)) { answ = dbCtx .DbSetCustomers .Count(); } return answ; } /// /// Elenco Customers /// /// /// public List CustomersGetAll(string searchVal) { List dbResult = new List(); using (SHERPAFattContext dbCtx = new SHERPAFattContext(_configuration)) { dbResult = dbCtx .DbSetCustomers .Where(x => (x.RagSoc.Contains(searchVal) || x.CodUnivoco.Contains(searchVal) || string.IsNullOrEmpty(searchVal))) .OrderBy(x => x.RagSoc) .ToList(); } return dbResult; } /// /// Aggiorna un Cliente /// /// /// public bool CustomerUpdate(CustomerModel updItem) { bool done = false; using (SHERPAFattContext dbCtx = new SHERPAFattContext(_configuration)) { try { var currData = dbCtx .DbSetCustomers .Where(x => x.IdxCli == updItem.IdxCli) .FirstOrDefault(); if (currData != null) { currData.Attivo = updItem.Attivo; currData.Cap = updItem.Cap; currData.CFisc = updItem.CFisc; currData.CodiceCliente = updItem.CodiceCliente; currData.CodUnivoco = updItem.CodUnivoco; currData.IdExt = updItem.IdExt; currData.IdxGruppo = updItem.IdxGruppo; currData.Localita = updItem.Localita; currData.Note = updItem.Note; currData.Pagamento = updItem.Pagamento; currData.Pec = updItem.Pec; currData.PIva = updItem.PIva; currData.Provincia = updItem.Provincia; currData.RagSoc = updItem.RagSoc; currData.Valuta = updItem.Valuta; currData.Via = updItem.Via; dbCtx.Entry(currData).State = EntityState.Modified; } else { dbCtx .DbSetCustomers .Add(updItem); } dbCtx.SaveChanges(); done = true; } catch (Exception exc) { } } return done; } public void Dispose() { GC.Collect(); } /// /// Elimina item AccoDoc (Accounting Document) /// /// /// public bool AccoDocDelete(int FattId) { bool done = false; using (SHERPAFattContext dbCtx = new SHERPAFattContext(_configuration)) { try { var item2del = dbCtx .DbSetAccoDocs .Where(x => x.IdxFatt == FattId) .FirstOrDefault(); if (item2del != null) { dbCtx.DbSetAccoDocs.Remove(item2del); dbCtx.SaveChanges(); done = true; } } catch { } } return done; } /// /// Recupera AccoDoc (Accounting Document) da Key /// /// /// public AccoDocModel AccoDocGetByKey(int DocId) { AccoDocModel currDoc = new AccoDocModel(); using (SHERPAFattContext dbCtx = new SHERPAFattContext(_configuration)) { try { currDoc = dbCtx .DbSetAccoDocs .Where(x => x.IdxFatt == DocId) .FirstOrDefault(); } catch { } } return currDoc; } /// /// Elenco ultimi AccoDoc (Accounting Document) /// /// /// public List AccoDocGetLastDesc(int numRecord) { List dbResult = new List(); using (SHERPAFattContext dbCtx = new SHERPAFattContext(_configuration)) { // se numRecord = 0 --> passo tutti if (numRecord == 0) { numRecord = dbCtx.DbSetAccoDocs.Count(); } dbResult = dbCtx .DbSetAccoDocs .OrderByDescending(x => x.Anno) .ThenByDescending(x => x.Num) .Take(numRecord) .ToList(); } return dbResult; } /// /// Elenco Docs /// /// Ricerca in descrizione + note /// Anno da selezionare: 0=tutti / anno specifico /// Filtro numero, = = tutti /// Filtro x Tipo Doc /// public List DocGetLastDesc(string searchVal, int anno = 0, int numero = 0, string tipoDoc = "") { List dbResult = new List(); using (SHERPAFattContext dbCtx = new SHERPAFattContext(_configuration)) { dbResult = dbCtx .DbSetAccoDocs .Where(x => (x.Anno == anno || anno == 0) && (x.Num == numero || numero == 0) && (x.Tipo == tipoDoc || string.IsNullOrEmpty(tipoDoc)) && ((x.CustomerNav != null && x.CustomerNav.RagSoc !=null && x.CustomerNav.RagSoc.Contains(searchVal)) || string.IsNullOrEmpty(searchVal))) .Include(d => d.RigheFattNav) .Include(d => d.CustomerNav) .Include(d => d.ContributiNav) .Include(d => d.ScadenzeNav) .Include(d => d.PagamentiNav) .OrderByDescending(x => x.Anno) .ThenByDescending(x => x.Num) .ToList(); } return dbResult; } /// /// Aggiunge un nuovo item Doc /// /// /// public bool DocsAddNew(AccoDocModel newItem) { bool done = false; using (SHERPAFattContext dbCtx = new SHERPAFattContext(_configuration)) { try { dbCtx .DbSetAccoDocs .Add(newItem); dbCtx.SaveChanges(); done = true; } catch { } } return done; } /// /// Conteggio documenti x criteri /// /// /// /// public int DocsCount(int anno, string tipoDoc) { int answ = 0; using (SHERPAFattContext dbCtx = new SHERPAFattContext(_configuration)) { answ = dbCtx .DbSetAccoDocs .Where(x => (x.Anno== anno || anno==0) && (x.Tipo==tipoDoc || string.IsNullOrEmpty(tipoDoc))) .Count(); } return answ; } /// /// Aggiorna un item Doc /// /// /// public bool DocUpdate(AccoDocModel updItem) { bool done = false; using (SHERPAFattContext dbCtx = new SHERPAFattContext(_configuration)) { try { var currData = dbCtx .DbSetAccoDocs .Where(x => x.IdxFatt == updItem.IdxFatt) .FirstOrDefault(); if (currData != null) { currData.Anno = updItem.Anno; currData.Num = updItem.Num; currData.DtEvent = updItem.DtEvent; currData.IdxCli = updItem.IdxCli; currData.Tipo = updItem.Tipo; currData.Ritenuta = updItem.Ritenuta; currData.Scelta= updItem.Scelta; currData.Token = updItem.Token; currData.NewId = updItem.NewId; // segno modificato! dbCtx.Entry(currData).State = EntityState.Modified; } else { dbCtx .DbSetAccoDocs .Add(updItem); } dbCtx.SaveChanges(); done = true; } catch { } } return done; } #endregion Public Methods } }