@using Groceries.Data @using Microsoft.EntityFrameworkCore @layout Layout @implements IDisposable @inject IDbContextFactory DbContextFactory Groceries – Transactions

Transactions

New transaction
@* View *@
@code { private record TransactionModel { public Guid Id { get; init; } public DateTime CreatedAt { get; init; } public required string Store { get; init; } public decimal TotalAmount { get; init; } public int TotalItems { get; init; } } private AppDbContext? dbContext; private IQueryable transactions = null!; private PaginationState pagination = new(); protected override void OnParametersSet() { dbContext ??= DbContextFactory.CreateDbContext(); transactions = dbContext.Transactions .Join( dbContext.TransactionTotals, transaction => transaction.Id, transactionTotal => transactionTotal.TransactionId, (transaction, transactionTotal) => new TransactionModel { Id = transaction.Id, CreatedAt = transaction.CreatedAt, Store = string.Concat(transaction.Store!.Retailer!.Name, " ", transaction.Store.Name), TotalAmount = transactionTotal.Total, TotalItems = transaction.Items.Sum(item => item.Unit == null ? (int)item.Quantity : 1), }) .OrderByDescending(transaction => transaction.CreatedAt); } public void Dispose() { dbContext?.Dispose(); } }