Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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));
        }