private static void CloseAlarm(AlarmThreadManagerAlarm alarm, double value, int reason) { try { var dt2 = DateTime.Now; var dts2 = dt2.ToString(DtFormat); var rawVal = value.ToString().Replace(',', '.'); var alarmtab = context.Alarms.FirstOrDefault(u => u.Id == alarm.Id); //MyDB.sql_query_local("update alarms set ERes=" + reason + ", ETime='" + dts2 + "', EVal=" + rawVal + " WHERE Id=" + alarm.Id + ";"); if (alarmtab != null) { alarmtab.ERes = reason; alarmtab.ETime = dt2; alarmtab.EVal = (float)value; context.SaveChanges(); alarm.ERes = reason; alarm.ETime = dt2; alarm.EVal = value; } logger.Logged("Info", "close alarm [" + alarm.TagId + "][" + reason + "] to alarmserver...", "AlarmThreadManager", "CloseAlarm"); } catch (Exception ex) { logger.Logged("Error", "close alarm [" + alarm.TagId + "][" + reason + "] failed...", "AlarmThreadManager", "CloseAlarm"); } }
private static void OpenAlarm(AlarmThreadManagerConfig alarmConfig, double value, int reason) { var dateTime = DateTime.Now; var dateTimeString = dateTime.ToString(DtFormat); // Добавляем тревогу в базу. var rawVal = value.ToString().Replace(',', '.'); var sysUser = context.Alarms.Create(); sysUser.TagId = alarmConfig.TagId; sysUser.SRes = reason; sysUser.STime = dateTime; sysUser.SVal = (float)value; sysUser.ERes = -10; logger.Logged("Info", "Add Alarm [tag:" + alarmConfig.Tag + ";sval:" + sysUser.SVal + "; STime:" + dateTime + " ]...", "AlarmThreadManager", "LoadAlarmsLastStates"); context.Alarms.Add(sysUser); // сохраняем context.SaveChanges(); //MyDB.sql_query_local("insert into alarms (Tag, SRes, STime, SVal, ERes) values('" + alarmConfig.Tag + "'," + reason + ",'" + dateTimeString + "', " + rawVal + ", -10);"); //var qres2 = MyDB.sql_query_local("select id from alarms where tag='" + alarmConfig.Tag + "' and STime='" + dateTimeString + "'"); //int tid = -1; //if (qres2.count_rows > 0) // tid = Convert.ToInt32(qres2.GetValue(0, 0)); var z = (from ti in context.Alarms where ti.TagId == alarmConfig.TagId //&& ti.STime == dateTime orderby ti.STime descending select ti.Id); // from al context.Alarms .Where(d => d.TagId == alarmConfig.TagId && d.STime == dateTime).ToList(); var id = z.ToList();// Создадим тревогу чтобы не дергать каждый раз базу. var result = new AlarmThreadManagerAlarm { Id = id.First(), TagId = alarmConfig.TagId, SRes = reason, STime = dateTime, SVal = value, Qted = null, ERes = -10, ETime = DateTime.MinValue }; _alarms.Add(result); logger.Logged("Info", "add alarm [" + alarmConfig.TagId + "][" + reason + "] to alarmserver...", "AlarmThreadManager", "OpenAlarm"); }