Beispiel #1
0
        public void StoreAmazonFeedbackData(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace, DatabaseAmazonFeedbackData data, MP_CustomerMarketplaceUpdatingHistory historyRecord)
        {
            if (data == null)
            {
                WriteToLog("StoreAmazonUserData: invalid data to store", WriteLogType.Error);
                return;
            }

            MP_CustomerMarketPlace customerMarketPlace = GetCustomerMarketPlace(databaseCustomerMarketPlace.Id);

            var feedBack = new MP_AmazonFeedback {
                CustomerMarketPlace = customerMarketPlace,
                Created             = data.Submitted,
                UserRaining         = data.UserRaining,
                HistoryRecord       = historyRecord
            };

            if (data.FeedbackByPeriod != null && data.FeedbackByPeriod.Count > 0)
            {
                feedBack.FeedbackByPeriodItems.AddAll(data.FeedbackByPeriod.Values.Select(f => new MP_AmazonFeedbackItem {
                    AmazonFeedback = feedBack,
                    Count          = f.Count,
                    Negative       = f.Negative,
                    Positive       = f.Positive,
                    Neutral        = f.Neutral,
                    TimePeriod     = GetTimePeriod(TimePeriodFactory.Create(f.TimePeriod))
                }).ToList());
            }

            customerMarketPlace.AmazonFeedback.Add(feedBack);

            _CustomerMarketplaceRepository.Update(customerMarketPlace);
        }
        }         // RetrieveCustomerSecurityInfo

        protected override ElapsedTimeInfo RetrieveAndAggregate(
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
            MP_CustomerMarketplaceUpdatingHistory historyRecord
            )
        {
            return(new ElapsedTimeInfo());
        } // RetrieveAndAggregate
        }         // RetrieveAndAggregate

        private void CheckTokenStatus(
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
            DataProviderCreationInfo info,
            MP_CustomerMarketplaceUpdatingHistory historyRecord
            )
        {
            Helper.CustomerMarketplaceUpdateAction(
                CustomerMarketplaceUpdateActionType.UpdateAccountInfo,
                databaseCustomerMarketPlace,
                historyRecord,
                () => {
                var elapsedTimeInfo = new ElapsedTimeInfo();

                var checker = new DataProviderCheckAuthenticationToken(info);

                var result = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                    elapsedTimeInfo,
                    databaseCustomerMarketPlace.Id,
                    ElapsedDataMemberType.RetrieveDataFromExternalService,
                    () => checker.Check()
                    );

                return(new UpdateActionResultInfo {
                    Name = UpdateActionResultType.GetTokenStatus,
                    RequestsCounter = result == null ? null : result.RequestsCounter,
                    ElapsedTime = elapsedTimeInfo
                });
            }
                );
        }         // CheckTokenStatus
 protected virtual void InternalUpdateInfo(
     IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
     MP_CustomerMarketplaceUpdatingHistory historyRecord
     )
 {
     RetrieveAndAggregate(databaseCustomerMarketPlace, historyRecord);
 }
Beispiel #5
0
        }         // RetrieveCustomerSecurityInfo

        protected override ElapsedTimeInfo RetrieveAndAggregate(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
                                                                MP_CustomerMarketplaceUpdatingHistory historyRecord)
        {
            var securityInfo = (YodleeSecurityInfo)RetrieveCustomerSecurityInfo(databaseCustomerMarketPlace.Id);

            return(UpdateClientOrdersInfo(databaseCustomerMarketPlace, securityInfo, historyRecord));
        }         // RetrieveAndAggregate
Beispiel #6
0
        private MP_EbayAmazonCategory[] GetAndSaveAmazonProcuctCategoryByProductSellerSku(
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
            AmazonSecurityInfo securityInfo,
            string sellerSku,
            ActionAccessType access,
            RequestsCounterData requestCounter,
            ElapsedTimeInfo elapsedTimeInfo
            )
        {
            var categories = Helper.FindAmazonCategoryByProductSellerSKU(sellerSku, elapsedTimeInfo, databaseCustomerMarketPlace.Id);

            if (categories == null)
            {
                var requestInfo = new AmazonProductsRequestInfoBySellerSku {
                    MarketplaceId     = securityInfo.MarketplaceId,
                    MerchantId        = securityInfo.MerchantId,
                    SellerSku         = sellerSku,
                    ErrorRetryingInfo = this.amazonSettings,
                    MWSAuthToken      = securityInfo.MWSAuthToken
                };
                categories = GetAndSaveAmazonProcuctCategory(databaseCustomerMarketPlace, requestInfo, access, requestCounter, elapsedTimeInfo);
            }

            return(categories);
        }
