using MapoSDK; using MongoDB.Driver; using SteamWare; using System; using System.Collections.Generic; namespace MapoDb { /// /// Classe gestione ALLARMI coem eventi speciali (documenti registrati su MongoDb) /// public class AlarmsArchive { #if false string mdbConnString = "mongodb://W2019-MONGODB:27017"; //string mdbConnString = "mongodb://localhost:27017"; MongoClient client; #endif /// /// Database corrente MongoDB /// IMongoDatabase database; /// /// Classe gestione archivio allarmi /// public AlarmsArchive() { #if false // rifare avvio con lettura da web.config... client = new MongoClient(mdbConnString); database = client.GetDatabase("MAPO"); #endif database = memLayer.ML.getMongoDatabase("MAPO"); } /// /// Singleton gestione istanza AlarmsManager /// public static AlarmsArchive man = new AlarmsArchive(); /// /// Crea una registrazione incidente su MongoDB /// /// /// /// numero di minuti precedenti di dati FluxLog da includere /// public int createAlarmEvent(string idxMacchina, List 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"); var builderAlarmStat = Builders.Filter; var filtThisYear = builderAlarmStat.Eq(u => u.year, anno); var datiCorrenti = collAlarmStats.Find(filtThisYear); var collAlarmEvents = database.GetCollection("AlarmEvents"); List lastFluxLog = new List(); DS_applicazione.FluxLogDataTable tabDati = DataLayer.obj.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; } } }