public async Task <ActionResult> RecordPayment([FromBody] group_transactions payment) { if (!ModelState.IsValid) { return(BadRequest(new ApiGeneralResponse { Status = false })); } try { var newTrans = await _GroupTransactionRepository.RecordPaymentAsync(payment); if (newTrans == null) { return(BadRequest(new ApiGeneralResponse { Status = false })); } return(CreatedAtAction("GetTransactionRoute", new { id = newTrans.grouptransactionID }, new ApiGeneralResponse { Status = true, id = newTrans.grouptransactionID })); } catch (Exception exp) { _Logger.LogError(exp.Message); return(BadRequest(new ApiGeneralResponse { Status = false })); } }
public async Task <group_transactions> RecordPaymentAsync(group_transactions payment) { _Context.group_transaction.Add(payment); if (payment.groupID == null) { var settleData = _Context.payment.SingleOrDefault(c => c.payerID == payment.grouptransPayerID && c.commonmemberID == payment.grouptransReceiverID && c.groupID == null); if (settleData != null) { settleData.payment_amount = settleData.payment_amount - payment.paid_share; _Context.payment.Attach(settleData); } else { var set = _Context.payment.SingleOrDefault(c => c.payerID == payment.grouptransReceiverID && c.commonmemberID == payment.grouptransPayerID && c.groupID == null); if (set != null) { set.payment_amount = set.payment_amount + payment.paid_share; _Context.payment.Attach(set); } else { payment settle = new payment(); settle.payerID = (int)payment.grouptransReceiverID; settle.commonmemberID = (int)payment.grouptransPayerID; settle.payment_amount = payment.paid_share; _Context.payment.Add(settle); } } } else { var settleData = _Context.payment.SingleOrDefault(c => c.payerID == payment.grouptransPayerID && c.commonmemberID == payment.grouptransReceiverID && c.groupID == payment.groupID); if (settleData != null) { settleData.payment_amount = settleData.payment_amount - payment.paid_share; _Context.payment.Attach(settleData); } else { var set = _Context.payment.SingleOrDefault(c => c.payerID == payment.grouptransReceiverID && c.commonmemberID == payment.grouptransPayerID && c.groupID == payment.groupID); if (set != null) { set.payment_amount = set.payment_amount + payment.paid_share; _Context.payment.Attach(set); } else { payment settle = new payment(); settle.commonmemberID = (int)payment.grouptransPayerID; settle.payerID = (int)payment.grouptransReceiverID; settle.groupID = payment.groupID; settle.payment_amount = payment.paid_share; _Context.payment.Add(settle); } } } try { await _Context.SaveChangesAsync(); } catch (System.Exception exp) { _Logger.LogError($"Error in {nameof(RecordPaymentAsync)}: " + exp.Message); } return(payment); }