Beispiel #7
0
        private void UpdateClientFeedbackInfo(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace, AmazonSecurityInfo securityInfo, MP_CustomerMarketplaceUpdatingHistory historyRecord)
        {
            Helper.CustomerMarketplaceUpdateAction(CustomerMarketplaceUpdateActionType.UpdateFeedbackInfo, databaseCustomerMarketPlace, historyRecord, () => {
                var elapsedTimeInfo = new ElapsedTimeInfo();

                var request = new AmazonUserInfo {
                    MerchantId = securityInfo.MerchantId,
                };

                var amazonUserRatingInfo = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(elapsedTimeInfo,
                                                                                                          databaseCustomerMarketPlace.Id,
                                                                                                          ElapsedDataMemberType.RetrieveDataFromExternalService,
                                                                                                          () => AmazonServiceHelper.GetUserStatisticsInfo(request)
                                                                                                          );

                ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(elapsedTimeInfo,
                                                                               databaseCustomerMarketPlace.Id,
                                                                               ElapsedDataMemberType.StoreDataToDatabase,
                                                                               () => ParceAndSaveUserFeedbackInfo(databaseCustomerMarketPlace, amazonUserRatingInfo, historyRecord)
                                                                               );

                return(new UpdateActionResultInfo {
                    Name = UpdateActionResultType.FeedbackRaiting,
                    Value = amazonUserRatingInfo == null ? null : (object)amazonUserRatingInfo.Rating,
                    RequestsCounter = amazonUserRatingInfo == null ? null : amazonUserRatingInfo.RequestsCounter,
                    ElapsedTime = elapsedTimeInfo
                });
            });
        }
Beispiel #8
0
        }         // ValidateAccount

        private int SaveMarketplace(AddAccountState oState, AccountModel model)
        {
            int nResult = -1;

            try {
                new Transactional(() => {
                    model.id          = _mpTypes.GetAll().First(a => a.InternalId == oState.VendorInfo.Guid()).Id;
                    model.displayName = model.displayName ?? model.name;

                    IDatabaseCustomerMarketPlace mp = _helper.SaveOrUpdateEncryptedCustomerMarketplace(
                        model.name,
                        oState.Marketplace,
                        model,
                        _context.Customer
                        );

                    oState.Model = Json(AccountModel.ToModel(mp), JsonRequestBehavior.AllowGet);
                    oState.CustomerMarketPlace = mp;
                    nResult = mp.Id;
                }).Execute();
            }
            catch (Exception e) {
                ms_oLog.Error(e, "Failed to save marketplace.");
                oState.Error = CreateError(e);
            }             // try

            return(nResult);
        }         // SaveMarketplace
Beispiel #9
0
        private MP_EbayAmazonCategory[] GetAndSaveAmazonProcuctCategory(
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
            AmazonProductsRequestInfoBySellerSku requestInfo,
            ActionAccessType access,
            RequestsCounterData requestCounter,
            ElapsedTimeInfo elapsedTimeInfo
            )
        {
            MP_EbayAmazonCategory[] categories = null;

            AmazonProductItemBase productItem = null;

            try {
                productItem = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                    elapsedTimeInfo,
                    databaseCustomerMarketPlace.Id,
                    ElapsedDataMemberType.RetrieveDataFromExternalService,
                    () => AmazonServiceHelper.GetProductCategories(this.connectionInfo, requestInfo, access, requestCounter)
                    );
            } catch (MarketplaceWebServiceProductsException) {
                // Product not found or cannot be retrieved.
            }             // try

            if (productItem != null)
            {
                var marketplace = databaseCustomerMarketPlace.Marketplace;
                categories = Helper.AddAmazonCategories(marketplace, productItem, elapsedTimeInfo, databaseCustomerMarketPlace.Id);
            }             // if

            return(categories);
        }
 protected virtual void InternalUpdateInfoFirst(
     IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
     MP_CustomerMarketplaceUpdatingHistory historyRecord
     )
 {
     InternalUpdateInfo(databaseCustomerMarketPlace, historyRecord);
 }
Beispiel #11
0
        public void SaveOrUpdateAcctountInfo(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace, PayPalPersonalData data)
        {
            MP_CustomerMarketPlace customerMarketPlace = GetCustomerMarketPlace(databaseCustomerMarketPlace.Id);

            if (customerMarketPlace.PersonalInfo == null)
            {
                customerMarketPlace.PersonalInfo = new MP_PayPalPersonalInfo {
                    CustomerMarketPlace = customerMarketPlace,
                };

                _CustomerMarketplaceRepository.Save(customerMarketPlace);
            }

            MP_PayPalPersonalInfo info = customerMarketPlace.PersonalInfo;

            info.Updated      = data.SubmittedDate;
            info.BusinessName = data.BusinessName;
            info.City         = data.AddressCity;
            info.FirstName    = data.FirstName;
            info.Country      = data.AddressCountry;
            info.DateOfBirth  = data.BirthDate;
            info.Phone        = data.Phone == "0" ? null : data.Phone;
            info.EMail        = data.Email;
            info.LastName     = data.LastName;
            info.FullName     = data.FullName;
            info.PlayerId     = data.PlayerId;
            info.Postcode     = data.AddressPostCode;
            info.State        = data.AddressState;
            info.Street1      = data.AddressStreet1;
            info.Street2      = data.AddressStreet2;

            _CustomerMarketplaceRepository.SaveOrUpdate(customerMarketPlace);
        }
        private IDatabaseCustomerMarketPlace SaveSage(SageServiceInfo oEsi, AccessTokenContainer accessTokenContainer, string approvalToken)
        {
            IDatabaseCustomerMarketPlace oResult = null;

            Transactional.Execute(() => {
                int marketPlaceId = _mpTypes
                                    .GetAll()
                                    .First(a => a.InternalId == oEsi.InternalId)
                                    .Id;

                var securityData = new SageSecurityInfo {
                    ApprovalToken = approvalToken,
                    AccessToken   = accessTokenContainer.access_token,
                    TokenType     = accessTokenContainer.token_type,
                    MarketplaceId = marketPlaceId
                };

                var sageDatabaseMarketPlace = new SageDatabaseMarketPlace();

                string accountName = string.Format("SageOne Account #{0}",
                                                   _customer.CustomerMarketPlaces.Count(a => a.Marketplace.InternalId == oEsi.InternalId) + 1
                                                   );

                log.Info("Saving sage marketplace data...");
                var marketPlace = _helper.SaveOrUpdateCustomerMarketplace(accountName, sageDatabaseMarketPlace, securityData, _customer);
                log.Info("Saved sage marketplace data.");

                oResult = marketPlace;
            });

            return(oResult);
        }
Beispiel #13
0
        public AmazonOrdersList GetAllAmazonOrdersData(DateTime submittedDate, IDatabaseCustomerMarketPlace databaseCustomerMarketPlace)
        {
            MP_CustomerMarketPlace customerMarketPlace = GetCustomerMarketPlace(databaseCustomerMarketPlace.Id);

            var orders = new AmazonOrdersList(submittedDate);

            orders.AddRange(customerMarketPlace
                            .AmazonOrders
                            .SelectMany(amazonOrder => amazonOrder.OrderItems)
                            .Distinct(new AmazonOrderComparer())
                            .Select(o => {
                AmazonOrdersList2ItemStatusType orderStatus;
                Enum.TryParse(o.OrderStatus, out orderStatus);
                return(new AmazonOrderItem {
                    OrderId = o.OrderId,
                    OrderStatus = orderStatus,
                    PurchaseDate = o.PurchaseDate,
                    LastUpdateDate = o.LastUpdateDate,
                    NumberOfItemsShipped = o.NumberOfItemsShipped,
                    NumberOfItemsUnshipped = o.NumberOfItemsUnshipped,
                    OrderTotal = _CurrencyConvertor.ConvertToBaseCurrency(o.OrderTotal, o.PurchaseDate),
                    PaymentsInfo =
                        new AmazonOrderItem2PaymentsInfoList(
                            o.PaymentsInfo.Select(pi => new AmazonOrderItem2PaymentInfoListItem {
                        MoneyInfo = _CurrencyConvertor.ConvertToBaseCurrency(pi.MoneyInfo, o.PurchaseDate),
                        PaymentMethod = pi.SubPaymentMethod
                    })),
                    SellerOrderId = o.SellerOrderId,
                });
            }));

            return(orders);
        }
        private void UpdateAccountInfo(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace)
        {
            var securityInfo = RetrieveCustomerSecurityInfo <PayPalSecurityData>(databaseCustomerMarketPlace);
            PayPalPersonalData personalData = GetAccountInfo(securityInfo.PermissionsGranted);

            Helper.SaveOrUpdateAcctountInfo(databaseCustomerMarketPlace, personalData);
        }
