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); }