/// <summary> /// Get data collectors. /// </summary> /// <param name="request"></param> /// <returns></returns> public GXDataCollectorsResponse Post(GXDataCollectorsRequest request) { lock (Db) { IAuthSession s = this.GetSession(false); long id = 0; List <GXAmiDataCollector> list = new List <GXAmiDataCollector>(); if (long.TryParse(s.Id, out id)) { if (request.DataCollectorId != 0) { list = Db.Select <GXAmiDataCollector>(q => q.Id == request.DataCollectorId); } //Return all unassigned data controllers. else if (request.UnAssigned) { string query = string.Format("SELECT * FROM {0} WHERE Removed IS NULL AND UnAssigned = TRUE", GuruxAMI.Server.AppHost.GetTableName <GXAmiDataCollector>(Db)); list = Db.Select <GXAmiDataCollector>(query); } //Return all data controllers that Device can access. else if (request.DeviceId != 0) { list = GetDataCollectorsByDevice(s, Db, request.DeviceId, 0, request.Removed); } //Return all data controllers by mac address. else if (request.MacAddress != null) { list = Db.Select <GXAmiDataCollector>(q => q.MAC == MacToString(request.MacAddress).Replace(":", "")); } else if (request.IPAddress != null) { list = Db.Select <GXAmiDataCollector>(q => q.IP == request.IPAddress); } else if (request.Guid != Guid.Empty) { list = Db.Select <GXAmiDataCollector>(q => q.Guid == request.Guid); } else //Return all data contollers that user can access. { list = GetDataCollectorsByUser(s, Db, request.UserId, 0, request.Removed, null, SearchOperator.None, SearchType.All); } } else //DC asks available DCs. { list = Db.Select <GXAmiDataCollector>(q => q.Guid == new Guid(s.UserAuthName)); } //Remove excluded data collectors. if (request.Excluded != null && request.Excluded.Length != 0) { List <ulong> ids = new List <ulong>(request.Excluded); var excludeUserGroups = from c in list where !ids.Contains(c.Id) select c; list = excludeUserGroups.ToList(); } //Get data collectors by range. if (request.Index != 0 || request.Count != 0) { if (request.Count == 0 || request.Index + request.Count > list.Count) { request.Count = list.Count - request.Index; } list.RemoveRange(0, request.Index); var limitUserGroups = list.Take(request.Count); list = limitUserGroups.ToList(); } //Change date time from Universal time to local time foreach (GXAmiDataCollector it in list) { if (it.LastRequestTimeStamp.HasValue) { it.LastRequestTimeStamp = it.LastRequestTimeStamp.Value.ToLocalTime(); } } return(new GXDataCollectorsResponse(list.ToArray())); } }
/// <summary> /// Get data collectors. /// </summary> /// <param name="request"></param> /// <returns></returns> public GXDataCollectorsResponse Post(GXDataCollectorsRequest request) { lock (Db) { IAuthSession s = this.GetSession(false); long id = 0; List<GXAmiDataCollector> list = new List<GXAmiDataCollector>(); if (long.TryParse(s.Id, out id)) { if (request.DataCollectorId != 0) { list = Db.Select<GXAmiDataCollector>(q => q.Id == request.DataCollectorId); } //Return all unassigned data controllers. else if (request.UnAssigned) { string query = string.Format("SELECT * FROM {0} WHERE Removed IS NULL AND UnAssigned = TRUE", GuruxAMI.Server.AppHost.GetTableName<GXAmiDataCollector>(Db)); list = Db.Select<GXAmiDataCollector>(query); } //Return all data controllers that Device can access. else if (request.DeviceId != 0) { list = GetDataCollectorsByDevice(s, Db, request.DeviceId, 0, request.Removed); } //Return all data controllers by mac address. else if (request.MacAddress != null) { list = Db.Select<GXAmiDataCollector>(q => q.MAC == MacToString(request.MacAddress).Replace(":", "")); } else if (request.IPAddress != null) { list = Db.Select<GXAmiDataCollector>(q => q.IP == request.IPAddress); } else if (request.Guid != Guid.Empty) { list = Db.Select<GXAmiDataCollector>(q => q.Guid == request.Guid); } else //Return all data contollers that user can access. { list = GetDataCollectorsByUser(s, Db, request.UserId, 0, request.Removed, null, SearchOperator.None, SearchType.All); } } else //DC asks available DCs. { list = Db.Select<GXAmiDataCollector>(q => q.Guid == new Guid(s.UserAuthName)); } //Remove excluded data collectors. if (request.Excluded != null && request.Excluded.Length != 0) { List<ulong> ids = new List<ulong>(request.Excluded); var excludeUserGroups = from c in list where !ids.Contains(c.Id) select c; list = excludeUserGroups.ToList(); } //Get data collectors by range. if (request.Index != 0 || request.Count != 0) { if (request.Count == 0 || request.Index + request.Count > list.Count) { request.Count = list.Count - request.Index; } list.RemoveRange(0, request.Index); var limitUserGroups = list.Take(request.Count); list = limitUserGroups.ToList(); } //Change date time from Universal time to local time foreach (GXAmiDataCollector it in list) { if (it.LastRequestTimeStamp.HasValue) { it.LastRequestTimeStamp = it.LastRequestTimeStamp.Value.ToLocalTime(); } } return new GXDataCollectorsResponse(list.ToArray()); } }