public Order FindOrder(int id) { Order order = null; if (id > 0) { using (var db = eCommerce.Accessors.EntityFramework.eCommerceDbContext.Create()) { EntityFramework.Order model = db.Orders.Find(id); if (model != null) { order = DTOMapper.MapOrder(model); var orderItemModels = from ol in db.OrderLines where ol.OrderId == id select ol; var orderLines = new List <OrderLine>(); foreach (var cim in orderItemModels) { var orderLine = DTOMapper.Map <OrderLine>(cim); orderLines.Add(orderLine); } order.OrderLines = orderLines.ToArray(); } } } return(order); }
public Order SaveOrder(int catalogId, Order order) { if (order == null) { throw new ArgumentNullException("order"); } if (order.OrderLines == null || order.OrderLines.Length == 0) { throw new ArgumentException("OrderLines must have at least 1 item."); } if (order.BillingAddress == null) { throw new ArgumentException("BillingAddress must not be null."); } EntityFramework.Order model = null; using (var db = eCommerce.Accessors.EntityFramework.eCommerceDbContext.Create()) { var isNewOrder = false; if (order.Id > 0) { model = db.Orders.Find(order.Id); } else { isNewOrder = true; model = new EntityFramework.Order(); db.Orders.Add(model); } DTOMapper.MapOrder(order, model); DTOMapper.MapBilling(order.BillingAddress, model); if (order.ShippingAddress != null) { DTOMapper.MapShipping(order.ShippingAddress, model); } else { DTOMapper.MapShipping(new Address(), model); // copy a blank address } model.SellerId = Context.SellerId; model.CatalogId = catalogId; db.SaveChanges(); // NOTE: For now, We are intentionally not allowing edits/adds of order lines for existing orders if (isNewOrder) { foreach (var line in order.OrderLines) { var orderLineModel = new EntityFramework.OrderLine() { OrderId = model.Id, ExtendedPrice = line.ExtendedPrice, ProductId = line.ProductId, Quantity = line.Quantity, UnitPrice = line.UnitPrice, ProductName = line.ProductName }; db.OrderLines.Add(orderLineModel); db.SaveChanges(); } } } return(FindOrder(model.Id)); }