121 lines
3.6 KiB
C#
121 lines
3.6 KiB
C#
using EgwProxy.DataLayer.DbModel;
|
|
using EgwProxy.MagMan.DTO;
|
|
using NLog;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using static System.Data.Entity.Infrastructure.Design.Executor;
|
|
|
|
namespace EgwProxy.DataLayer.Controllers
|
|
{
|
|
public class LogMachineController : IDisposable
|
|
{
|
|
#region Public Constructors
|
|
|
|
/// <summary>
|
|
/// Init classe
|
|
/// </summary>
|
|
/// <param name="connString"></param>
|
|
public LogMachineController()
|
|
{
|
|
}
|
|
|
|
#endregion Public Constructors
|
|
|
|
#region Public Methods
|
|
|
|
public void Dispose()
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Helper conversione a LogMachineDTO
|
|
/// </summary>
|
|
/// <param name="currRec"></param>
|
|
/// <param name="keyNum"></param>
|
|
/// <param name="machineCloudId"></param>
|
|
/// <param name="projCloudId"></param>
|
|
/// <returns></returns>
|
|
public static LogMachineDTO ConvToItemDto(LogMachineModel currRec, int keyNum, int machineCloudId, int projCloudId)
|
|
{
|
|
LogMachineDTO answ = new LogMachineDTO()
|
|
{
|
|
DtEvent = currRec.DtEvent,
|
|
EvType = (MagMan.MachLogTypes)currRec.EvType,
|
|
KeyNum = keyNum,
|
|
MachineCloudId = machineCloudId,
|
|
ProjCloudId = projCloudId,
|
|
VarAddress = currRec.VarAddress,
|
|
VarValue = currRec.VarValue
|
|
};
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Recupero i dati in ordine crescente fino al num max indicato
|
|
/// </summary>
|
|
/// <param name="numMax"></param>
|
|
/// <returns></returns>
|
|
public List<LogMachineModel> GetUnsentAsc(int numMax)
|
|
{
|
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
|
{
|
|
// retrieve
|
|
return localDbCtx
|
|
.DbSetLogMac
|
|
.Where(x => x.DtSent == null)
|
|
.OrderBy(x => x.DtEvent)
|
|
.Take(numMax)
|
|
.ToList();
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Aggiorna i record indicati inserendo dataora corrente x DtSent
|
|
/// </summary>
|
|
/// <param name="rec2upd"></param>
|
|
/// <returns></returns>
|
|
public bool SetDtSent(List<LogMachineModel> rec2upd)
|
|
{
|
|
bool done = false;
|
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
|
{
|
|
DateTime adesso = DateTime.Now;
|
|
foreach (var item in rec2upd)
|
|
{
|
|
var currRec = localDbCtx
|
|
.DbSetLogMac
|
|
.Where(x => x.DtSent == null && x.LogDbId == item.LogDbId)
|
|
.FirstOrDefault();
|
|
if (currRec != null)
|
|
{
|
|
currRec.DtSent = adesso;
|
|
}
|
|
|
|
|
|
// indico modificato
|
|
localDbCtx.Entry(currRec).State = System.Data.Entity.EntityState.Modified;
|
|
|
|
}
|
|
// Salvataggio finale
|
|
localDbCtx.SaveChanges();
|
|
}
|
|
|
|
return done;
|
|
}
|
|
|
|
#endregion Public Methods
|
|
|
|
#region Private Fields
|
|
|
|
/// <summary>
|
|
/// Istanza logger
|
|
/// </summary>
|
|
private NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
|
|
|
#endregion Private Fields
|
|
}
|
|
} |