public bool UpdateLinksRelated(LinksRelated links)
 {
     _unitOfWork.Repository <LinksRelated>().Update(links);
     return(_unitOfWork.Save());
 }
        public IActionResult ExecutePaymentPayPal(InfoPayment infoPayment)
        {
            APIResponseData responseData = new APIResponseData();

            responseData.StatusCode = 0;
            responseData.Message    = "Failed.";
            try
            {
                var payment = _PaypalServices.ExecutePayment(infoPayment.PaymentId, infoPayment.PayerId);

                var result = _TransactionsService.GetTransactionById(infoPayment.TranId);
                result.PaymentCardToken = infoPayment.PaymentToken;
                result.StripeCustomerId = infoPayment.PayerId;
                result.Status           = payment.state;
                result.ModifiedDate     = DateTime.Now;

                _TransactionsService.UpdateTransactions(result);


                foreach (var tran in payment.transactions)
                {
                    foreach (var item in tran.related_resources)
                    {
                        var RelatedTrans = new RelatedTransactionDetails()
                        {
                            totalAmount                 = Convert.ToDecimal(item.sale.amount.total),
                            TransID                     = result.ID.ToString(),
                            currency                    = item.sale.amount.currency,
                            IdRelatedSale               = item.sale.id,
                            payment_mode                = item.sale.payment_mode,
                            state                       = item.sale.state,
                            protection_eligibility      = item.sale.protection_eligibility,
                            protection_eligibility_type = item.sale.protection_eligibility_type,
                            parent_payment              = item.sale.parent_payment,
                        };
                        _IRelatedTransaction.InsertRelatedTransactionDetails(RelatedTrans);
                        foreach (var link in item.sale.links)
                        {
                            var LinksRelated = new LinksRelated()
                            {
                                href   = link.href,
                                method = link.method,
                                rel    = link.rel,
                                IdRelatedTransaction = RelatedTrans.ID,
                            };
                            linksRelatedService.InsertLinksRelated(LinksRelated);
                        }
                    }
                }


                // Hint: You can save the transaction details to your database using payment/buyer info
                responseData.StatusCode  = 1;
                responseData.Message     = "Success";
                responseData.Result.Data = new
                {
                    TransactionId = infoPayment.TranId,
                    Status        = payment.state
                };

                var PaymentLogs = new PaymentLogs()
                {
                    Data         = Newtonsoft.Json.JsonConvert.SerializeObject(payment),
                    Error        = "Success",
                    PaymentType  = "PAYPAL",
                    FunctionName = "ExecutePaymentPayPal",
                    TransID      = infoPayment.TranId
                };
                _PaymentLogsService.InsertPaymentLogs(PaymentLogs);
            }
            catch (Exception ex)
            {
                responseData.StatusCode = 0;
                responseData.Message    = "Something went wrong, please try again.";
                var typeEx = ex.GetType();
                if (typeEx.FullName == "PayPal.PayPalException")
                {
                    dynamic excep       = ex.InnerException;
                    dynamic sourceEx    = excep == null ? "" : excep?.InnerExceptions[0]?.Response;
                    var     PaymentLogs = new PaymentLogs()
                    {
                        Data         = Newtonsoft.Json.JsonConvert.SerializeObject(infoPayment),
                        Error        = sourceEx,
                        PaymentType  = "PAYPAL",
                        FunctionName = "ExecutePaymentPayPal",
                        TransID      = infoPayment.TranId
                    };
                    _PaymentLogsService.InsertPaymentLogs(PaymentLogs);
                }
                else
                {
                    var PaymentLogs = new PaymentLogs()
                    {
                        //Data = Newtonsoft.Json.JsonConvert.SerializeObject(infoPayment),
                        Data         = Newtonsoft.Json.JsonConvert.SerializeObject(infoPayment),
                        Error        = ex.InnerException.Message,
                        PaymentType  = "PAYPAL",
                        FunctionName = "ExecutePaymentPayPal",
                        TransID      = infoPayment.TranId
                    };
                    _PaymentLogsService.InsertPaymentLogs(PaymentLogs);
                }


                EmailHelpers.SendEmail(new Common.DTO.ErrorInfo()
                {
                    Section   = $"ExecutePaymentPayPal <br /> TransactionID : {infoPayment.TranId}",
                    Exception = ex
                });
            }

            return(Ok(responseData));
        }
 public void InsertLinksRelated(LinksRelated links)
 {
     _unitOfWork.Repository <LinksRelated>().Add(links);
     //return _unitOfWork.Save();
 }