Esempio n. 1
0
        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
                }));
            }
        }
Esempio n. 2
0
        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);
        }