diff --git a/Directory.Packages.props b/Directory.Packages.props index aae2105..e96dccb 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,7 +1,6 @@ true - true net7.0 @@ -15,25 +14,25 @@ - + - - - - - - - - - + + + + + + + + + - + - + - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -42,13 +41,13 @@ - + - - + + all @@ -61,6 +60,6 @@ - + \ No newline at end of file diff --git a/src/ApplicationCore/Specifications/CustomerOrdersSpecification.cs b/src/ApplicationCore/Specifications/CustomerOrdersSpecification.cs new file mode 100644 index 0000000..e3faa6a --- /dev/null +++ b/src/ApplicationCore/Specifications/CustomerOrdersSpecification.cs @@ -0,0 +1,13 @@ +using Ardalis.Specification; +using Microsoft.eShopWeb.ApplicationCore.Entities.OrderAggregate; + +namespace Microsoft.eShopWeb.ApplicationCore.Specifications; + +public class CustomerOrdersSpecification : Specification +{ + public CustomerOrdersSpecification(string buyerId) + { + Query.Where(o => o.BuyerId == buyerId) + .Include(o => o.OrderItems); + } +} diff --git a/src/Web/Features/MyOrders/GetMyOrders.cs b/src/Web/Features/MyOrders/GetMyOrders.cs index aedfde1..5baf32c 100644 --- a/src/Web/Features/MyOrders/GetMyOrders.cs +++ b/src/Web/Features/MyOrders/GetMyOrders.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using MediatR; +using MediatR; using Microsoft.eShopWeb.Web.ViewModels; namespace Microsoft.eShopWeb.Web.Features.MyOrders; diff --git a/src/Web/Features/MyOrders/GetMyOrdersHandler.cs b/src/Web/Features/MyOrders/GetMyOrdersHandler.cs index 125f0a9..df6db4b 100644 --- a/src/Web/Features/MyOrders/GetMyOrdersHandler.cs +++ b/src/Web/Features/MyOrders/GetMyOrdersHandler.cs @@ -18,20 +18,12 @@ public class GetMyOrdersHandler : IRequestHandler> Handle(GetMyOrders request, CancellationToken cancellationToken) { - var specification = new CustomerOrdersWithItemsSpecification(request.UserName); + var specification = new CustomerOrdersSpecification(request.UserName); var orders = await _orderRepository.ListAsync(specification, cancellationToken); return orders.Select(o => new OrderViewModel { OrderDate = o.OrderDate, - OrderItems = o.OrderItems.Select(oi => new OrderItemViewModel() - { - PictureUrl = oi.ItemOrdered.PictureUri, - ProductId = oi.ItemOrdered.CatalogItemId, - ProductName = oi.ItemOrdered.ProductName, - UnitPrice = oi.UnitPrice, - Units = oi.Units - }).ToList(), OrderNumber = o.Id, ShippingAddress = o.ShipToAddress, Total = o.Total() diff --git a/src/Web/Features/OrderDetails/GetOrderDetails.cs b/src/Web/Features/OrderDetails/GetOrderDetails.cs index 2cc0721..deb1fb5 100644 --- a/src/Web/Features/OrderDetails/GetOrderDetails.cs +++ b/src/Web/Features/OrderDetails/GetOrderDetails.cs @@ -3,7 +3,7 @@ using Microsoft.eShopWeb.Web.ViewModels; namespace Microsoft.eShopWeb.Web.Features.OrderDetails; -public class GetOrderDetails : IRequest +public class GetOrderDetails : IRequest { public string UserName { get; set; } public int OrderId { get; set; } diff --git a/src/Web/Features/OrderDetails/GetOrderDetailsHandler.cs b/src/Web/Features/OrderDetails/GetOrderDetailsHandler.cs index be7b8dc..4c11199 100644 --- a/src/Web/Features/OrderDetails/GetOrderDetailsHandler.cs +++ b/src/Web/Features/OrderDetails/GetOrderDetailsHandler.cs @@ -6,7 +6,7 @@ using Microsoft.eShopWeb.Web.ViewModels; namespace Microsoft.eShopWeb.Web.Features.OrderDetails; -public class GetOrderDetailsHandler : IRequestHandler +public class GetOrderDetailsHandler : IRequestHandler { private readonly IReadRepository _orderRepository; @@ -15,7 +15,7 @@ public class GetOrderDetailsHandler : IRequestHandler Handle(GetOrderDetails request, + public async Task Handle(GetOrderDetails request, CancellationToken cancellationToken) { var spec = new OrderWithItemsByIdSpec(request.OrderId); @@ -26,7 +26,7 @@ public class GetOrderDetailsHandler : IRequestHandler new OrderItemViewModel diff --git a/src/Web/ViewModels/OrderDetailViewModel.cs b/src/Web/ViewModels/OrderDetailViewModel.cs new file mode 100644 index 0000000..18a3aa0 --- /dev/null +++ b/src/Web/ViewModels/OrderDetailViewModel.cs @@ -0,0 +1,6 @@ +namespace Microsoft.eShopWeb.Web.ViewModels; + +public class OrderDetailViewModel : OrderViewModel +{ + public List OrderItems { get; set; } = new(); +} diff --git a/src/Web/ViewModels/OrderViewModel.cs b/src/Web/ViewModels/OrderViewModel.cs index 582a504..d34866a 100644 --- a/src/Web/ViewModels/OrderViewModel.cs +++ b/src/Web/ViewModels/OrderViewModel.cs @@ -11,5 +11,4 @@ public class OrderViewModel public decimal Total { get; set; } public string Status => DEFAULT_STATUS; public Address? ShippingAddress { get; set; } - public List OrderItems { get; set; } = new(); } diff --git a/src/Web/Views/Order/Detail.cshtml b/src/Web/Views/Order/Detail.cshtml index 097d17e..c5eb47b 100644 --- a/src/Web/Views/Order/Detail.cshtml +++ b/src/Web/Views/Order/Detail.cshtml @@ -1,4 +1,4 @@ -@model OrderViewModel +@model OrderDetailViewModel @{ ViewData["Title"] = "My Order History"; } diff --git a/tests/UnitTests/UnitTests.csproj b/tests/UnitTests/UnitTests.csproj index f8bbe01..4b069f2 100644 --- a/tests/UnitTests/UnitTests.csproj +++ b/tests/UnitTests/UnitTests.csproj @@ -9,7 +9,6 @@ -