Skip to content

Commit 9ae4d93

Browse files
committed
Add Order Description field
1 parent 9a6ad2c commit 9ae4d93

11 files changed

Lines changed: 320 additions & 11 deletions

File tree

src/Services/Ordering/Ordering.API/Application/Queries/OrderQueries.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public async Task<dynamic> GetOrderAsync(int id)
2626
connection.Open();
2727

2828
var result = await connection.QueryAsync<dynamic>(
29-
@"select o.[Id] as ordernumber,o.OrderDate as date, os.Name as status,
29+
@"select o.[Id] as ordernumber,o.OrderDate as date, o.Description as description, os.Name as status,
3030
oi.ProductName as productname, oi.Units as units, oi.UnitPrice as unitprice, oi.PictureUrl as pictureurl,
3131
a.Street as street, a.City as city, a.Country as country, a.State as state, a.ZipCode as zipcode
3232
FROM ordering.Orders o
@@ -75,6 +75,7 @@ private dynamic MapOrderItems(dynamic result)
7575
order.ordernumber = result[0].ordernumber;
7676
order.date = result[0].date;
7777
order.status = result[0].status;
78+
order.description = result[0].description;
7879
order.street = result[0].street;
7980
order.city = result[0].city;
8081
order.zipcode = result[0].zipcode;

src/Services/Ordering/Ordering.API/Infrastructure/Migrations/20170511112333_AddOrderDescription.Designer.cs

Lines changed: 246 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using Microsoft.EntityFrameworkCore.Migrations;
4+
5+
namespace Ordering.API.Migrations
6+
{
7+
public partial class AddOrderDescription : Migration
8+
{
9+
protected override void Up(MigrationBuilder migrationBuilder)
10+
{
11+
migrationBuilder.AddColumn<string>(
12+
name: "Description",
13+
schema: "ordering",
14+
table: "orders",
15+
nullable: true);
16+
}
17+
18+
protected override void Down(MigrationBuilder migrationBuilder)
19+
{
20+
migrationBuilder.DropColumn(
21+
name: "Description",
22+
schema: "ordering",
23+
table: "orders");
24+
}
25+
}
26+
}

src/Services/Ordering/Ordering.API/Infrastructure/Migrations/OrderingContextModelSnapshot.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,8 @@ protected override void BuildModel(ModelBuilder modelBuilder)
121121

122122
b.Property<int?>("BuyerId");
123123

124+
b.Property<string>("Description");
125+
124126
b.Property<DateTime>("OrderDate");
125127

126128
b.Property<int>("OrderStatusId");
@@ -183,7 +185,7 @@ protected override void BuildModel(ModelBuilder modelBuilder)
183185
b.ToTable("orderstatus","ordering");
184186
});
185187

186-
modelBuilder.Entity("Microsoft.eShopOnContainers.Services.Ordering.Infrastructure.ClientRequest", b =>
188+
modelBuilder.Entity("Microsoft.eShopOnContainers.Services.Ordering.Infrastructure.Idempotency.ClientRequest", b =>
187189
{
188190
b.Property<Guid>("Id")
189191
.ValueGeneratedOnAdd();

src/Services/Ordering/Ordering.Domain/AggregatesModel/OrderAggregate/Order.cs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
using MediatR;
2-
using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.BuyerAggregate;
3-
using Microsoft.eShopOnContainers.Services.Ordering.Domain.Seedwork;
1+
using Microsoft.eShopOnContainers.Services.Ordering.Domain.Seedwork;
42
using Ordering.Domain.Events;
53
using System;
64
using System.Collections.Generic;
@@ -23,6 +21,7 @@ public class Order
2321
public OrderStatus OrderStatus { get; private set; }
2422
private int _orderStatusId;
2523

24+
private string _description;
2625

2726
// DDD Patterns comment
2827
// Using a private collection field, better for DDD Aggregate's encapsulation
@@ -99,17 +98,25 @@ public void SetOrderStatusId(int id)
9998
_orderStatusId = id;
10099
}
101100

102-
public void SetOrderStockConfirmed(bool confirmed)
101+
public void SetOrderStockConfirmed(IEnumerable<int> orderStockNotConfirmedItems = null)
103102
{
104-
if(confirmed)
103+
if(orderStockNotConfirmedItems is null)
105104
{
106105
OrderStatus = OrderStatus.StockValidated;
107-
AddDomainEvent(new OrderStockMethodVerifiedDomainEvent(Id, OrderStatus.StockValidated));
106+
_description = "All the items were confirmed with available stock.";
107+
//AddDomainEvent(new OrderStockMethodVerifiedDomainEvent(Id, OrderStatus.StockValidated));
108108
}
109109
else
110110
{
111+
var itemsStockNotConfirmedProductNames = OrderItems
112+
.Where(c => orderStockNotConfirmedItems.Contains(c.ProductId))
113+
.Select(c => c.GetOrderItemProductName());
114+
115+
var itemsStockNotConfirmedDescription = string.Join(", ", itemsStockNotConfirmedProductNames);
116+
111117
OrderStatus = OrderStatus.Cancelled;
112-
AddDomainEvent(new OrderStockMethodVerifiedDomainEvent(Id, OrderStatus.Cancelled));
118+
_description = $"The product items don't have stock: ({itemsStockNotConfirmedDescription}).";
119+
//AddDomainEvent(new OrderStockMethodVerifiedDomainEvent(Id, OrderStatus.Cancelled));
113120
}
114121
}
115122

@@ -124,3 +131,4 @@ private void AddOrderStartedDomainEvent(int cardTypeId, string cardNumber,
124131
}
125132
}
126133
}
134+

src/Services/Ordering/Ordering.Domain/AggregatesModel/OrderAggregate/OrderItem.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ public int GetUnits()
5959
return _units;
6060
}
6161

62+
public string GetOrderItemProductName() => _productName;
63+
6264
public void SetNewDiscount(decimal discount)
6365
{
6466
if (discount < 0)

src/Services/Ordering/Ordering.Infrastructure/OrderingContext.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ void ConfigureOrder(EntityTypeBuilder<Order> orderConfiguration)
153153
orderConfiguration.Property<int?>("BuyerId").IsRequired(false);
154154
orderConfiguration.Property<int>("OrderStatusId").IsRequired();
155155
orderConfiguration.Property<int?>("PaymentMethodId").IsRequired(false);
156+
orderConfiguration.Property<string>("Description").IsRequired(false);
156157

157158
var navigation = orderConfiguration.Metadata.FindNavigation(nameof(Order.OrderItems));
158159
// DDD Patterns comment:

src/Web/WebMVC/ViewModels/Order.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ public class Order
1919

2020
public decimal Total {get;set;}
2121

22+
public string Description { get; set; }
23+
2224
[Required]
2325
public string City { get; set; }
2426
[Required]

0 commit comments

Comments
 (0)