Files
mapo-core/MP.Stats/Data/MpStatsService.cs
T

151 lines
6.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Configuration;
using System.Text;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using MP.Data;
using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.Caching.Memory;
using Newtonsoft.Json;
namespace MP.Stats.Data
{
public class MpStatsService
{
#region Private Fields
private static IConfiguration _configuration;
private static ILogger<MpStatsService> _logger;
private static List<MP.Data.DatabaseModels.AzioniUL> ActionsList = new List<MP.Data.DatabaseModels.AzioniUL>();
private readonly IDistributedCache distributedCache;
private readonly IMemoryCache memoryCache;
#endregion Private Fields
#region Protected Fields
protected static string connStringBBM = "";
protected static string connStringFatt = "";
#endregion Protected Fields
#region Public Fields
public static MP.Data.Controllers.MpStatsController dbController;
#endregion Public Fields
#region Public Constructors
public MpStatsService(IConfiguration configuration, ILogger<MpStatsService> logger, IMemoryCache memoryCache, IDistributedCache distributedCache)
{
_logger = logger;
_configuration = configuration;
this.memoryCache = memoryCache;
this.distributedCache = distributedCache;
string connStr = _configuration.GetConnectionString("Mp.Stats");
if (string.IsNullOrEmpty(connStr))
{
_logger.LogError("ConnString empty!");
}
else
{
dbController = new MP.Data.Controllers.MpStatsController(configuration);
StringBuilder sb = new StringBuilder();
sb.AppendLine($"DbController OK");
//sb.AppendLine($"CST: {dbController.CustomersCount()} | CNT: {dbController.CountersCount()} | BSK: {dbController.BasketsCount()} | NGT: {dbController.NegotiationsCount()} | DOC: {dbController.DocsCount()} | ITM: {dbController.ItemsCount()} | RES: {dbController.ResourcesCount()}");
_logger.LogInformation(sb.ToString());
}
}
#endregion Public Constructors
#region Public Methods
public Task<MP.Data.DatabaseModels.AzioniUL[]> ActionsGetAll()
{
return Task.FromResult(dbController.ActionsGetAll().ToArray());
}
public void rollBackEdit(object item)
{
dbController.RollBackEntity(item);
}
public Task<MP.Data.DatabaseModels.AnagArticoli[]> StatArticoliGetSearch(int numRecord, string searchVal = "")
{
return Task.FromResult(dbController.StatArticoliGetSearch(numRecord, searchVal).ToArray());
}
public Task<MP.Data.DatabaseModels.ResControlli[]> StatControlliGetAll(DateTime DataStart, DateTime DataEnd, string IdxMacchina, int IdxODL, string KeyRichiesta, string CodArticolo, string searchVal = "")
{
return Task.FromResult(dbController.StatControlliGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo).ToArray());
}
public Task<MP.Data.DatabaseModels.DdbTurni[]> StatDdbGetAll(int numRecord, string searchVal = "")
{
return Task.FromResult(dbController.StatDdbGetAll(numRecord, searchVal).ToArray());
}
public Task<MP.Data.DatabaseModels.Macchine[]> StatMacchineGetAll()
{
return Task.FromResult(dbController.StatMacchineGetAll().ToArray());
}
public Task<MP.Data.DatabaseModels.ODL[]> StatOdlGetAll(int numRecord, string searchVal = "")
{
return Task.FromResult(dbController.StatOdlGetAll(numRecord, searchVal).ToArray());
}
public Task<MP.Data.DatabaseModels.ResScarti[]> StatScartiGetAll(DateTime DataStart, DateTime DataEnd, string IdxMacchina, int IdxODL, string KeyRichiesta, string CodArticolo, string searchVal = "")
{
// filtra e restituisce SOLO i primi record...
return Task.FromResult(dbController.StatScartiGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo).ToArray());
}
public async Task<MP.Data.DatabaseModels.TurniOee[]> StatTurniOeeGetAll(DateTime DataStart, DateTime DataEnd, string IdxMacchina, int IdxODL, string KeyRichiesta, string CodArticolo, string searchVal = "")
{
List<MP.Data.DatabaseModels.TurniOee> answ = new List<MP.Data.DatabaseModels.TurniOee>();
var cacheKey = "oeeData";
string serializedCustomerList;
var redisCustomerList = await distributedCache.GetAsync(cacheKey);
if (redisCustomerList != null)
{
serializedCustomerList = Encoding.UTF8.GetString(redisCustomerList);
answ = JsonConvert.DeserializeObject<List<MP.Data.DatabaseModels.TurniOee>>(serializedCustomerList);
}
else
{
answ = dbController.StatTurniOeeGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo);
serializedCustomerList = JsonConvert.SerializeObject(answ);
redisCustomerList = Encoding.UTF8.GetBytes(serializedCustomerList);
var options = new DistributedCacheEntryOptions()
.SetAbsoluteExpiration(DateTime.Now.AddMinutes(10))
.SetSlidingExpiration(TimeSpan.FromMinutes(2));
await distributedCache.SetAsync(cacheKey, redisCustomerList, options);
}
return answ.ToArray();
}
public Task<MP.Data.DatabaseModels.TurniPareto[]> StatTurniParetoGetAll(DateTime DataStart, DateTime DataEnd, string IdxMacchina, int IdxODL, string KeyRichiesta, string CodArticolo, string searchVal = "")
{
return Task.FromResult(dbController.StatTurniParetoGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo).ToArray());
}
public Task<MP.Data.DatabaseModels.TurniParetoOdl[]> StatTurniParetoOdlGetAll(DateTime DataStart, DateTime DataEnd, string IdxMacchina, int IdxODL, string KeyRichiesta, string CodArticolo, string searchVal = "")
{
return Task.FromResult(dbController.StatTurniParetoOdlGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo).ToArray());
}
public Task<MP.Data.DatabaseModels.UserActionLog[]> StatUserLogGetAll(DateTime DataStart, DateTime DataEnd, string IdxMacchina, int IdxODL, string KeyRichiesta, string CodArticolo, string searchVal = "")
{
return Task.FromResult(dbController.StatUserLogGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo).ToArray());
}
#endregion Public Methods
}
}