コード例 #1
0
        public override void Run(object context)
        {
            DbController dbc = new DbController(Connection);
            IList<BusinessObject> bObjects = new List<BusinessObject>();

            try
            {
                Connection.AutoCommit = false;
                Connection.BeginGFXDTransaction();

                Order order = (Order)ObjectFactory.Create(ObjectType.Order);
                order.Customer = dbc.GetRandomCustomer();
                dbc.AddOrder(order);
                
                IList<Product> products = dbc.GetRandomProducts(5);
                foreach (Product product in products)
                {
                    OrderDetail ordDetail = new OrderDetail();
                    ordDetail.OrderId = order.OrderId;
                    ordDetail.ProductId = product.ProductId;
                    ordDetail.UnitPrice = product.RetailPrice;
                    ordDetail.Quantity = DbHelper.GetRandomNumber(1);
                    ordDetail.Discount = 0;

                    dbc.AddOrderDetail(ordDetail);
                    bObjects.Add(ordDetail);

                    product.UnitsInStock -= ordDetail.Quantity;
                    dbc.UpdateProduct(product);

                    order.SubTotal += (ordDetail.UnitPrice * ordDetail.Quantity);
                }

                dbc.UpdateOrder(order);
                bObjects.Add(order);

                Connection.Commit();

                if (!dbc.ValidateTransaction(bObjects))
                    Fail(dbc.GetValidationErrors(bObjects));
            }
            catch (Exception e)
            {
                Connection.Rollback();
                Fail(e);
            }
            finally
            {                
                base.Run(context);
            }
        }
コード例 #2
0
 public long UpdateOrderDetail(OrderDetail ordDetail)
 {
     return (new OrderDetailDao(Connection, SchemaName)).Update(ordDetail);
 }
コード例 #3
0
 public long AddOrderDetail(OrderDetail ordDetail)
 {
     return (new OrderDetailDao(Connection, SchemaName)).Insert(ordDetail);
 }
コード例 #4
0
        private static OrderDetail GetOrderDetailInfo(OrderDetail ordDetail)
        {
            ordDetail.Quantity = GetDetailQuantity();
            ordDetail.UnitPrice = GetDetailUnitPrice();
            ordDetail.Discount = GetDetailDiscount();

            return ordDetail;
        }
コード例 #5
0
        private static OrderDetail CreateOrderDetail()
        {
            OrderDetail ordDetail = new OrderDetail();
            ordDetail.OrderId = GetDetailOrderId();
            ordDetail.ProductId = GetDetailProductId();

            return GetOrderDetailInfo(ordDetail);            
        }
コード例 #6
0
 private String BuildQuery(String statement, OrderDetail ordDetail)
 {
     return String.Format(statement,
         ordDetail.Quantity,
         ordDetail.UnitPrice,
         ordDetail.Discount);
 }
コード例 #7
0
 public int Update(OrderDetail ordDetail)
 {
     String statement = QualifyTableName(DbDefault.GetUpdateStatement(
         TableName.ORDERDETAIL, new long[] { ordDetail.OrderId, ordDetail.ProductId }));
                 
     if(Connection != null)
         return GFXDDbi.Update(Connection, BuildQuery(statement, ordDetail));
     else 
         return GFXDDbi.Update(BuildQuery(statement, ordDetail));
 }
コード例 #8
0
        public long Insert(OrderDetail ordDetail)
        {
            String statement = QualifyTableName(DbDefault.GetInsertStatement(
                TableName.ORDERDETAIL, new long[] { ordDetail.OrderId, ordDetail.ProductId }));

            statement = BuildQuery(statement, ordDetail);

            if(Connection != null)
                return GFXDDbi.Insert(Connection, statement);
            else
                return GFXDDbi.Insert(statement);
        }