/// <summary> /// Data Collector or devices add new trace. Traces can't update. /// </summary> public GXTraceAddResponse Post(GXTraceAddRequest request) { List <GXEventsItem> events = new List <GXEventsItem>(); lock (Db) { foreach (GXAmiTrace it in request.Traces) { //If DC is adding trace. if (it.DeviceId == 0) { IAuthSession s = this.GetSession(false); Guid guid; if (!GuruxAMI.Server.GXBasicAuthProvider.IsGuid(s.Id, out guid)) { throw new ArgumentException("Access denied."); } List <GXAmiDataCollector> list = Db.Select <GXAmiDataCollector>(q => q.Guid == guid); if (list.Count != 1) { throw new ArgumentException("Access denied."); } it.DataCollectorId = list[0].Id; it.DataCollectorGuid = guid; } it.Timestamp = DateTime.Now; Db.Insert(it); #if !SS4 it.Id = (ulong)Db.GetLastInsertId(); #else it.Id = (ulong)Db.LastInsertId(); #endif it.DataType = it.Data.GetType().FullName; string data; if (it.Data is byte[]) { data = BitConverter.ToString(it.Data as byte[]); } else { data = it.Data.ToString(); } string[] tmp = SplitByLength(data, 255); int index = 0; //If there is only one row set index to 0, otherwice start index from One. if (tmp.Length == 1) { index = -1; } foreach (string str in tmp) { GXAmiTraceData d = new GXAmiTraceData(); d.Index = ++index; d.TraceId = it.Id; d.Data = str; Db.Insert(d); } events.Add(new GXEventsItem(ActionTargets.Trace, Actions.Add, it)); } } AppHost host = this.ResolveService <AppHost>(); host.SetEvents(Db, this.Request, 0, events); return(new GXTraceAddResponse()); }
/// <summary> /// Data Collector or devices add new trace. Traces can't update. /// </summary> public GXTraceAddResponse Post(GXTraceAddRequest request) { List<GXEventsItem> events = new List<GXEventsItem>(); lock (Db) { foreach (GXAmiTrace it in request.Traces) { //If DC is adding trace. if (it.DeviceId == 0) { IAuthSession s = this.GetSession(false); Guid guid; if (!GuruxAMI.Server.GXBasicAuthProvider.IsGuid(s.Id, out guid)) { throw new ArgumentException("Access denied."); } List<GXAmiDataCollector> list = Db.Select<GXAmiDataCollector>(q => q.Guid == guid); if (list.Count != 1) { throw new ArgumentException("Access denied."); } it.DataCollectorId = list[0].Id; it.DataCollectorGuid = guid; } it.Timestamp = DateTime.Now; Db.Insert(it); #if !SS4 it.Id = (ulong)Db.GetLastInsertId(); #else it.Id = (ulong)Db.LastInsertId(); #endif it.DataType = it.Data.GetType().FullName; string data; if (it.Data is byte[]) { data = BitConverter.ToString(it.Data as byte[]); } else { data = it.Data.ToString(); } string[] tmp = SplitByLength(data, 255); int index = 0; //If there is only one row set index to 0, otherwice start index from One. if (tmp.Length == 1) { index = -1; } foreach (string str in tmp) { GXAmiTraceData d = new GXAmiTraceData(); d.Index = ++index; d.TraceId = it.Id; d.Data = str; Db.Insert(d); } events.Add(new GXEventsItem(ActionTargets.Trace, Actions.Add, it)); } } AppHost host = this.ResolveService<AppHost>(); host.SetEvents(Db, this.Request, 0, events); return new GXTraceAddResponse(); }