105 lines
3.2 KiB
C#
Raw Normal View History

using System;
using MediatR;
using System.Collections.Generic;
using System.Runtime.Serialization;
2017-03-14 18:02:28 +01:00
using System.Collections;
namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands
{
// DDD and CQRS patterns comment: Note that it is recommended to implement immutable Commands
// In this case, its immutability is achieved by having all the setters as private
// plus only being able to update the data just once, when creating the object through its constructor.
// References on Immutable Commands:
// http://cqrs.nu/Faq
// https://docs.spine3.org/motivation/immutability.html
// http://blog.gauffin.org/2012/06/griffin-container-introducing-command-support/
// https://msdn.microsoft.com/en-us/library/bb383979.aspx
[DataContract]
public class CreateOrderCommand
:IAsyncRequest<bool>
{
[DataMember]
private readonly List<OrderItemDTO> _orderItems;
[DataMember]
2017-02-27 17:52:14 +01:00
public string City { get; private set; }
[DataMember]
2017-02-27 17:52:14 +01:00
public string Street { get; private set; }
[DataMember]
2017-02-27 17:52:14 +01:00
public string State { get; private set; }
[DataMember]
2017-02-27 17:52:14 +01:00
public string Country { get; private set; }
[DataMember]
2017-02-27 17:52:14 +01:00
public string ZipCode { get; private set; }
[DataMember]
2017-02-27 17:52:14 +01:00
public string CardNumber { get; private set; }
[DataMember]
2017-02-27 17:52:14 +01:00
public string CardHolderName { get; private set; }
[DataMember]
2017-02-27 17:52:14 +01:00
public DateTime CardExpiration { get; private set; }
[DataMember]
2017-02-27 17:52:14 +01:00
public string CardSecurityNumber { get; private set; }
[DataMember]
2017-02-27 17:52:14 +01:00
public int CardTypeId { get; private set; }
2017-03-14 18:02:28 +01:00
[DataMember]
public int PaymentId { get; private set; }
[DataMember]
public int BuyerId { get; private set; }
[DataMember]
public IEnumerable<OrderItemDTO> OrderItems => _orderItems;
public CreateOrderCommand()
{
_orderItems = new List<OrderItemDTO>();
}
public CreateOrderCommand(List<OrderItemDTO> orderItems, string city, string street, string state, string country, string zipcode,
2017-02-27 17:52:14 +01:00
string cardNumber, string cardHolderName, DateTime cardExpiration,
2017-03-14 18:02:28 +01:00
string cardSecurityNumber, int cardTypeId, int paymentId, int buyerId) : this()
2017-02-27 17:52:14 +01:00
{
_orderItems = orderItems;
2017-02-27 17:52:14 +01:00
City = city;
Street = street;
State = state;
Country = country;
ZipCode = zipcode;
CardNumber = cardNumber;
CardHolderName = cardHolderName;
2017-03-14 18:02:28 +01:00
CardExpiration = cardExpiration;
2017-02-27 17:52:14 +01:00
CardSecurityNumber = cardSecurityNumber;
CardTypeId = cardTypeId;
2017-03-03 17:51:32 +01:00
CardExpiration = cardExpiration;
2017-03-14 18:02:28 +01:00
PaymentId = paymentId;
BuyerId = buyerId;
2017-02-27 17:52:14 +01:00
}
public class OrderItemDTO
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public decimal UnitPrice { get; set; }
public decimal Discount { get; set; }
public int Units { get; set; }
public string PictureUrl { get; set; }
}
}
}