public async Task <IncentiveRequestDetail> SaveIncentiveRequestDetail( [FromBody] IncentiveRequestDetail PostedGetIncentiveRequestDetail) { if (!ModelState.IsValid) { throw new ApiException("Model binding failed.", 500); } try { using (var transaction = await _IncentiveRequestDetailRepoo.Context.Database.BeginTransactionAsync()) { //construction materials or lab equipment if (PostedGetIncentiveRequestDetail.IncentiveCategoryId == 10778 || PostedGetIncentiveRequestDetail.IncentiveCategoryId == 10779) { var newBalance = PostedGetIncentiveRequestDetail.Balance - PostedGetIncentiveRequestDetail.ApprovedQty; var intBoMTableId = PostedGetIncentiveRequestDetail.IncentiveItemId; var incentiveBoMRequestItem = await _IncentiveBoMRepo.Context.IncentiveBoMRequestItem.SingleOrDefaultAsync(m => m.IncentiveBoMRequestItemId == intBoMTableId); if (incentiveBoMRequestItem != null) { incentiveBoMRequestItem.Balance = newBalance; _IncentiveRequestDetailRepoo.Context.Entry(incentiveBoMRequestItem).State = EntityState.Modified; await _IncentiveBoMRepo.SaveAsync(incentiveBoMRequestItem); } } if (!await _IncentiveRequestDetailRepoo.SaveAsync(PostedGetIncentiveRequestDetail)) { transaction.Rollback(); throw new ApiException(_IncentiveRequestDetailRepoo.ErrorMessage); } transaction.Commit(); } } catch (Exception e) { throw new ApiException(e.Message); } return(PostedGetIncentiveRequestDetail); }