Example #1
0
        public IQueryable <UnverifyLog> GetLogs(UnverifyAuditFilter filter, bool disablePagination = false)
        {
            var query = Context.UnverifyLogs.AsQueryable()
                        .Include(o => o.FromUser)
                        .Include(o => o.ToUser)
                        .Where(o => o.FromUser.GuildID == filter.Guild.Id.ToString() && o.ToUser.GuildID == filter.Guild.Id.ToString());

            if (filter.FromUsers != null)
            {
                var fromUsersIds = filter.FromUsers.Select(o => o.Id.ToString()).ToArray();
                query = query.Where(o => fromUsersIds.Contains(o.FromUser.UserID));
            }

            if (filter.ToUsers != null)
            {
                var toUsersQuery = filter.ToUsers.Select(o => o.Id.ToString()).ToArray();
                query = query.Where(o => toUsersQuery.Contains(o.ToUser.UserID));
            }

            if (filter.Operation != null)
            {
                query = query.Where(o => o.Operation == filter.Operation.Value);
            }

            if (filter.DateTimeFrom != null)
            {
                query = query.Where(o => o.CreatedAt >= filter.DateTimeFrom.Value);
            }

            if (filter.DateTimeTo != null)
            {
                query = query.Where(o => o.CreatedAt < filter.DateTimeTo.Value);
            }

            if (filter.OrderAsc)
            {
                query = query.OrderBy(o => o.ID);
            }
            else
            {
                query = query.OrderByDescending(o => o.ID);
            }

            if (disablePagination)
            {
                return(query);
            }

            return(query
                   .Skip(filter.Skip)
                   .Take(filter.Take));
        }
        public async Task <UnverifyAuditFilter> ConvertAuditFilter(UnverifyAuditFilterFormData formData)
        {
            if (formData.Page < 0)
            {
                formData.Page = 0;
            }

            var result = new UnverifyAuditFilter()
            {
                DateTimeFrom = formData.DateTimeFrom,
                DateTimeTo   = formData.DateTimeTo,
                Guild        = DiscordClient.GetGuild(formData.GuildID),
                Operation    = formData.Operation,
                OrderAsc     = formData.OrderAsc,
                Skip         = (formData.Page == 0 ? 0 : formData.Page - 1) * PageSize,
                Take         = PageSize
            };

            result.FromUsers = await UserSearch.FindUsersAsync(result.Guild, formData.FromUserQuery);

            result.ToUsers = await UserSearch.FindUsersAsync(result.Guild, formData.ToUserQuery);

            return(result);
        }