Files
MoonPro.net/MapoDb/AlarmsArchive.cs
Samuele Locatelli 32fb68fa68 CodeMaid:
- Cleanup codice area MapoDb
2022-12-21 15:11:04 +01:00

101 lines
3.2 KiB
C#

using MapoSDK;
using MongoDB.Driver;
using SteamWare;
using System;
using System.Collections.Generic;
namespace MapoDb
{
/// <summary>
/// Classe gestione ALLARMI come eventi speciali (documenti registrati su MongoDb)
/// </summary>
public class AlarmsArchive
{
#region Public Fields
/// <summary>
/// Singleton gestione istanza AlarmsManager
/// </summary>
public static AlarmsArchive man = new AlarmsArchive();
#endregion Public Fields
#region Public Constructors
/// <summary>
/// Classe gestione archivio allarmi
/// </summary>
public AlarmsArchive()
{
database = memLayer.ML.getMongoDatabase("MAPO");
DataLayerObj = new DataLayer();
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Crea una registrazione incidente su MongoDB
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="elencoAllarmi"></param>
/// <param name="lastMinutes">numero di minuti precedenti di dati FluxLog da includere</param>
/// <returns></returns>
public int createAlarmEvent(string idxMacchina, List<alarmData> elencoAllarmi, int lastMinutes)
{
int answ = 0;
string currDateStr = "";
int startYMD = 0;
DateTime adesso = DateTime.Now;
int anno = adesso.Year;
currDateStr = adesso.ToString("yyyyMMdd");
int.TryParse(currDateStr, out startYMD);
// in primis recupero contatore allarmi correnti, lo incremento salvandolo e genero
// nuovo documento...
var collAlarmStats = database.GetCollection<alarmStats>("AlarmStats");
var builderAlarmStat = Builders<alarmStats>.Filter;
var filtThisYear = builderAlarmStat.Eq(u => u.year, anno);
var datiCorrenti = collAlarmStats.Find(filtThisYear);
var collAlarmEvents = database.GetCollection<alarmEvent>("AlarmEvents");
List<rawData> lastFluxLog = new List<rawData>();
DS_applicazione.FluxLogDataTable tabDati = DataLayerObj.taFL.getFiltOrd(idxMacchina, adesso.AddMinutes(-lastMinutes), adesso, true, "");
if (tabDati.Count > 0)
{
// chiamo procedura x conversione
lastFluxLog = FluxArchive.man.convertTable(tabDati, adesso, timeWindow.free);
}
alarmEvent nuovoAllarme = new alarmEvent()
{
yCurr = anno,
yCounter = answ,
dateYMD = startYMD,
started = DateTime.Now,
blackBoxData = lastFluxLog,
activeConditions = elencoAllarmi
};
collAlarmEvents.InsertOne(nuovoAllarme);
return answ;
}
#endregion Public Methods
#region Private Fields
/// <summary>
/// Database corrente MongoDB
/// </summary>
private IMongoDatabase database;
/// <summary>
/// Oggetto privato datalayer
/// </summary>
private DataLayer DataLayerObj;
#endregion Private Fields
}
}