@using Groceries.Data @using Microsoft.EntityFrameworkCore @layout Layout @inject AppDbContext DbContext @inject NavigationManager Navigation @inject IHttpContextAccessor HttpContextAccessor Groceries – Stores

Stores

New store
@foreach (var store in stores) { }
Retailer Name Transactions
@store.Retailer @store.Name @store.TransactionsCount Edit
@code { [SupplyParameterFromQuery] public int? Page { get; set; } [SupplyParameterFromQuery] public string? Search { get; set; } private record StoreModel(Guid Id, string Retailer, string Name, int TransactionsCount); private ListPageModel stores = ListPageModel.Empty(); protected override async Task OnParametersSetAsync() { var storesQuery = DbContext.Stores.AsQueryable(); if (!string.IsNullOrEmpty(Search)) { var searchPattern = $"%{Search}%"; storesQuery = storesQuery.Where(store => EF.Functions.ILike(store.Retailer!.Name + ' ' + store.Name, searchPattern)); } stores = await storesQuery .OrderBy(store => store.Retailer!.Name) .ThenBy(store => store.Name) .Select(store => new StoreModel(store.Id, store.Retailer!.Name, store.Name, store.Transactions!.Count())) .ToListPageModelAsync(Page.GetValueOrDefault(), cancellationToken: HttpContextAccessor.HttpContext!.RequestAborted); if (stores.Page != Page) { Navigation.NavigateTo(Navigation.GetUriWithQueryParameter("page", stores.Page)); } } }