shopping-cart-blazor-wasm/Server/Endpoints/Cart/LineItem/Update.cs

35 lines
No EOL
1.1 KiB
C#

using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediatR;
using Microsoft.EntityFrameworkCore;
using ShoppingCartStarter.Server.Data;
using ShoppingCartStarter.Shared.Cart.LineItem;
namespace ShoppingCartStarter.Server.Endpoints.Cart.LineItem
{
public class UpdateHandler : AsyncRequestHandler<Update.Command>
{
private readonly StoreContext _context;
public UpdateHandler(StoreContext context)
{
_context = context;
}
protected override async Task Handle(Update.Command request, CancellationToken cancellationToken)
{
// find the cart (in reality we'd use the customer's id or similar to do this)
var cart = await _context.Carts
.Include(x => x.LineItems)
.FirstOrDefaultAsync(cancellationToken: cancellationToken);
// find the relevant line and adjust its quantity
var line = cart.LineItems.Single(x => x.Id == request.Id);
line.Quantity = request.Quantity;
// save changes
await _context.SaveChangesAsync(cancellationToken);
}
}
}