public override JSONObject GetResponse(System.Collections.Generic.Dictionary <string, string[]> requestAttributes) { bool _parseSuccess = true; DateTimeStamp _startDate = DateTimeStamp.MinValue; DateTimeStamp _endDate = DateTimeStamp.MaxValue; List <string> _tempSensorNames = new List <string> (); List <DeviceType> _tempSensorTypes = new List <DeviceType> (); StringBuilder sb = new StringBuilder(); if (requestAttributes.ContainsKey("start")) { if (!DateTimeStamp.TryParse(requestAttributes["start"].FirstOrDefault(), out _startDate)) { _parseSuccess = false; } if (sb.Length > 0) { sb.Append(" AND "); } sb.Append(string.Format("TimeStamp >= '{0}'", _startDate.ToString())); //'2015-03-09 09:38:00' } if (requestAttributes.ContainsKey("end")) { if (!DateTimeStamp.TryParse(requestAttributes["end"].FirstOrDefault(), out _endDate)) { _parseSuccess = false; } if (sb.Length > 0) { sb.Append(" AND "); } sb.Append(string.Format("TimeStamp <= '{0}'", _endDate.ToString())); } if (requestAttributes.ContainsKey("name")) { bool firstName = true; var nameList = requestAttributes ["name"]; //.FirstOrDefault().Split ("|".ToCharArray ()); if (nameList.Count() > 0) { if (sb.Length > 0) { sb.Append(" AND "); } sb.Append("DeviceMapID in (select ID from DeviceMap where "); foreach (string name in nameList) { if (firstName) { firstName = false; } else { sb.Append(" OR "); } sb.Append(string.Format("DeviceKey = '{0}'", name)); } sb.Append(")"); } } if (requestAttributes.ContainsKey("type")) { bool firstType = true; var typeList = requestAttributes["type"]; if (typeList.Count() > 0) { if (sb.Length > 0) { sb.Append(" AND "); } sb.Append("DeviceMapID in (select ID from DeviceMap where DeviceType in ("); foreach (string devType in typeList) //typeList) { { DeviceType t = DeviceType.Temperature; try { if (!Enum.TryParse <DeviceType> (devType, out t)) { t = (DeviceType)int.Parse(devType); } if (firstType) { firstType = false; } else { sb.Append(", "); } sb.Append(((int)t).ToString()); } catch { } } sb.Append("))"); } } var conn = ORM.CreateConnection(); JSONObject resp = null; try { conn.Open(); var logs = ORM.Select <DeviceLog> ("DeviceLog", sb.ToString(), ref conn); var maps = ORM.Select <DeviceMap> ("DeviceMap", string.Format("ID in (select distinct DeviceMapID from DeviceLog where {0})", sb.ToString())); if (requestAttributes.ContainsKey("csv") && requestAttributes["csv"][0].Trim().ToUpper() == "TRUE") { resp = new CSVDeviceResponse(logs, maps); } else { resp = new ChartJSGraphDevResponse(logs, maps); } } catch (Exception ex) { LogWriter.WriteLog(string.Format("An error was encountered wile attempting to get temperature logs for the filter '{0}'", sb.ToString()), ex); } conn.Close(); if (!_parseSuccess) { return(null); } else { return(resp); } }
public override string ToJSON() { MemoryStream str = new MemoryStream(); StreamWriter tw = new StreamWriter(str); JsonTextWriter w = new JsonTextWriter(tw); StreamReader rdr; List <string> dateResult = Values.SelectMany(v => v.Value.Select(v2 => v2.TimeStamp.ToString())).ToList(); dateResult = dateResult.OrderBy(d => d).Distinct().ToList(); w.WriteStartObject(); w.WritePropertyName("labels"); w.WriteStartArray(); foreach (string dateVal in dateResult) { DateTimeStamp dtstamp = DateTimeStamp.Parse(dateVal); w.WriteValue(string.Format("{0}", dtstamp.ToStandardString())); } w.WriteEndArray(); w.WritePropertyName("datasets"); w.WriteStartArray(); int colorIncrementer = 0; foreach (var key in Values.Keys) { w.WriteStartObject(); w.WritePropertyName("label"); w.WriteValue(string.Format("{0}", key.Name)); w.WritePropertyName("fillColor"); w.WriteValue(GetArgb(colorIncrementer, 0.2f)); w.WritePropertyName("strokeColor"); w.WriteValue(GetArgb(colorIncrementer, 0.7f)); w.WritePropertyName("pointColor"); w.WriteValue(GetArgb(colorIncrementer, 1.0f)); w.WritePropertyName("data"); w.WriteStartArray(); foreach (string dt in dateResult) { var DevLog = Values[key].Where(v => v.TimeStamp.ToString() == dt).FirstOrDefault(); string value = null; if (DevLog != null) { value = DevLog.Value; } w.WriteValue(value); } w.WriteEndArray(); w.WriteEndObject(); colorIncrementer++; } w.WriteEndArray(); w.WriteEndObject(); w.Flush(); str.Flush(); str.Position = 0; rdr = new StreamReader(str); return(rdr.ReadToEnd()); }