/// <summary> /// Is it the same as the input one /// </summary> /// <param name="constraints">The one to be compared with.</param> /// <returns></returns> public bool IsTheSameAs(UserGroupMemberSetConstraints constraints) { return UserGroupIDWrap.KeyValue == constraints.UserGroupIDWrap.KeyValue && UserIDWrap.KeyValue == constraints.UserIDWrap.KeyValue; }
/// <summary> /// Is it the same as the input one /// </summary> /// <param name="constraints">The one to be compared with.</param> /// <returns></returns> public bool IsTheSameAs(UserGroupMemberSetConstraints constraints) { return(UserGroupIDWrap.KeyValue == constraints.UserGroupIDWrap.KeyValue && UserIDWrap.KeyValue == constraints.UserIDWrap.KeyValue); }
public static async Task<ShotMessageNotice> UpdateUserMessage(string noticeHubId, string chatHubId, string userId, string groupId, string msgId, string message) { var cntx = Cntx; UserGroupServiceProxy gsvc = new UserGroupServiceProxy(); var g = await gsvc.LoadEntityByKeyAsync(cntx, groupId); ShortMessageServiceProxy msvc = new ShortMessageServiceProxy(); var msg = await msvc.LoadEntityByKeyAsync(cntx, msgId); if (msg == null || msg.FromID != userId) return null; if (msg.MsgText == message) return null; var now = DateTime.UtcNow; msg.MsgTitle = GetLeadText(message); msg.MsgText = message; msg.LastModified = now; await msvc.AddOrUpdateEntitiesAsync(cntx, new ShortMessageSet(), new ShortMessage[] { msg }); UserServiceProxy usvc = new UserServiceProxy(); var u = await usvc.LoadEntityByKeyAsync(cntx, userId); msg.User_FromID = u; UserGroupMemberServiceProxy gmsvc = new UserGroupMemberServiceProxy(); var cond = new UserGroupMemberSetConstraints { UserGroupIDWrap = new ForeignKeyData<string> { KeyValue = groupId } }; var qexpr = new QueryExpresion(); qexpr.OrderTks = new List<QToken>(new QToken[] { new QToken { TkName = "UserID" } }); qexpr.FilterTks = new List<QToken>(new QToken[] { new QToken { TkName = "SubscribedTo is not null && SubscribedTo == true" } }); var gmbs = await gmsvc.ConstraintQueryAsync(cntx, new UserGroupMemberSet(), cond, qexpr); List<MemberNotification> notices = new List<MemberNotification>(); List<MemberCallback> noteCbks = new List<MemberCallback>(); MemberCallbackServiceProxy mcbsvc = new MemberCallbackServiceProxy(); string noticeMsg = "Group message by " + u.Username + " updated in " + g.DistinctString; MemberNotificationTypeServiceProxy ntsvc = new MemberNotificationTypeServiceProxy(); var ntype = await ntsvc.LoadEntityByKeyAsync(cntx, ApplicationContext.NewMessageNoticeTypeId); foreach (var m in gmbs) { if (m.ActivityNotification.HasValue && m.ActivityNotification.Value) { var cb = await mcbsvc.LoadEntityByKeyAsync(cntx, groupId, noticeHubId, AppId, m.UserID); if (cb.ConnectionID != null && !cb.IsDisconnected) { cb.UserAppMemberRef = await mcbsvc.MaterializeUserAppMemberRefAsync(cntx, cb); noteCbks.Add(cb); } } notices.Add(new MemberNotification { ID = Guid.NewGuid().ToString(), Title = noticeMsg, CreatedDate = now, PriorityLevel = 0, ReadCount = 0, ApplicationID = AppId, TypeID = ApplicationContext.NewMessageNoticeTypeId, UserID = userId }); } var peers = await ListConnectIds(chatHubId, groupId); List<ShortMessageAudience> laud = new List<ShortMessageAudience>(); foreach (var peer in peers) { if (peer.UserID != userId) { var a = new ShortMessageAudience { MsgID = msg.ID, UserID = peer.UserID, VoteCount = 0 }; laud.Add(a); } } if (laud.Count > 0) { ShortMessageAudienceServiceProxy audsvc = new ShortMessageAudienceServiceProxy(); await audsvc.AddOrUpdateEntitiesAsync(cntx, new ShortMessageAudienceSet(), laud.ToArray()); } if (notices.Count > 0) { MemberNotificationServiceProxy nsvc = new MemberNotificationServiceProxy(); await nsvc.AddOrUpdateEntitiesAsync(cntx, new MemberNotificationSet(), notices.ToArray()); } return new ShotMessageNotice { msg = GetJsonMessage(msg, userId, g, false), brief = noticeMsg, categ = ntype, peers = peers, callbacks = noteCbks }; }