Пример #1
0
 /// <summary>
 ///     Loads OrderItems into passed Order
 /// </summary>
 /// <param name="order"></param>
 public void LoadOrderItems(Order order)
 {
     if (order.Id == null)
     {
         throw new ArgumentNullException(nameof(order.Id), "Order Id is null");
     }
     using (var connection = Connector.GetConnection())
     {
         var orderItemDal = new OrderItemDal(connection);
         order.OrderItems = orderItemDal.Search(order.Id).ToList();
     }
 }
Пример #2
0
 /// <summary>
 ///     Searches for all orders and returns matches
 /// </summary>
 /// <returns></returns>
 public IEnumerable <Order> GetOrders(bool?isCredit = null, uint?customerId = null, string note = null)
 {
     using (var connection = Connector.GetConnection())
     {
         var orderDal     = new OrderDal(connection);
         var orderItemDal = new OrderItemDal(connection);
         var orders       = orderDal.Search(isCredit, customerId, note == null ? null : $"%{note}%");
         foreach (var order in orders)
         {
             order.OrderItems = orderItemDal.Search(order.Id).ToList();
             yield return(order);
         }
     }
 }
Пример #3
0
        /// <summary>
        ///     Adds a new Order
        /// </summary>
        public void AddOrder(Order order)
        {
            // Exception handling
            if (order.OrderItems == null)
            {
                throw new ArgumentNullException(nameof(order.OrderItems),
                                                "Attempted inserting order without orderEntries initialized");
            }
            if (order.IsCancelled)
            {
                throw new ArgumentException("Attempted inserting a cancelled order", nameof(order.IsCancelled));
            }

            using (var scope = new TransactionScope())
            {
                using (var connection = Connector.GetConnection())
                {
                    var orderDal     = new OrderDal(connection);
                    var orderItemDal = new OrderItemDal(connection);
                    var itemDal      = new ItemDal(connection);

                    // Insert order record
                    orderDal.Insert(order.CustomerId, order.Amount, order.Note);
                    order.Id = orderDal.GetLastInsertId();
                    if (order.Id == null)
                    {
                        throw new ArgumentNullException(nameof(order.Id),
                                                        "Order has not been set after insert");
                    }

                    // Insert order entries
                    orderItemDal.InsertMultiple(order.Id.Value, order.OrderItems);
                    // Update inventory
                    foreach (var orderItem in order.OrderItems)
                    {
                        itemDal.Update(orderItem.ProductId, stockIncrement: (int)-orderItem.Qty);
                    }
                }
                scope.Complete();
            }
        }