/// <summary> /// Updates a purchase /// </summary> /// <param name="purchase"></param> /// <param name="supplierId"></param> /// <param name="amount"></param> /// <param name="isSettled"></param> /// <param name="note"></param> /// <param name="purchaseItems"></param> public void UpdatePurchase(Purchase purchase, uint?supplierId = null, decimal?amount = null, bool?isSettled = null, string note = null, IEnumerable <PurchaseItem> purchaseItems = null) { using (var scope = new TransactionScope()) { using (var connection = Connector.GetConnection()) { if (purchase.Id == null) { throw new ArgumentNullException(nameof(purchase.Id), "Purchase Id is null"); } var purchaseDal = new PurchaseDal(connection); purchaseDal.Update(purchase.Id.Value, supplierId, amount, isSettled, note); var purchaseItemsList = purchaseItems?.ToList(); if (purchaseItemsList?.Any() == true) { var purchaseItemDal = new PurchaseItemDal(connection); purchaseItemDal.Delete(purchase.Id.Value); purchaseItemDal.InsertMultiple(purchase.Id.Value, purchaseItemsList); } } scope.Complete(); } }