Example #1
0
        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);
            }
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }