using GPW.Data; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using NLog; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading.Tasks; namespace GPW.Api.Data { public class GpwDataService : IDisposable { #region Private Fields private static IConfiguration _configuration; private static ILogger _logger; private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); #endregion Private Fields #region Public Fields public static GPW.Data.Controllers.DbController dbController; #endregion Public Fields #region Public Constructors public GpwDataService(IConfiguration configuration, ILogger logger) { _logger = logger; _configuration = configuration; // conf DB string connStrDB = _configuration.GetConnectionString("Gpw.DB"); if (string.IsNullOrEmpty(connStrDB)) { _logger.LogError("ConnString empty!"); } else { dbController = new GPW.Data.Controllers.DbController(configuration); _logger.LogInformation("DbController OK"); } } #endregion Public Constructors #region Public Methods public async Task> ChecksGetByDip(int idxDip) { DateTime dtFine = DateTime.Today.AddDays(1); List dbResult = new List(); Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); dbResult = dbController.GetChecksVC19Filt(idxDip, dtFine.AddMonths(-1), dtFine); stopWatch.Stop(); TimeSpan ts = stopWatch.Elapsed; Log.Trace($"Effettuata lettura da DB per ChecksGetByDip: {ts.TotalMilliseconds} ms"); return await Task.FromResult(dbResult); } public async Task> ChecksGetLast(int numRecord) { List dbResult = new List(); Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); dbResult = dbController.GetChecksVC19(numRecord); stopWatch.Stop(); TimeSpan ts = stopWatch.Elapsed; Log.Trace($"Effettuata lettura da DB per ChecksGetLast: {ts.TotalMilliseconds} ms"); return await Task.FromResult(dbResult); } public void Dispose() { // Clear database controller dbController.Dispose(); } public async Task InsertCheck(DCCDecode updItem, string clientIp) { bool done = false; Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); done = dbController.InsertCheck(updItem, clientIp); stopWatch.Stop(); TimeSpan ts = stopWatch.Elapsed; Log.Trace($"Effettuata operazione InsertCheck: {ts.TotalMilliseconds} ms"); return await Task.FromResult(done); } public async Task InsertManual(int idxDip, string clientIp) { bool done = false; Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); done = dbController.InsertManual(idxDip, clientIp); stopWatch.Stop(); TimeSpan ts = stopWatch.Elapsed; Log.Trace($"Effettuata operazione InsertManual: {ts.TotalMilliseconds} ms"); return await Task.FromResult(done); } #endregion Public Methods } }