@using Groceries.Data @using Microsoft.EntityFrameworkCore @model TransactionItem? @inject AppDbContext dbContext @{ var items = await dbContext.Items .OrderBy(item => item.Brand) .ThenBy(item => item.Name) .GroupJoin( dbContext.ItemPurchases.Where(purchase => purchase.IsLastPurchase), item => item.Id, lastPurchase => lastPurchase.ItemId, (item, lastPurchase) => new { item, lastPurchase }) .SelectMany( group => group.lastPurchase.DefaultIfEmpty(), (group, lastPurchase) => new { group.item.Id, group.item.Brand, group.item.Name, Price = lastPurchase != null ? lastPurchase.Price : (decimal?)null, Quantity = lastPurchase != null ? lastPurchase.Quantity : (int?)null, }) .ToArrayAsync(); var selectedItem = items.SingleOrDefault(item => item.Id == Model?.ItemId); var barcode = Model?.Item?.Barcodes.FirstOrDefault(); var price = Model?.Price >= 0 ? Model.Price : selectedItem?.Price; var quantity = Model?.Quantity >= 1 ? Model.Quantity : (selectedItem?.Quantity ?? 1); }
Item
@foreach (var item in items.DistinctBy(item => item.Brand)) { @foreach (var item in items) {
@*@CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol*@