/// <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(); } }
/// <summary> /// Update a set of purchases /// </summary> /// <param name="purchases"></param> /// <param name="isSettled"></param> public void UpdatePurchaseMultiple(IEnumerable <Purchase> purchases, bool isSettled) { var purchasesList = purchases.ToList(); if (purchasesList.Any(p => p.Id == null)) { throw new ArgumentNullException(nameof(purchasesList), "Some Purchases have null Id"); } using (var scope = new TransactionScope()) { using (var connection = Connector.GetConnection()) { var purchaseDal = new PurchaseDal(connection); foreach (var purchase in purchasesList) { purchaseDal.Update(purchase.Id.GetValueOrDefault(), isSettled: isSettled); } } scope.Complete(); } }