private static HqlProjectionQuery BuildInboxQuery(Notebox notebox, INoteboxQueryContext nqc, bool countQuery) { var query = GetBaseQuery(nqc, countQuery, "np", typeof(NotePosting), InboxItemProjection, InboxItemsJoins); var or = new HqlOr(); foreach (var criteria in notebox.GetInvariantCriteria(nqc)) { var and = new HqlAnd(); and.Conditions.Add(new HqlCondition("np.IsAcknowledged = ?", criteria.IsAcknowledged)); if (criteria.SentToMe) { and.Conditions.Add(new HqlCondition("np.Recipient = ?", nqc.Staff)); } if (criteria.SentToGroupIncludingMe) { and.Conditions.Add(new HqlCondition("np.Recipient = ?", nqc.StaffGroup)); } or.Conditions.Add(and); } query.Conditions.Add(or); //query.Conditions.Add(ConditionMostRecentNote); if (!countQuery) { query.Sorts.AddRange(InboxItemOrdering); } return(query); }
/// <summary> /// Adds the specified criteria to the specified query, pre-pending the specified qualifier. /// </summary> /// <param name="qualifier"></param> /// <param name="criteria"></param> /// <param name="query"></param> /// <param name="remapHqlExprFunction"></param> /// <remarks> /// All HQL dot expressions are passed through the <paramref name="remapHqlExprFunction"/>, allowing the expression /// to be modified prior to be added to the query. /// </remarks> public static void AddCriteriaToQuery(string qualifier, WorklistItemSearchCriteria[] criteria, HqlProjectionQuery query, Converter <string, string> remapHqlExprFunction) { var or = new HqlOr(); foreach (var c in criteria) { if (c.IsEmpty) { continue; } var conditions = HqlCondition.FromSearchCriteria(qualifier, c, remapHqlExprFunction); var and = new HqlAnd(conditions); if (and.Conditions.Count > 0) { or.Conditions.Add(and); } } if (or.Conditions.Count > 0) { query.Conditions.Add(or); } }
private static void AddStaffGroupConditions(HqlProjectionQuery query, StaffGroup staffGroup) { query.Froms.Add(new HqlFrom("StaffGroup", "sg")); query.Conditions.Add(new HqlCondition("sg = ?", staffGroup)); var staffGroupOr = new HqlOr(); staffGroupOr.Conditions.Add(new HqlCondition("sg in elements(w.GroupSubscribers)")); query.Conditions.Add(staffGroupOr); }
private static void AddClassConditions(HqlProjectionQuery query, IEnumerable <string> worklistClassNames) { var classOr = new HqlOr(); foreach (var className in worklistClassNames) { classOr.Conditions.Add(new HqlCondition("w.class = " + className)); } query.Conditions.Add(classOr); }
private static void AddStaffConditions(HqlProjectionQuery query, Staff staff) { query.Froms.Add(new HqlFrom("Staff", "s")); query.Conditions.Add(new HqlCondition("s = ?", staff)); var staffOr = new HqlOr(); staffOr.Conditions.Add(new HqlCondition("s in elements(w.StaffSubscribers)")); staffOr.Conditions.Add(new HqlCondition("s in (select elements(sg.Members) from StaffGroup sg where sg in elements(w.GroupSubscribers))")); query.Conditions.Add(staffOr); }