Beispiel #15
0
 public static FreeAgentAccountModel ToModel(IDatabaseCustomerMarketPlace account)
 {
     return(new FreeAgentAccountModel
     {
         id = account.Id,
         displayName = account.DisplayName
     });
 }
        }         // InternalUpdateInfo

        protected override ElapsedTimeInfo RetrieveAndAggregate(
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
            MP_CustomerMarketplaceUpdatingHistory historyRecord
            )
        {
            // This method is not implemented here because elapsed time is got from over source.
            throw new NotImplementedException();
        }         // RetrieveAndAggregate
Beispiel #17
0
 public AddAccountState()
 {
     VendorInfo          = null;
     AccountData         = null;
     Marketplace         = null;
     Error               = null;
     Model               = null;
     CustomerMarketPlace = null;
 }     // constructor
Beispiel #18
0
        protected override void InternalUpdateInfoFirst(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace, MP_CustomerMarketplaceUpdatingHistory historyRecord)
        {
            log.DebugFormat("InternalUpdateInfoFirst customer {0} amazon mp {1}", databaseCustomerMarketPlace.Customer.Id, databaseCustomerMarketPlace.DisplayName);
            var securityInfo = RetrieveCustomerSecurityInfo <AmazonSecurityInfo>(databaseCustomerMarketPlace);

            UpdateClientOrdersInfo(databaseCustomerMarketPlace, securityInfo, ActionAccessType.Full, historyRecord);
            //UpdateClientInventoryInfo( databaseCustomerMarketPlace, securityInfo, ActionAccessType.Full, historyRecord );
            UpdateClientFeedbackInfo(databaseCustomerMarketPlace, securityInfo, historyRecord);
        }
Beispiel #19
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);
        }
        public DateTime?GetLastPayPalTransactionRequest(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace)
        {
            var mpCustomerMarketPlace = GetMarketPlace(databaseCustomerMarketPlace);

            if (mpCustomerMarketPlace == null || mpCustomerMarketPlace.PayPalTransactions.Count == 0)
            {
                return(null);
            }
            return(mpCustomerMarketPlace.PayPalTransactions.Max(o => o.Created));
        }
        public DateTime?GetLastAmazonOrdersRequest(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace)
        {
            var mpCustomerMarketPlace = GetMarketPlace(databaseCustomerMarketPlace);

            if (mpCustomerMarketPlace == null || mpCustomerMarketPlace.AmazonOrders.Count == 0)
            {
                return(null);
            }
            return(mpCustomerMarketPlace.AmazonOrders.Max(o => o.Created));
        }
Beispiel #22
0
        public static YodleeAccountModel ToModel(IDatabaseCustomerMarketPlace marketplace, YodleeBanksRepository yodleeBanksRepository)
        {
            var securityInfo = Serialized.Deserialize <YodleeSecurityInfo>(marketplace.SecurityData);

            var yodleeBank = yodleeBanksRepository.Search(securityInfo.CsId);

            return(new YodleeAccountModel {
                bankId = yodleeBank.Id,
                displayName = yodleeBank.Name
            });
        }         // ToModel
