Exemplo n.º 1
0
        public async Task <Result <PaymentRequest> > CancelPaymentRequest(int paymentRequestId, string reason = null)
        {
            var paymentRequest = await _paymentsData.Get(paymentRequestId);

            if (paymentRequest == null)
            {
                return new Result <PaymentRequest> {
                           Message = PaymentConstants.NotFound, Success = false
                }
            }
            ;

            if (paymentRequest.Status != PaymentStatus.Pending)
            {
                return(new Result <PaymentRequest> {
                    Entity = paymentRequest, Message = $"Cannot cancel payment because it is {paymentRequest.Status}", Success = false
                });
            }

            ClosePaymentRequest(paymentRequest, reason);

            if (await _paymentsData.Commit() > 0)
            {
                return(new Result <PaymentRequest> {
                    Entity = paymentRequest, Message = "Payment request cancelled successfully.", Success = true
                });
            }

            return(new Result <PaymentRequest> {
                Entity = paymentRequest, Message = PaymentConstants.CouldNotBeSaved, Success = false
            });
        }