Example #1
0
 public PartialFindResult <ActivityEntryForApiContract> GetList(
     DateTime?before                    = null,
     DateTime?since                     = null,
     int?userId                         = null,
     EntryEditEvent?editEvent           = null,
     EntryType entryType                = EntryType.Undefined,
     int maxResults                     = DefaultMax,
     bool getTotalCount                 = false,
     ActivityEntryOptionalFields fields = ActivityEntryOptionalFields.None,
     EntryOptionalFields entryFields    = EntryOptionalFields.None,
     ContentLanguagePreference lang     = ContentLanguagePreference.Default,
     ActivityEntrySortRule sortRule     = ActivityEntrySortRule.CreateDateDescending
     ) => _queries.GetList(before, since, userId, editEvent, entryType, maxResults, getTotalCount, fields, entryFields, lang, sortRule);
 public static IQueryable <ActivityEntry> OrderBy(this IQueryable <ActivityEntry> queryable, ActivityEntrySortRule sortRule) => sortRule switch
 {
Example #3
0
        public PartialFindResult <ActivityEntryForApiContract> GetList(
            DateTime?before                    = null,
            DateTime?since                     = null,
            int?userId                         = null,
            EntryEditEvent?editEvent           = null,
            EntryType entryType                = EntryType.Undefined,
            int maxResults                     = DefaultMax,
            bool getTotalCount                 = false,
            ActivityEntryOptionalFields fields = ActivityEntryOptionalFields.None,
            EntryOptionalFields entryFields    = EntryOptionalFields.None,
            ContentLanguagePreference lang     = ContentLanguagePreference.Default,
            ActivityEntrySortRule sortRule     = ActivityEntrySortRule.CreateDateDescending)
        {
            maxResults = Math.Min(maxResults, AbsoluteMax);

            return(_repository.HandleQuery(ctx =>
            {
                var query = ctx.Query <ActivityEntry>();

                if (before.HasValue && !since.HasValue)
                {
                    query = query.Where(a => a.CreateDate < before.Value);
                }

                if (!before.HasValue && since.HasValue)
                {
                    query = query.Where(a => a.CreateDate > since.Value);
                }

                if (before.HasValue && since.HasValue)
                {
                    query = query.Where(a => a.CreateDate > since.Value && a.CreateDate < before.Value);
                }

                if (userId.HasValue)
                {
                    query = query.Where(a => a.Author.Id == userId.Value);
                }

                if (editEvent.HasValue)
                {
                    query = query.Where(a => a.EditEvent == editEvent.Value);
                }

                if (entryType != EntryType.Undefined)
                {
                    query = query.Where(a => a.EntryType == entryType);
                }

                var activityEntries = query
                                      .OrderBy(sortRule)
                                      .Take(maxResults)
                                      .ToArray()
                                      .Where(a => !a.EntryBase.Deleted)
                                      .Select(a => new ActivityEntryForApiContract(a,
                                                                                   fields.HasFlag(ActivityEntryOptionalFields.Entry) ? _entryForApiContractFactory.Create(a.EntryBase, entryFields, lang) : null,
                                                                                   _userIconFactory, _permissionContext, fields))
                                      .ToArray();

                var count = getTotalCount ? query.Count() : 0;

                return PartialFindResult.Create(activityEntries, count);
            }));
        }