Added multiple qol imporvements

This commit is contained in:
2026-01-23 20:32:55 +01:00
parent dd1cfc15e5
commit cf24691b5e
8 changed files with 130 additions and 13 deletions

View File

@@ -6,22 +6,48 @@ namespace SpotiParty.Web.Services;
public class EventsDashboardRepo(DatabaseContext context, DashboardAuthHandler handler, IDbContextFactory<DatabaseContext> factory) : IHopFrameRepository<Event, Guid> {
public bool ShowAllEvents { get; set; } = false;
public async Task<IEnumerable<Event>> LoadPage(int page, int perPage) {
var user = await handler.GetCurrentUser();
if (user is null) return [];
return await context.Events
IQueryable<Event> baseQuery = context.Events
.Include(e => e.Host)
.OrderBy(e => e.Id)
.Where(e => e.Host.UserId == user.UserId)
.OrderBy(e => e.Id);
if (!ShowAllEvents) {
baseQuery = baseQuery.Where(e => e.Host.UserId == user.UserId);
}
return await baseQuery
.Skip(page * perPage)
.Take(perPage)
.ToListAsync();
}
public async Task<SearchResult<Event>> Search(string searchTerm, int page, int perPage) {
var entries = await LoadPage(page, perPage);
return new(entries, await GetTotalPageCount(perPage));
var user = await handler.GetCurrentUser();
if (user is null) return new(Enumerable.Empty<Event>(), 0);
IQueryable<Event> baseQuery = context.Events
.Include(e => e.Host)
.OrderBy(e => e.Id);
if (!ShowAllEvents) {
baseQuery = baseQuery.Where(e => e.Host.UserId == user.UserId);
}
baseQuery = baseQuery
.Where(e => e.Name.ToLower().Contains(searchTerm.ToLower()));
var totalEntries = await baseQuery.CountAsync();
var entries = await baseQuery
.Skip(page * perPage)
.Take(perPage)
.ToListAsync();
return new(entries, (int)Math.Ceiling(totalEntries / (double)perPage));
}
public async Task<int> GetTotalPageCount(int perPage) {