Added multiple qol imporvements
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user