public static async Task<List<MemberNotificationType>> GetRecentCategorized(string userId, SimpleMessage[] msgs, int? typeId, int max) { var cntx = Cntx; MembershipPlusServiceProxy svc = new MembershipPlusServiceProxy(); MemberNotificationTypeServiceProxy tsvc = new MemberNotificationTypeServiceProxy(); MemberNotificationServiceProxy nsvc = new MemberNotificationServiceProxy(); var categs = await tsvc.QueryDatabaseAsync(cntx, new MemberNotificationTypeSet(), null); List<MemberNotificationType> tlist = new List<MemberNotificationType>(); DateTime dt = DateTime.UtcNow.AddDays(-1); foreach (var categ in categs) { if (typeId.HasValue && categ.ID != typeId.Value) continue; var cond = new MemberNotificationSetConstraints { ApplicationIDWrap = new ForeignKeyData<string> { KeyValue = AppId }, UserIDWrap = new ForeignKeyData<string> { KeyValue = userId }, TypeIDWrap = new ForeignKeyData<int> { KeyValue = categ.ID } }; QueryExpresion qexpr = new QueryExpresion(); qexpr.OrderTks = new List<QToken>(new QToken[] { new QToken { TkName = "PriorityLevel" }, new QToken { TkName = "desc" }, new QToken { TkName = "CreatedDate" }, new QToken { TkName = "desc" } }); qexpr.FilterTks = new List<QToken>(new QToken[] { new QToken { TkName = "ReadCount == 0 && CreatedDate >= " + svc.FormatRepoDateTime(dt) } }); foreach (var msg in msgs) { qexpr.FilterTks.Add(new QToken { TkName = " && ID != \"" + msg.Id + "\"" }); } var list = (await nsvc.ConstraintQueryLimitedAsync(cntx, new MemberNotificationSet(), cond, qexpr, max)).ToList(); if (list.Count > 0) { categ.ChangedMemberNotifications = list.ToArray(); tlist.Add(categ); } } return tlist; }
/// <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(MemberNotificationSetConstraints constraints) { return(ApplicationIDWrap.KeyValue == constraints.ApplicationIDWrap.KeyValue && TypeIDWrap.KeyValue == constraints.TypeIDWrap.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(MemberNotificationSetConstraints constraints) { return ApplicationIDWrap.KeyValue == constraints.ApplicationIDWrap.KeyValue && TypeIDWrap.KeyValue == constraints.TypeIDWrap.KeyValue && UserIDWrap.KeyValue == constraints.UserIDWrap.KeyValue; }