Beispiel #23
0
        public void StoreEbayUserAccountData(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace, IDatabaseEbayAccountInfo data, MP_CustomerMarketplaceUpdatingHistory historyRecord)
        {
            if (data == null)
            {
                WriteToLog("StoreEbayUserData: invalid data to store", WriteLogType.Error);
                return;
            }

            MP_CustomerMarketPlace customerMarketPlace = GetCustomerMarketPlace(databaseCustomerMarketPlace.Id);

            try
            {
                var accountData = new MP_EbayUserAccountData
                {
                    CustomerMarketPlace = customerMarketPlace,
                    Created             = data.SubmittedDate.ToUniversalTime(),
                    Currency            = data.Currency,
                    Id                   = 0,
                    PaymentMethod        = data.PaymentMethod,
                    AccountId            = data.AccountId,
                    AccountState         = data.AccountState,
                    AmountPastDueValue   = data.AmountPastDueValue,
                    BankAccountInfo      = data.BankAccountInfo,
                    BankModifyDate       = data.BankModifyDate,
                    CreditCardExpiration = data.CreditCardExpiration,
                    CreditCardInfo       = data.CreditCardInfo,
                    CreditCardModifyDate = data.CreditCardModifyDate,
                    CurrentBalance       = data.CurrentBalance,
                    PastDue              = data.PastDue,
                    HistoryRecord        = historyRecord
                };

                if (data.AdditionalAccount != null && data.AdditionalAccount.Length > 0)
                {
                    data.AdditionalAccount.ForEach(
                        a => accountData.EbayUserAdditionalAccountData.Add(
                            new MP_EbayUserAdditionalAccountData
                    {
                        Currency            = a.Currency,
                        AccountCode         = a.AccountCode,
                        Balance             = a.Balance.Value,
                        EbayUserAccountData = accountData
                    }));
                }

                customerMarketPlace.EbayUserAccountData.Add(accountData);

                _CustomerMarketplaceRepository.Update(customerMarketPlace);
            }
            catch (Exception ex)
            {
                WriteToLog("StoreEbayUserData: failed to store data", WriteLogType.Error, ex);
            }
        }
        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
            });
        }
Beispiel #25
0
        public EbayDatabaseOrdersList GetAllEBayOrders(DateTime submittedDate, IDatabaseCustomerMarketPlace databaseCustomerMarketPlace)
        {
            var orders = new EbayDatabaseOrdersList(submittedDate);

            var dbOrders = _MP_EbayOrderRepository.GetOrdersItemsByMakretplaceId(databaseCustomerMarketPlace.Id);

            orders.AddRange(dbOrders.Select(o =>
            {
                EBayOrderStatusCodeType orderStatus;
                Enum.TryParse(o.OrderStatus, out orderStatus);
                return(new EbayDatabaseOrderItem
                {
                    PaymentMethod = o.PaymentMethod,
                    AmountPaid = _CurrencyConvertor.ConvertToBaseCurrency(o.AmountPaid, o.CreatedTime),
                    OrderStatus = orderStatus,
                    PaymentHoldStatus = o.PaymentHoldStatus,
                    ShippingAddressData = Convert(o.ShippingAddress),
                    BuyerName = o.BuyerName,
                    CheckoutStatus = o.CheckoutStatus,
                    PaymentMethods = o.PaymentMethod,
                    SubTotal = _CurrencyConvertor.ConvertToBaseCurrency(o.SubTotal, o.CreatedTime),
                    Total = _CurrencyConvertor.ConvertToBaseCurrency(o.Total, o.CreatedTime),
                    AdjustmentAmount = _CurrencyConvertor.ConvertToBaseCurrency(o.AdjustmentAmount, o.CreatedTime),
                    PaymentTime = o.PaymentTime,
                    TransactionData = new EbayDatabaseTransactionDataList(o.Transactions.Select(t => new EbayDatabaseTransactionDataItem
                    {
                        CreatedDate = t.CreatedDate,
                        PaymentHoldStatus = t.PaymentHoldStatus,
                        QuantityPurchased = t.QuantityPurchased,
                        PaymentMethodUsed = t.PaymentMethodUsed,
                        TransactionPrice = _CurrencyConvertor.ConvertToBaseCurrency(t.TransactionPrice, t.CreatedDate),
                        ItemID = t.ItemID,
                        ItemPrivateNotes = t.ItemPrivateNotes,
                        ItemSKU = t.ItemSKU,
                        ItemSellerInventoryID = t.ItemSellerInventoryID,
                        eBayTransactionId = t.eBayTransactionId,
                        OrderItemDetail = t.OrderItemDetail
                    })),
                    CreatedTime = o.CreatedTime,
                    PaymentStatus = o.PaymentStatus,
                    ShippedTime = o.ShippedTime,
                    ExternalTransactionData = new EBayDatabaseExternalTransactionList(o.ExternalTransactions.Select(t => new EBayDatabaseExternalTransactionItem
                    {
                        FeeOrCreditAmount = t.FeeOrCreditAmount,
                        PaymentOrRefundAmount = t.PaymentOrRefundAmount,
                        TransactionID = t.TransactionID,
                        TransactionTime = t.TransactionTime
                    }))
                });
            }));

            return(orders);
        }
