Skip to content

Commit 5e13467

Browse files
committed
no more dynamics as a return types from controllers
1 parent 338d911 commit 5e13467

4 files changed

Lines changed: 73 additions & 30 deletions

File tree

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55

66
public interface IOrderQueries
77
{
8-
Task<dynamic> GetOrderAsync(int id);
8+
Task<Order> GetOrderAsync(int id);
99

10-
Task<IEnumerable<dynamic>> GetOrdersAsync();
10+
Task<IEnumerable<OrderSummary>> GetOrdersAsync();
1111

12-
Task<IEnumerable<dynamic>> GetCardTypesAsync();
12+
Task<IEnumerable<CardType>> GetCardTypesAsync();
1313
}
1414
}

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

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Queries
22
{
33
using Dapper;
4-
using Microsoft.Extensions.Configuration;
54
using System.Data.SqlClient;
65
using System.Threading.Tasks;
76
using System;
8-
using System.Dynamic;
97
using System.Collections.Generic;
108

119
public class OrderQueries
@@ -19,7 +17,7 @@ public OrderQueries(string constr)
1917
}
2018

2119

22-
public async Task<dynamic> GetOrderAsync(int id)
20+
public async Task<Order> GetOrderAsync(int id)
2321
{
2422
using (var connection = new SqlConnection(_connectionString))
2523
{
@@ -44,13 +42,13 @@ FROM ordering.Orders o
4442
}
4543
}
4644

47-
public async Task<IEnumerable<dynamic>> GetOrdersAsync()
45+
public async Task<IEnumerable<OrderSummary>> GetOrdersAsync()
4846
{
4947
using (var connection = new SqlConnection(_connectionString))
5048
{
5149
connection.Open();
5250

53-
return await connection.QueryAsync<dynamic>(@"SELECT o.[Id] as ordernumber,o.[OrderDate] as [date],os.[Name] as [status],SUM(oi.units*oi.unitprice) as total
51+
return await connection.QueryAsync<OrderSummary>(@"SELECT o.[Id] as ordernumber,o.[OrderDate] as [date],os.[Name] as [status],SUM(oi.units*oi.unitprice) as total
5452
FROM [ordering].[Orders] o
5553
LEFT JOIN[ordering].[orderitems] oi ON o.Id = oi.orderid
5654
LEFT JOIN[ordering].[orderstatus] os on o.OrderStatusId = os.Id
@@ -59,39 +57,41 @@ FROM [ordering].[Orders] o
5957
}
6058
}
6159

62-
public async Task<IEnumerable<dynamic>> GetCardTypesAsync()
60+
public async Task<IEnumerable<CardType>> GetCardTypesAsync()
6361
{
6462
using (var connection = new SqlConnection(_connectionString))
6563
{
6664
connection.Open();
6765

68-
return await connection.QueryAsync<dynamic>("SELECT * FROM ordering.cardtypes");
66+
return await connection.QueryAsync<CardType>("SELECT * FROM ordering.cardtypes");
6967
}
7068
}
7169

72-
private dynamic MapOrderItems(dynamic result)
70+
private Order MapOrderItems(dynamic result)
7371
{
74-
dynamic order = new ExpandoObject();
75-
76-
order.ordernumber = result[0].ordernumber;
77-
order.date = result[0].date;
78-
order.status = result[0].status;
79-
order.description = result[0].description;
80-
order.street = result[0].street;
81-
order.city = result[0].city;
82-
order.zipcode = result[0].zipcode;
83-
order.country = result[0].country;
84-
85-
order.orderitems = new List<dynamic>();
86-
order.total = 0;
72+
var order = new Order
73+
{
74+
ordernumber = result[0].ordernumber,
75+
date = result[0].date,
76+
status = result[0].status,
77+
description = result[0].description,
78+
street = result[0].street,
79+
city = result[0].city,
80+
zipcode = result[0].zipcode,
81+
country = result[0].country,
82+
orderitems = new List<Orderitem>(),
83+
total = 0
84+
};
8785

8886
foreach (dynamic item in result)
8987
{
90-
dynamic orderitem = new ExpandoObject();
91-
orderitem.productname = item.productname;
92-
orderitem.units = item.units;
93-
orderitem.unitprice = item.unitprice;
94-
orderitem.pictureurl = item.pictureurl;
88+
var orderitem = new Orderitem
89+
{
90+
productname = item.productname,
91+
units = item.units,
92+
unitprice = (double)item.unitprice,
93+
pictureurl = item.pictureurl
94+
};
9595

9696
order.total += item.units * item.unitprice;
9797
order.orderitems.Add(orderitem);
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Queries
5+
{
6+
public class Orderitem
7+
{
8+
public string productname { get; set; }
9+
public int units { get; set; }
10+
public double unitprice { get; set; }
11+
public string pictureurl { get; set; }
12+
}
13+
14+
public class Order
15+
{
16+
public int ordernumber { get; set; }
17+
public DateTime date { get; set; }
18+
public string status { get; set; }
19+
public string description { get; set; }
20+
public string street { get; set; }
21+
public string city { get; set; }
22+
public string zipcode { get; set; }
23+
public string country { get; set; }
24+
public List<Orderitem> orderitems { get; set; }
25+
public decimal total { get; set; }
26+
}
27+
28+
public class OrderSummary
29+
{
30+
public int ordernumber { get; set; }
31+
public DateTime date { get; set; }
32+
public string status { get; set; }
33+
public double total { get; set; }
34+
}
35+
36+
public class CardType
37+
{
38+
public int Id { get; set; }
39+
public string Name { get; set; }
40+
}
41+
}

src/Services/Ordering/Ordering.API/Controllers/OrdersController.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public async Task<IActionResult> ShipOrder([FromBody]ShipOrderCommand command, [
6464

6565
[Route("{orderId:int}")]
6666
[HttpGet]
67-
[ProducesResponseType((int)HttpStatusCode.OK)]
67+
[ProducesResponseType(typeof(Order),(int)HttpStatusCode.OK)]
6868
[ProducesResponseType((int)HttpStatusCode.NotFound)]
6969
public async Task<IActionResult> GetOrder(int orderId)
7070
{
@@ -83,6 +83,7 @@ public async Task<IActionResult> GetOrder(int orderId)
8383

8484
[Route("")]
8585
[HttpGet]
86+
[ProducesResponseType(typeof(IEnumerable<OrderSummary>), (int)HttpStatusCode.OK)]
8687
public async Task<IActionResult> GetOrders()
8788
{
8889
var orderTask = _orderQueries.GetOrdersAsync();
@@ -94,6 +95,7 @@ public async Task<IActionResult> GetOrders()
9495

9596
[Route("cardtypes")]
9697
[HttpGet]
98+
[ProducesResponseType(typeof(IEnumerable<CardType>), (int)HttpStatusCode.OK)]
9799
public async Task<IActionResult> GetCardTypes()
98100
{
99101
var cardTypes = await _orderQueries

0 commit comments

Comments
 (0)