/// <summary> /// Method to get alarms async for notifications /// </summary> /// <param name="DB">db name</param> /// <param name="count">count of alarms that you want to select</param> /// <param name="ids"></param> /// <returns></returns> public async Task <List <AlarmGraphData> > SelectAlarms(string DB, long pktimeFrom, long pkTimeTo, int plcID = 1) { int i = 0; string sql = string.Empty; string whereIds = string.Empty; List <AlarmGraphData> alarms = new List <AlarmGraphData>(); List <alarm_texts> titles = SelectAlarmsTexts(DB, null, plcID); string connstring = String.Format("Server={0};Port={1};User Id={2};Password={3};Database={4};", "192.168.2.12", 5432, "postgres", "Nordit0276", DB); NpgsqlConnection conn = new NpgsqlConnection(connstring); sql = string.Format("SELECT * FROM alarm_history WHERE (origin_pktime BETWEEN {0} AND {1}) AND plc_id={2} ORDER BY origin_pktime ASC", pktimeFrom, pkTimeTo, plcID); conn.Open(); NpgsqlCommand cmd = new NpgsqlCommand(sql, conn); //Prepare DataReader System.Data.Common.DbDataReader dr = await cmd.ExecuteReaderAsync(); while (await dr.ReadAsync()) { AlarmGraphData alarm = new AlarmGraphData(); alarm.id = short.Parse(dr["alarm_id"].ToString()); // alarm.id++; int id = alarm.id; //small improvment beacause alarm_id in table alarm_texts and alarm_id in table alarm_history are bind if (titles.Exists(p => (p.id) == id)) { alarm.title = titles.First(p => p.id == id && p.plcID == plcID).title; } else { alarm.title = "Title does not match with any of alarm id in texts and in db. DB id:" + id; } int originTime = int.Parse(dr["origin_pktime"].ToString()); int expTime = Int32.Parse(dr["expiry_pktime"].ToString()); alarm.originTime = originTime; alarm.expiryTime = expTime; alarms.Add(alarm); i++; } conn.Close(); return(alarms); }
public async Task <JsonResult> getAlarmsData() { try { StreamReader stream = new StreamReader(Request.InputStream); string json = stream.ReadToEnd(); DataRequest dataRequest = new JavaScriptSerializer().Deserialize <DataRequest>(json); string DB = string.Empty; string table = string.Empty; int plcID = 1; foreach (string key in Session.Keys) { if (key.Contains("plcID") && key.Contains(Request.QueryString["plc"].ToString())) { plcID = (int)Session[key]; } if (key.Contains("dbName") && key.Contains(Request.QueryString["plc"].ToString())) { DB = Session[key].ToString(); } if (key.Contains("tableName") && key.Contains(Request.QueryString["plc"].ToString())) { table = Session[key].ToString(); } } List <AlarmGraphData> data = new List <AlarmGraphData>(); AlarmHelper AH = new AlarmHelper(); data = await AH.SelectAlarms(DB, dataRequest.beginTime, dataRequest.beginTime + dataRequest.timeAxisLength, plcID); return(Json(data)); } catch (Exception e) { List <AlarmGraphData> data = new List <AlarmGraphData>(); AlarmGraphData mesData = new AlarmGraphData(); mesData.title = e.Message.ToString(); data.Add(mesData); AlarmGraphData source = new AlarmGraphData(); source.title = e.Source.ToString(); data.Add(source); return(Json(data)); } }