diff --git a/src/Restbucks.Service/Domain/Order.cs b/src/Restbucks.Service/Domain/Order.cs index fecad92..c6416cb 100644 --- a/src/Restbucks.Service/Domain/Order.cs +++ b/src/Restbucks.Service/Domain/Order.cs @@ -1,7 +1,29 @@ +using System.Collections.Generic; + namespace Restbucks.Service.Domain { public class Order { - + protected virtual List ItemsCollection { get; set; } + public virtual IEnumerable Items + { + get { return ItemsCollection; } + } + + public virtual Location Location { get; protected set; } + + public virtual decimal Total { get; protected set; } + + public virtual OrderStatus Status { get; protected set; } + + protected Order() + { + } + + protected Order(Location location, IEnumerable items) + { + Location = location; + ItemsCollection = new List(items); + } } } \ No newline at end of file diff --git a/src/Restbucks.Service/Mappers/ItemRepresentationMapper.cs b/src/Restbucks.Service/Mappers/ItemRepresentationMapper.cs new file mode 100644 index 0000000..ec4dc06 --- /dev/null +++ b/src/Restbucks.Service/Mappers/ItemRepresentationMapper.cs @@ -0,0 +1,28 @@ +using Restbucks.Service.Domain; +using Restbucks.Service.Representations; + +namespace Restbucks.Service.Mappers +{ + public class ItemRepresentationMapper + { + public ItemRepresentation GetRepresentation(Item item) + { + return new ItemRepresentation + { + Drink = item.Drink, + Milk = item.Milk, + Size = item.Size + }; + } + + public Item GetDomainObject(ItemRepresentation itemRepresentation) + { + return new Item + { + Drink = itemRepresentation.Drink, + Milk = itemRepresentation.Milk, + Size = itemRepresentation.Size + }; + } + } +} \ No newline at end of file diff --git a/src/Restbucks.Service/Mappers/OrderRepresentationMapper.cs b/src/Restbucks.Service/Mappers/OrderRepresentationMapper.cs new file mode 100644 index 0000000..48b839a --- /dev/null +++ b/src/Restbucks.Service/Mappers/OrderRepresentationMapper.cs @@ -0,0 +1,21 @@ +using System.Linq; +using Restbucks.Service.Domain; +using Restbucks.Service.Representations; + +namespace Restbucks.Service.Mappers +{ + public class OrderRepresentationMapper + { + public OrderRepresentation GetRepresentation(Order order) + { + var itemMapper = new ItemRepresentationMapper(); + return new OrderRepresentation + { + Cost = order.Total, + Items = order.Items.Select(itemMapper.GetRepresentation).ToList(), + Location = order.Location, + Status = order.Status, + }; + } + } +} \ No newline at end of file diff --git a/src/Restbucks.Service/Representations/OrderRepresentation.cs b/src/Restbucks.Service/Representations/OrderRepresentation.cs index 08865d9..ddc82d5 100644 --- a/src/Restbucks.Service/Representations/OrderRepresentation.cs +++ b/src/Restbucks.Service/Representations/OrderRepresentation.cs @@ -26,35 +26,38 @@ public string UpdateLink set { SetLink(RestbucksRelation.Update, value); } } - //[XmlIgnore] - //public Link CancelLink - //{ - // get { return GetLinkByRel(RestbucksRelation.Cancel); } - //} + [XmlIgnore] + public string CancelLink + { + get { return GetLinkByRel(RestbucksRelation.Cancel).UnlessNull(x => x.Uri); } + set { SetLink(RestbucksRelation.Cancel, value); } + } - //[XmlIgnore] - //public Link PaymentLink - //{ - // get { return GetLinkByRel(RestbucksRelation.Payment); } - //} + [XmlIgnore] + public string PaymentLink + { + get { return GetLinkByRel(RestbucksRelation.Payment).UnlessNull(x => x.Uri); } + set { SetLink(RestbucksRelation.Payment, value); } + } - //[XmlIgnore] - //public Link SelfLink - //{ - // get { return GetLinkByRel(SelfRelValue); } - //} + [XmlIgnore] + public string SelfLink + { + get { return GetLinkByRel(SelfRelValue).UnlessNull(x => x.Uri); } + set { SetLink(SelfRelValue, value); } + } public OrderRepresentation() { } - public OrderRepresentation(string orderUri, string paymentUri) - { - SetLink(RestbucksRelation.Update, orderUri); - SetLink(RestbucksRelation.Cancel, orderUri); - SetLink(RestbucksRelation.Payment, paymentUri); - SetLink(SelfRelValue, orderUri); - } + //public OrderRepresentation(string orderUri, string paymentUri) + //{ + // SetLink(RestbucksRelation.Update, orderUri); + // SetLink(RestbucksRelation.Cancel, orderUri); + // SetLink(RestbucksRelation.Payment, paymentUri); + // SetLink(SelfRelValue, orderUri); + //} } } \ No newline at end of file diff --git a/src/Restbucks.Service/Restbucks.Service.csproj b/src/Restbucks.Service/Restbucks.Service.csproj index f949677..58a6fe3 100644 --- a/src/Restbucks.Service/Restbucks.Service.csproj +++ b/src/Restbucks.Service/Restbucks.Service.csproj @@ -78,6 +78,8 @@ + +