public static async Task <string> GetMembers(string set, string qexpr, string prevlast) { JavaScriptSerializer jser = new JavaScriptSerializer(); dynamic sobj = jser.DeserializeObject(set) as dynamic; DataContractJsonSerializer ser1 = new DataContractJsonSerializer(typeof(QueryExpresion)); DataContractJsonSerializer ser2 = new DataContractJsonSerializer(typeof(User)); var ser3 = new JavaScriptSerializer(); System.IO.MemoryStream strm = new System.IO.MemoryStream(); byte[] sbf = System.Text.Encoding.UTF8.GetBytes(qexpr); strm.Write(sbf, 0, sbf.Length); strm.Position = 0; var _qexpr = ser1.ReadObject(strm) as QueryExpresion; UserServiceProxy svc = new UserServiceProxy(); UserSet _set = new UserSet(); _set.PageBlockSize = int.Parse(sobj["pageBlockSize"]); _set.PageSize_ = int.Parse(sobj["pageSize"]); if (sobj.ContainsKey("setFilter")) { _set.SetFilter = sobj["setFilter"]; } User _prevlast = null; if (!string.IsNullOrEmpty(prevlast)) { strm = new System.IO.MemoryStream(); sbf = System.Text.Encoding.UTF8.GetBytes(prevlast); strm.Write(sbf, 0, sbf.Length); strm.Position = 0; _prevlast = ser2.ReadObject(strm) as User; } var result = await svc.GetPageItemsAsync(Cntx, _set, _qexpr, _prevlast); var ar = new List <dynamic>(); string appId = ApplicationContext.App.ID; UserAppMemberServiceProxy mbsvc = new UserAppMemberServiceProxy(); foreach (var e in result) { //var membs = svc.MaterializeAllUserAppMembers(Cntx, e); //var memb = (from d in membs where d.ApplicationID == appId select d).SingleOrDefault(); var cond = new UserAppMemberSetConstraints { ApplicationIDWrap = new ForeignKeyData <string> { KeyValue = appId }, UserIDWrap = new ForeignKeyData <string> { KeyValue = e.ID } }; var memb = (await mbsvc.ConstraintQueryAsync(Cntx, new UserAppMemberSet(), cond, null)).SingleOrDefault(); ar.Add(new { data = e, member = memb, hasIcon = memb != null && !string.IsNullOrEmpty(memb.IconMime) }); } string json = ser3.Serialize(ar); return(json); }
public static async Task <string> GetMembers(string nhubId, string userId, string set, string qexpr, string prevlast, bool outgoing) { JavaScriptSerializer jser = new JavaScriptSerializer(); dynamic sobj = jser.DeserializeObject(set) as dynamic; DataContractJsonSerializer ser1 = new DataContractJsonSerializer(typeof(QueryExpresion)); DataContractJsonSerializer ser2 = new DataContractJsonSerializer(typeof(User)); var ser3 = new JavaScriptSerializer(); System.IO.MemoryStream strm = new System.IO.MemoryStream(); byte[] sbf = System.Text.Encoding.UTF8.GetBytes(qexpr); strm.Write(sbf, 0, sbf.Length); strm.Position = 0; var _qexpr = ser1.ReadObject(strm) as QueryExpresion; UserServiceProxy svc = new UserServiceProxy(); UserSet _set = new UserSet(); _set.PageBlockSize = int.Parse(sobj["pageBlockSize"]); _set.PageSize_ = int.Parse(sobj["pageSize"]); if (sobj.ContainsKey("setFilter")) { _set.SetFilter = sobj["setFilter"]; } User _prevlast = null; if (!string.IsNullOrEmpty(prevlast)) { strm = new System.IO.MemoryStream(); sbf = System.Text.Encoding.UTF8.GetBytes(prevlast); strm.Write(sbf, 0, sbf.Length); strm.Position = 0; _prevlast = ser2.ReadObject(strm) as User; } var cntx = Cntx; var result = await svc.GetPageItemsAsync(cntx, _set, _qexpr, _prevlast); var ar = new List <dynamic>(); string appId = ApplicationContext.App.ID; UserAppMemberServiceProxy mbsvc = new UserAppMemberServiceProxy(); MemberCallbackServiceProxy cbsvc = new MemberCallbackServiceProxy(); UserAssociationServiceProxy uasvc = new UserAssociationServiceProxy(); DateTime dt = DateTime.UtcNow.AddMinutes(-ApplicationContext.OnlineUserInactiveTime); foreach (var e in result) { var cond = new UserAppMemberSetConstraints { ApplicationIDWrap = new ForeignKeyData <string> { KeyValue = appId }, UserIDWrap = new ForeignKeyData <string> { KeyValue = e.ID } }; var memb = (await mbsvc.ConstraintQueryAsync(cntx, new UserAppMemberSet(), cond, null)).SingleOrDefault(); bool notify; if (outgoing) { var notifier = await cbsvc.LoadEntityByKeyAsync(cntx, "System", nhubId, appId, e.ID); notify = memb.LastActivityDate > dt && notifier != null && notifier.ConnectionID != null && !notifier.IsDisconnected; } else { notify = false; } var cond2 = new UserAssociationSetConstraints(); if (!outgoing) { cond2.FromUserIDWrap = new ForeignKeyData <string> { KeyValue = userId }; cond2.ToUserIDWrap = new ForeignKeyData <string> { KeyValue = e.ID }; cond2.TypeIDWrap = null; } else { cond2.FromUserIDWrap = new ForeignKeyData <string> { KeyValue = e.ID }; cond2.ToUserIDWrap = new ForeignKeyData <string> { KeyValue = userId }; cond2.TypeIDWrap = null; } var assocs = await uasvc.ConstraintQueryAsync(cntx, new UserAssociationSet(), cond2, null); var a = new { data = e, member = memb, hasIcon = memb != null && !string.IsNullOrEmpty(memb.IconMime), notify = notify, types = new List <int>() }; foreach (var assoc in assocs) { a.types.Add(assoc.TypeID); } ar.Add(a); } string json = ser3.Serialize(ar); return(json); }