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> { private readonly IReadRepository _orderRepository; public GetMyOrdersHandler(IReadRepository orderRepository) { _orderRepository = orderRepository; } public async Task> 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() }); } }