Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        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));
            }
        }