-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOrderMapper.cs
More file actions
58 lines (48 loc) · 1.71 KB
/
OrderMapper.cs
File metadata and controls
58 lines (48 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
namespace Comanda.Orders.Application.Mappers;
public static class OrderMapper
{
public static Order AsOrder(this OrderCreationScheme scheme, Code code)
{
var order = new Order
{
Code = code,
Address = scheme.Address,
Fulfillment = scheme.Fulfillment,
Priority = scheme.Priority,
Metadata = scheme.Metadata,
Items = [.. scheme.Items],
};
return order;
}
public static OrderFilters AsFilters(this OrdersFetchParameters parameters) => new()
{
Id = parameters.Id,
Code = parameters.Code,
MerchantId = parameters.MerchantId,
ConsumerId = parameters.ConsumerId,
Pagination = parameters.Pagination,
Sort = parameters.Sort,
CreatedAfter = parameters.CreatedAfter,
CreatedBefore = parameters.CreatedBefore,
Status = string.IsNullOrWhiteSpace(parameters.Status)
? null
: Enum.Parse<Status>(parameters.Status, ignoreCase: true),
Priority = string.IsNullOrWhiteSpace(parameters.Priority)
? null
: Enum.Parse<Priority>(parameters.Priority, ignoreCase: true),
Fulfillment = string.IsNullOrWhiteSpace(parameters.Fulfillment)
? null
: Enum.Parse<Fulfillment>(parameters.Fulfillment, ignoreCase: true)
};
public static OrderScheme AsResponse(this Order order) => new()
{
Identifier = order.Id,
Code = order.Code.Identifier,
Address = order.Address,
Priority = order.Priority,
Status = order.Status,
Fulfillment = order.Fulfillment,
Items = [.. order.Items],
Metadata = order.Metadata,
};
}