Exemplo n.º 1
0
        public MP_PayPalTransaction SavePayPalTransactionInfo(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace, List <PayPalTransactionItem> data, MP_CustomerMarketplaceUpdatingHistory historyRecord, MP_PayPalTransaction mpTransaction)
        {
            MP_CustomerMarketPlace customerMarketPlace = GetCustomerMarketPlace(databaseCustomerMarketPlace.Id);

            if (data == null)
            {
                return(mpTransaction);
            }

            if (mpTransaction == null)
            {
                mpTransaction = new MP_PayPalTransaction {
                    CustomerMarketPlace = customerMarketPlace,
                    Created             = DateTime.UtcNow,
                    HistoryRecord       = historyRecord
                };
            }

            if (data.Count != 0)
            {
                foreach (var dataItem in data)
                {
                    var mpTransactionItem = new MP_PayPalTransactionItem2 {
                        Transaction = mpTransaction,
                        Created     = dataItem.Created,
                        Currency    = _CurrencyRateRepository.GetCurrencyOrCreate("GBP"),
                        FeeAmount   =
                            _CurrencyConvertor.ConvertToBaseCurrency(
                                dataItem.FeeAmount ?? new AmountInfo {
                            CurrencyCode = "GBP", Value = 0
                        }, dataItem.Created).Value,
                        GrossAmount =
                            _CurrencyConvertor.ConvertToBaseCurrency(
                                dataItem.GrossAmount ?? new AmountInfo {
                            CurrencyCode = "GBP", Value = 0
                        }, dataItem.Created).Value,
                        NetAmount =
                            _CurrencyConvertor.ConvertToBaseCurrency(
                                dataItem.NetAmount ?? new AmountInfo {
                            CurrencyCode = "GBP", Value = 0
                        }, dataItem.Created).Value,
                        TimeZone            = dataItem.Timezone,
                        Status              = dataItem.Status,
                        Type                = dataItem.Type,
                        PayPalTransactionId = dataItem.TransactionId
                    };

                    mpTransaction.TransactionItems.Add(mpTransactionItem);
                }
            }

            customerMarketPlace.PayPalTransactions.Add(mpTransaction);
            _CustomerMarketplaceRepository.Update(customerMarketPlace);

            return(mpTransaction);
        }
Exemplo n.º 2
0
        private UpdateActionResultInfo UpdateTransactionInfo(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace, PayPalSecurityData securityInfo, MP_CustomerMarketplaceUpdatingHistory historyRecord)
        {
            var endDate         = DateTime.UtcNow;
            var elapsedTimeInfo = new ElapsedTimeInfo();

            DateTime?startDate = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                elapsedTimeInfo,
                databaseCustomerMarketPlace.Id,
                ElapsedDataMemberType.RetrieveDataFromDatabase,
                () => Helper.GetLastPayPalTransactionDate(databaseCustomerMarketPlace)
                );

            if (!startDate.HasValue)
            {
                startDate = endDate.AddMonths(-CurrentValues.Instance.PayPalTransactionSearchMonthsBack);
            }

            var errorRetryingInfo = new ErrorRetryingInfo((bool)CurrentValues.Instance.PayPalEnableRetrying, CurrentValues.Instance.PayPalMinorTimeoutInSeconds, CurrentValues.Instance.PayPalUseLastTimeOut);

            errorRetryingInfo.Info    = new ErrorRetryingItemInfo[3];
            errorRetryingInfo.Info[0] = new ErrorRetryingItemInfo(CurrentValues.Instance.PayPalIterationSettings1Index, CurrentValues.Instance.PayPalIterationSettings1CountRequestsExpectError, CurrentValues.Instance.PayPalIterationSettings1TimeOutAfterRetryingExpiredInMinutes);
            errorRetryingInfo.Info[1] = new ErrorRetryingItemInfo(CurrentValues.Instance.PayPalIterationSettings2Index, CurrentValues.Instance.PayPalIterationSettings2CountRequestsExpectError, CurrentValues.Instance.PayPalIterationSettings2TimeOutAfterRetryingExpiredInMinutes);
            errorRetryingInfo.Info[2] = new ErrorRetryingItemInfo(CurrentValues.Instance.PayPalIterationSettings3Index, CurrentValues.Instance.PayPalIterationSettings3CountRequestsExpectError, CurrentValues.Instance.PayPalIterationSettings3TimeOutAfterRetryingExpiredInMinutes);

            var reqInfo = new PayPalRequestInfo {
                SecurityInfo         = securityInfo,
                StartDate            = startDate.Value,
                EndDate              = endDate,
                ErrorRetryingInfo    = errorRetryingInfo,
                OpenTimeOutInMinutes = CurrentValues.Instance.PayPalOpenTimeoutInMinutes,
                SendTimeoutInMinutes = CurrentValues.Instance.PayPalSendTimeoutInMinutes,
                DaysPerRequest       = CurrentValues.Instance.PayPalDaysPerRequest
            };

            MP_PayPalTransaction mpTransaction = null;
            int numOfTransactions = 0;
            RequestsCounterData requestsCounter = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                elapsedTimeInfo,
                databaseCustomerMarketPlace.Id,
                ElapsedDataMemberType.RetrieveDataFromExternalService,
                () => PayPalServiceHelper.GetTransactionData(reqInfo, data => {
                mpTransaction      = Helper.SavePayPalTransactionInfo(databaseCustomerMarketPlace, data, historyRecord, mpTransaction);
                numOfTransactions += (data == null ? 0 : data.Count);
                return(true);
            })
                );

            return(new UpdateActionResultInfo {
                Name = UpdateActionResultType.TransactionItemsCount,
                Value = numOfTransactions,
                RequestsCounter = requestsCounter,
                ElapsedTime = elapsedTimeInfo
            });
        }