Beispiel #26
0
        public void StoreEbayFeedbackData(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace, DatabaseEbayFeedbackData data, MP_CustomerMarketplaceUpdatingHistory historyRecord)
        {
            if (data == null)
            {
                WriteToLog("StoreEbayUserData: invalid data to store", WriteLogType.Error);
                return;
            }

            MP_CustomerMarketPlace customerMarketPlace = GetCustomerMarketPlace(databaseCustomerMarketPlace.Id);

            var feedBack = new MP_EbayFeedback
            {
                CustomerMarketPlace = customerMarketPlace,
                Created             = data.Submitted,
                RepeatBuyerCount    = data.RepeatBuyerCount,
                RepeatBuyerPercent  = data.RepeatBuyerPercent,
                TransactionPercent  = data.TransactionPercent,
                UniqueBuyerCount    = data.UniqueBuyerCount,
                UniqueNegativeCount = data.UniqueNegativeCount,
                UniqueNeutralCount  = data.UniqueNeutralCount,
                UniquePositiveCount = data.UniquePositiveCount,
                HistoryRecord       = historyRecord
            };

            if (data.FeedbackByPeriod != null && data.FeedbackByPeriod.Count > 0)
            {
                feedBack.FeedbackByPeriodItems.AddAll(data.FeedbackByPeriod.Values.Select(f => new MP_EbayFeedbackItem
                {
                    EbayFeedback = feedBack,
                    Negative     = f.Negative,
                    Positive     = f.Positive,
                    Neutral      = f.Neutral,
                    TimePeriod   = GetTimePeriod(TimePeriodFactory.Create(f.TimePeriod))
                }).ToList());
            }

            if (data.RaitingByPeriod != null && data.RaitingByPeriod.Count > 0)
            {
                feedBack.RaitingByPeriodItems.AddAll(data.RaitingByPeriod.Values.Select(r => new MP_EbayRaitingItem
                {
                    EbayFeedback               = feedBack,
                    Communication              = r.Communication,
                    ItemAsDescribed            = r.ItemAsDescribed,
                    ShippingAndHandlingCharges = r.ShippingAndHandlingCharges,
                    ShippingTime               = r.ShippingTime,
                    TimePeriod = GetTimePeriod(TimePeriodFactory.Create(r.TimePeriod))
                }).ToList());
            }

            customerMarketPlace.EbayFeedback.Add(feedBack);

            _CustomerMarketplaceRepository.Update(customerMarketPlace);
        }
        public DateTime?GetLastPayPalTransactionDate(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace)
        {
            var mpCustomerMarketPlace = GetMarketPlace(databaseCustomerMarketPlace);

            if (mpCustomerMarketPlace == null || mpCustomerMarketPlace.PayPalTransactions.Count == 0)
            {
                return(null);
            }

            var transactionsDates = mpCustomerMarketPlace.PayPalTransactions.SelectMany(x => x.TransactionItems).Select(x => x.Created).ToList();

            return(transactionsDates.Any() ? transactionsDates.Max() : (DateTime?)null);
        }
