public int StoreOrder(Order order, IEnumerable <ChangeItem> changeItems)
        {
            int orderId = default(int);

            using (TransactionScope transaction = new TransactionScope())
            {
                orderId = rep.SaveOrder(order);
                foreach (ChangeItem change in changeItems)
                {
                    if (change.Object is OrderDetail)
                    {
                        OrderDetail detail = (OrderDetail)change.Object;
                        switch (change.ChangeType)
                        {
                        case ChangeType.ChildInsert:
                        case ChangeType.ChildUpate:
                            rep.SaveOrderDetail(detail, order);
                            break;

                        case ChangeType.ChildDelete:
                            rep.DeleteOrderDetail(detail.OrderDetailId);
                            break;
                        }
                    }
                }

                if (ConfigurationHelper.UseMsmqService && order.OrderStatus == OrderStatus.Draft)
                {
                    OrderToShipDTO dto = new OrderToShipDTO();
                    dto.Id = order.OrderId;
                    DistributionSystemServiceClient client = new DistributionSystemServiceClient();
                    client.ShipOrder(dto);
                    order             = rep.GetById(order.OrderId);
                    order.OrderStatus = OrderStatus.Ordered;
                    rep.SaveOrder(order, false);
                }
                transaction.Complete();
            }
            return(orderId);
        }
        public int StoreOrder(Order order, IEnumerable<ChangeItem> changeItems)
        {
            int orderId = default(int);
            using (TransactionScope transaction = new TransactionScope())
            {
                orderId = rep.SaveOrder(order);
                foreach (ChangeItem change in changeItems)
                {
                    if (change.Object is OrderDetail)
                    {
                        OrderDetail detail = (OrderDetail) change.Object;
                        switch (change.ChangeType)
                        {
                            case ChangeType.ChildInsert:
                            case ChangeType.ChildUpate:
                                rep.SaveOrderDetail(detail, order);
                                break;
                            case ChangeType.ChildDelete:
                                rep.DeleteOrderDetail(detail.OrderDetailId);
                                break;
                        }
                    }
                }

                if (ConfigurationHelper.UseMsmqService && order.OrderStatus == OrderStatus.Draft)
                {
                    OrderToShipDTO dto = new OrderToShipDTO();
                    dto.Id = order.OrderId;
                    DistributionSystemServiceClient client = new DistributionSystemServiceClient();
                    client.ShipOrder(dto);
                    order = rep.GetById(order.OrderId);
                    order.OrderStatus = OrderStatus.Ordered;
                    rep.SaveOrder(order, false);
                }
                transaction.Complete();
            }
            return orderId;
        }