Implement searching via categories

This commit is contained in:
Stedoss
2022-10-31 23:04:14 +00:00
parent 96f409c8d8
commit 82376af904
7 changed files with 56 additions and 10 deletions

View File

@@ -15,9 +15,10 @@ public class VenueController : ControllerBase
}
[HttpGet]
public async Task<IActionResult> GetAll()
public async Task<IActionResult> GetVenues([FromQuery] string[]? categories = null, [FromQuery] string[]? tags = null)
{
var venues = await _venueService.GetAllVenues();
var venues = await _venueService.GetFilteredVenues(null, categories);
return Ok(venues);
}

View File

@@ -6,4 +6,5 @@ public interface IVenueService
{
public Task<IEnumerable<Venue>> GetAllVenues();
public Task<Venue?> GetVenue(int venueId);
public Task<IEnumerable<Venue>> GetFilteredVenues(string[]? tags = null, string[]? categories = null);
}

View File

@@ -29,4 +29,21 @@ public class VenueService : IVenueService
.Include(v => v.Tags)
.SingleOrDefaultAsync(v => v.Id == venueId);
}
public async Task<IEnumerable<Venue>> GetFilteredVenues(string[]? tags = null, string[]? categories = null)
{
var venues = _context.Venues
.Include(v => v.Category)
.Include(v => v.Tags);
IQueryable<Venue> filteredVenues = venues;
if (categories is { Length: > 0 })
{
filteredVenues = venues.Where(v => categories.Contains(v.Category.Name));
}
return await filteredVenues.ToListAsync();
}
}