Files
eShopOnWeb/src/Web/Features/MyOrders/GetMyOrdersHandler.cs
Steve Smith e7d71ea572 Separate OrderViewModel from OrderDetailsViewModel (#904)
* Separate OrderViewModel from OrderDetailsViewModel

* Update packages
2023-05-23 14:55:24 -04:00

33 lines
1.1 KiB
C#

using MediatR;
using Microsoft.eShopWeb.ApplicationCore.Entities.OrderAggregate;
using Microsoft.eShopWeb.ApplicationCore.Interfaces;
using Microsoft.eShopWeb.ApplicationCore.Specifications;
using Microsoft.eShopWeb.Web.ViewModels;
namespace Microsoft.eShopWeb.Web.Features.MyOrders;
public class GetMyOrdersHandler : IRequestHandler<GetMyOrders, IEnumerable<OrderViewModel>>
{
private readonly IReadRepository<Order> _orderRepository;
public GetMyOrdersHandler(IReadRepository<Order> orderRepository)
{
_orderRepository = orderRepository;
}
public async Task<IEnumerable<OrderViewModel>> Handle(GetMyOrders request,
CancellationToken cancellationToken)
{
var specification = new CustomerOrdersSpecification(request.UserName);
var orders = await _orderRepository.ListAsync(specification, cancellationToken);
return orders.Select(o => new OrderViewModel
{
OrderDate = o.OrderDate,
OrderNumber = o.Id,
ShippingAddress = o.ShipToAddress,
Total = o.Total()
});
}
}