Beispiel #1
0
        /// <summary>
        ///     Adds a new purchase
        /// </summary>
        /// <param name="purchase"></param>
        public void AddPurchase(Purchase purchase)
        {
            if (purchase.SupplierId == null)
            {
                throw new ArgumentNullException(nameof(purchase.SupplierId), "Purchase SupplierId is null");
            }
            using (var scope = new TransactionScope())
            {
                using (var connection = Connector.GetConnection())
                {
                    var purchaseDal = new PurchaseDal(connection);
                    var itemDal     = new ItemDal(connection);
                    purchaseDal.Insert(purchase.SupplierId.Value, purchase.Amount, purchase.Note, purchase.IsSettled);
                    purchase.Id = purchaseDal.GetLastInsertId();

                    if (purchase.Id == null)
                    {
                        throw new ArgumentNullException(nameof(purchase.Id),
                                                        "Purchase Id null after insert");
                    }

                    var purchaseItemDal = new PurchaseItemDal(connection);

                    // Insert purchase items
                    purchaseItemDal.InsertMultiple(purchase.Id.Value, purchase.PurchaseItems);

                    // Update inventory
                    foreach (var purchaseItem in purchase.PurchaseItems)
                    {
                        itemDal.Update(purchaseItem.ItemId, stockIncrement: (int)purchaseItem.Qty);
                    }
                }
                scope.Complete();
            }
        }