Beispiel #28
0
        public void StoreEbayUserData(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace, IDatabaseEbayUserData data, MP_CustomerMarketplaceUpdatingHistory historyRecord)
        {
            if (data == null)
            {
                WriteToLog("StoreEbayUserData: invalid data to store", WriteLogType.Error);
                return;
            }

            MP_CustomerMarketPlace customerMarketPlace = GetCustomerMarketPlace(databaseCustomerMarketPlace.Id);

            var userData = new MP_EbayUserData
            {
                CustomerMarketPlaceId = customerMarketPlace.Id,
                Created             = data.SubmittedDate.ToUniversalTime(),
                BillingEmail        = data.BillingEmail,
                EIASToken           = data.EIASToken,
                EMail               = data.EMail,
                FeedbackPrivate     = data.FeedbackPrivate,
                FeedbackRatingStar  = data.FeedbackRatingStar,
                FeedbackScore       = data.FeedbackScore,
                IDChanged           = data.IDChanged,
                IDLastChanged       = data.IDLastChanged,
                IDVerified          = data.IDVerified,
                NewUser             = data.NewUser,
                PayPalAccountStatus = data.PayPalAccountStatus,
                PayPalAccountType   = data.PayPalAccountType,
                QualifiesForSelling = data.QualifiesForSelling,
                RegistrationAddress = CreateAddressInDatabase(data.RegistrationAddress),
                RegistrationDate    = data.RegistrationDate,
                SellerInfo          = new EbaySellerInfo
                {
                    SellerInfoQualifiesForB2BVAT = data.QualifiesForB2BVAT,
                    SellerInfoSellerBusinessType = data.SellerBusinessType,
                    SellerInfoStoreOwner         = data.StoreOwner,
                    SellerInfoStoreSite          = data.StoreSite,
                    SellerInfoStoreURL           = data.StoreURL,
                    SellerInfoTopRatedProgram    = data.TopRatedProgram,
                    SellerInfoTopRatedSeller     = data.TopRatedSeller,
                    SellerPaymentAddress         = CreateAddressInDatabase(data.SellerPaymentAddress)
                },
                Site             = data.Site,
                SkypeID          = data.SkypeID,
                UserID           = data.UserID,
                eBayGoodStanding = data.eBayGoodStanding,
                HistoryRecord    = historyRecord
            };

            customerMarketPlace.EbayUserData.Add(userData);

            _CustomerMarketplaceRepository.Update(customerMarketPlace);
        }
        public void UpdateCustomerMarketplaceRegular(int customerMarketPlaceId)
        {
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace = GetDatabaseCustomerMarketPlace(customerMarketPlaceId);

            if (databaseCustomerMarketPlace.Disabled)
            {
                return;
            }

            Helper.UpdateCustomerMarketplaceData(
                databaseCustomerMarketPlace,
                historyRecord => InternalUpdateInfo(databaseCustomerMarketPlace, historyRecord)
                );
        }
        }         // ConvertToBaseCurrency

        private MP_EBayOrderItemDetail FindEBayOrderItemInfo(
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
            DataProviderCreationInfo info,
            string itemID,
            RequestsCounterData requestCounter,
            ElapsedTimeInfo elapsedTimeInfo
            )
        {
            if (!this.settings.DownloadCategories)
            {
                return(null);
            }

            int mpID = databaseCustomerMarketPlace.Id;

            IMarketplaceType marketplace = databaseCustomerMarketPlace.Marketplace;

            var eBayItemInfoData = new eBayFindOrderItemInfoData(itemID);

            var eBayOrderItemInfo = Helper.FindEBayOrderItemInfo(eBayItemInfoData, elapsedTimeInfo, mpID);

            if (eBayOrderItemInfo == null)
            {
                var providerGetItemInfo = new DataProviderGetItemInfo(info);

                var req = new eBayRequestItemInfoData(eBayItemInfoData);

                ResultInfoEbayItemInfo ebayItemInfo = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                    elapsedTimeInfo,
                    mpID,
                    ElapsedDataMemberType.RetrieveDataFromExternalService,
                    () => providerGetItemInfo.GetItem(req)
                    );

                requestCounter.Add(ebayItemInfo.RequestsCounter);

                var newEBayOrderItemInfo = new EbayDatabaseOrderItemInfo {
                    ItemID          = ebayItemInfo.ItemID,
                    PrimaryCategory = FindCategory(marketplace, ebayItemInfo.PrimaryCategory, elapsedTimeInfo, mpID),
                    // SecondaryCategory = FindCategory(marketplace, ebayItemInfo.SecondaryCategory, elapsedTimeInfo, mpID),
                    // FreeAddedCategory = FindCategory(marketplace, ebayItemInfo.FreeAddedCategory, elapsedTimeInfo, mpID),
                    Title = ebayItemInfo.Title,
                };

                eBayOrderItemInfo = Helper.SaveEBayOrderItemInfo(newEBayOrderItemInfo, elapsedTimeInfo, mpID);
            }             // if

            return(eBayOrderItemInfo);
        }         // FindEBayOrderItemInfo