コード例 #1
0
        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);
        }