Files
gpw_next/GPW.Api/Data/GpwDataService.cs
T
2022-01-26 08:34:34 +01:00

114 lines
3.7 KiB
C#

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<GpwDataService> _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<GpwDataService> 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<List<GPW.Data.DBModels.CheckVc19>> ChecksGetByDip(int idxDip)
{
DateTime dtFine = DateTime.Today.AddDays(1);
List<GPW.Data.DBModels.CheckVc19> dbResult = new List<GPW.Data.DBModels.CheckVc19>();
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<List<GPW.Data.DBModels.CheckVc19>> ChecksGetLast(int numRecord)
{
List<GPW.Data.DBModels.CheckVc19> dbResult = new List<GPW.Data.DBModels.CheckVc19>();
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<bool> 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<bool> 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
}
}