Separate OrderViewModel from OrderDetailsViewModel (#904)
* Separate OrderViewModel from OrderDetailsViewModel * Update packages
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
||||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
|
||||||
<TargetFramework>net7.0</TargetFramework>
|
<TargetFramework>net7.0</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -15,25 +14,25 @@
|
|||||||
<PackageVersion Include="BlazorInputFile" Version="0.2.0" />
|
<PackageVersion Include="BlazorInputFile" Version="0.2.0" />
|
||||||
<PackageVersion Include="Blazored.LocalStorage" Version="4.3.0" />
|
<PackageVersion Include="Blazored.LocalStorage" Version="4.3.0" />
|
||||||
<PackageVersion Include="BuildBundlerMinifier" Version="3.2.449" PrivateAssets="All" />
|
<PackageVersion Include="BuildBundlerMinifier" Version="3.2.449" PrivateAssets="All" />
|
||||||
<PackageVersion Include="FluentValidation" Version="11.5.1" />
|
<PackageVersion Include="FluentValidation" Version="11.5.2" />
|
||||||
<PackageVersion Include="MediatR" Version="12.0.1" />
|
<PackageVersion Include="MediatR" Version="12.0.1" />
|
||||||
<PackageVersion Include="Microsoft.AspNetCore.Components.Authorization" Version="7.0.4" />
|
<PackageVersion Include="Microsoft.AspNetCore.Components.Authorization" Version="7.0.5" />
|
||||||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="7.0.4" />
|
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="7.0.5" />
|
||||||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="7.0.4" />
|
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="7.0.5" />
|
||||||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="7.0.4" PrivateAssets="all" />
|
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="7.0.5" PrivateAssets="all" />
|
||||||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="7.0.4" />
|
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="7.0.5" />
|
||||||
<PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="7.0.4" />
|
<PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="7.0.5" />
|
||||||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.4" />
|
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.5" />
|
||||||
<PackageVersion Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="7.0.4" />
|
<PackageVersion Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="7.0.5" />
|
||||||
<PackageVersion Include="Microsoft.AspNetCore.Identity.UI" Version="7.0.4" />
|
<PackageVersion Include="Microsoft.AspNetCore.Identity.UI" Version="7.0.5" />
|
||||||
<PackageVersion Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
|
<PackageVersion Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
|
||||||
<PackageVersion Include="Microsoft.Extensions.Identity.Core" Version="7.0.4" />
|
<PackageVersion Include="Microsoft.Extensions.Identity.Core" Version="7.0.5" />
|
||||||
<PackageVersion Include="Microsoft.Extensions.Logging.Configuration" Version="7.0.0" />
|
<PackageVersion Include="Microsoft.Extensions.Logging.Configuration" Version="7.0.0" />
|
||||||
<PackageVersion Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="7.0.5" />
|
<PackageVersion Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="7.0.6" />
|
||||||
<PackageVersion Include="Microsoft.Web.LibraryManager.Build" Version="2.1.175" />
|
<PackageVersion Include="Microsoft.Web.LibraryManager.Build" Version="2.1.175" />
|
||||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" />
|
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" />
|
||||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.4" />
|
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.5" />
|
||||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.4">
|
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.5">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageVersion>
|
</PackageVersion>
|
||||||
@@ -42,13 +41,13 @@
|
|||||||
<PackageVersion Include="System.Net.Http.Json" Version="7.0.1" />
|
<PackageVersion Include="System.Net.Http.Json" Version="7.0.1" />
|
||||||
<PackageVersion Include="System.Security.Claims" Version="4.3.0" />
|
<PackageVersion Include="System.Security.Claims" Version="4.3.0" />
|
||||||
<PackageVersion Include="System.Text.Json" Version="7.0.2" />
|
<PackageVersion Include="System.Text.Json" Version="7.0.2" />
|
||||||
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="6.27.0" />
|
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="6.30.1" />
|
||||||
<PackageVersion Include="Swashbuckle.AspNetCore" Version="6.5.0" />
|
<PackageVersion Include="Swashbuckle.AspNetCore" Version="6.5.0" />
|
||||||
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerUI" Version="6.5.0" />
|
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerUI" Version="6.5.0" />
|
||||||
<PackageVersion Include="Swashbuckle.AspNetCore.Annotations" Version="6.5.0" />
|
<PackageVersion Include="Swashbuckle.AspNetCore.Annotations" Version="6.5.0" />
|
||||||
<!-- Test -->
|
<!-- Test -->
|
||||||
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="7.0.4" />
|
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="7.0.5" />
|
||||||
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
|
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.6.0" />
|
||||||
<PackageVersion Include="xunit" Version="2.4.2" />
|
<PackageVersion Include="xunit" Version="2.4.2" />
|
||||||
<PackageVersion Include="xunit.runner.visualstudio" Version="2.4.5">
|
<PackageVersion Include="xunit.runner.visualstudio" Version="2.4.5">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
@@ -61,6 +60,6 @@
|
|||||||
<PackageVersion Include="Moq" Version="4.18.4" />
|
<PackageVersion Include="Moq" Version="4.18.4" />
|
||||||
<PackageVersion Include="MSTest.TestAdapter" Version="3.0.2" />
|
<PackageVersion Include="MSTest.TestAdapter" Version="3.0.2" />
|
||||||
<PackageVersion Include="MSTest.TestFramework" Version="3.0.2" />
|
<PackageVersion Include="MSTest.TestFramework" Version="3.0.2" />
|
||||||
<PackageVersion Include="coverlet.collector" Version="3.2.0" />
|
<PackageVersion Include="coverlet.collector" Version="6.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
using Ardalis.Specification;
|
||||||
|
using Microsoft.eShopWeb.ApplicationCore.Entities.OrderAggregate;
|
||||||
|
|
||||||
|
namespace Microsoft.eShopWeb.ApplicationCore.Specifications;
|
||||||
|
|
||||||
|
public class CustomerOrdersSpecification : Specification<Order>
|
||||||
|
{
|
||||||
|
public CustomerOrdersSpecification(string buyerId)
|
||||||
|
{
|
||||||
|
Query.Where(o => o.BuyerId == buyerId)
|
||||||
|
.Include(o => o.OrderItems);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
using System.Collections.Generic;
|
using MediatR;
|
||||||
using MediatR;
|
|
||||||
using Microsoft.eShopWeb.Web.ViewModels;
|
using Microsoft.eShopWeb.Web.ViewModels;
|
||||||
|
|
||||||
namespace Microsoft.eShopWeb.Web.Features.MyOrders;
|
namespace Microsoft.eShopWeb.Web.Features.MyOrders;
|
||||||
|
|||||||
@@ -18,20 +18,12 @@ public class GetMyOrdersHandler : IRequestHandler<GetMyOrders, IEnumerable<Order
|
|||||||
public async Task<IEnumerable<OrderViewModel>> Handle(GetMyOrders request,
|
public async Task<IEnumerable<OrderViewModel>> Handle(GetMyOrders request,
|
||||||
CancellationToken cancellationToken)
|
CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var specification = new CustomerOrdersWithItemsSpecification(request.UserName);
|
var specification = new CustomerOrdersSpecification(request.UserName);
|
||||||
var orders = await _orderRepository.ListAsync(specification, cancellationToken);
|
var orders = await _orderRepository.ListAsync(specification, cancellationToken);
|
||||||
|
|
||||||
return orders.Select(o => new OrderViewModel
|
return orders.Select(o => new OrderViewModel
|
||||||
{
|
{
|
||||||
OrderDate = o.OrderDate,
|
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,
|
OrderNumber = o.Id,
|
||||||
ShippingAddress = o.ShipToAddress,
|
ShippingAddress = o.ShipToAddress,
|
||||||
Total = o.Total()
|
Total = o.Total()
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ using Microsoft.eShopWeb.Web.ViewModels;
|
|||||||
|
|
||||||
namespace Microsoft.eShopWeb.Web.Features.OrderDetails;
|
namespace Microsoft.eShopWeb.Web.Features.OrderDetails;
|
||||||
|
|
||||||
public class GetOrderDetails : IRequest<OrderViewModel>
|
public class GetOrderDetails : IRequest<OrderDetailViewModel>
|
||||||
{
|
{
|
||||||
public string UserName { get; set; }
|
public string UserName { get; set; }
|
||||||
public int OrderId { get; set; }
|
public int OrderId { get; set; }
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ using Microsoft.eShopWeb.Web.ViewModels;
|
|||||||
|
|
||||||
namespace Microsoft.eShopWeb.Web.Features.OrderDetails;
|
namespace Microsoft.eShopWeb.Web.Features.OrderDetails;
|
||||||
|
|
||||||
public class GetOrderDetailsHandler : IRequestHandler<GetOrderDetails, OrderViewModel?>
|
public class GetOrderDetailsHandler : IRequestHandler<GetOrderDetails, OrderDetailViewModel?>
|
||||||
{
|
{
|
||||||
private readonly IReadRepository<Order> _orderRepository;
|
private readonly IReadRepository<Order> _orderRepository;
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@ public class GetOrderDetailsHandler : IRequestHandler<GetOrderDetails, OrderView
|
|||||||
_orderRepository = orderRepository;
|
_orderRepository = orderRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<OrderViewModel?> Handle(GetOrderDetails request,
|
public async Task<OrderDetailViewModel?> Handle(GetOrderDetails request,
|
||||||
CancellationToken cancellationToken)
|
CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var spec = new OrderWithItemsByIdSpec(request.OrderId);
|
var spec = new OrderWithItemsByIdSpec(request.OrderId);
|
||||||
@@ -26,7 +26,7 @@ public class GetOrderDetailsHandler : IRequestHandler<GetOrderDetails, OrderView
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new OrderViewModel
|
return new OrderDetailViewModel
|
||||||
{
|
{
|
||||||
OrderDate = order.OrderDate,
|
OrderDate = order.OrderDate,
|
||||||
OrderItems = order.OrderItems.Select(oi => new OrderItemViewModel
|
OrderItems = order.OrderItems.Select(oi => new OrderItemViewModel
|
||||||
|
|||||||
6
src/Web/ViewModels/OrderDetailViewModel.cs
Normal file
6
src/Web/ViewModels/OrderDetailViewModel.cs
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
namespace Microsoft.eShopWeb.Web.ViewModels;
|
||||||
|
|
||||||
|
public class OrderDetailViewModel : OrderViewModel
|
||||||
|
{
|
||||||
|
public List<OrderItemViewModel> OrderItems { get; set; } = new();
|
||||||
|
}
|
||||||
@@ -11,5 +11,4 @@ public class OrderViewModel
|
|||||||
public decimal Total { get; set; }
|
public decimal Total { get; set; }
|
||||||
public string Status => DEFAULT_STATUS;
|
public string Status => DEFAULT_STATUS;
|
||||||
public Address? ShippingAddress { get; set; }
|
public Address? ShippingAddress { get; set; }
|
||||||
public List<OrderItemViewModel> OrderItems { get; set; } = new();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
@model OrderViewModel
|
@model OrderDetailViewModel
|
||||||
@{
|
@{
|
||||||
ViewData["Title"] = "My Order History";
|
ViewData["Title"] = "My Order History";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,6 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc" />
|
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
||||||
<PackageReference Include="Moq" />
|
<PackageReference Include="Moq" />
|
||||||
<PackageReference Include="xunit" />
|
<PackageReference Include="xunit" />
|
||||||
|
|||||||
Reference in New Issue
Block a user