}         // 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
        }         // RetrieveCustomerSecurityInfo

        protected override ElapsedTimeInfo RetrieveAndAggregate(
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
            MP_CustomerMarketplaceUpdatingHistory historyRecord
            )
        {
            return(new ElapsedTimeInfo());
        } // RetrieveAndAggregate
 protected virtual void InternalUpdateInfo(
     IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
     MP_CustomerMarketplaceUpdatingHistory historyRecord
     )
 {
     RetrieveAndAggregate(databaseCustomerMarketPlace, historyRecord);
 }
Exemple #4
0
        }         // RetrieveCustomerSecurityInfo

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

            return(UpdateClientOrdersInfo(databaseCustomerMarketPlace, securityInfo, historyRecord));
        }         // RetrieveAndAggregate
 protected virtual void InternalUpdateInfoFirst(
     IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
     MP_CustomerMarketplaceUpdatingHistory historyRecord
     )
 {
     InternalUpdateInfo(databaseCustomerMarketPlace, historyRecord);
 }
        }         // 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
Exemple #7
0
        private void UpdateClientOrdersInfo(
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
            AmazonSecurityInfo securityInfo,
            ActionAccessType access,
            MP_CustomerMarketplaceUpdatingHistory historyRecord
            )
        {
            log.DebugFormat("UpdateClientOrdersInfo customer {0}, amazon mp {1}, access {2}", databaseCustomerMarketPlace.Customer.Id, databaseCustomerMarketPlace.DisplayName, access);

            Helper.CustomerMarketplaceUpdateAction(
                CustomerMarketplaceUpdateActionType.UpdateOrdersInfo,
                databaseCustomerMarketPlace,
                historyRecord,
                () => CustomerMarketplaceUpdateAction(databaseCustomerMarketPlace, securityInfo, access, historyRecord)
                );
        }         // UpdateClientOrdersInfo
        public void CustomerMarketplaceUpdateAction(int nCustomerMarketplaceID)
        {
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace = GetDatabaseCustomerMarketPlace(nCustomerMarketplaceID);

            MP_CustomerMarketplaceUpdatingHistory historyRecord = Helper.GetHistoryItem(databaseCustomerMarketPlace);

            var action = new Func <IUpdateActionResultInfo>(() => new UpdateActionResultInfo {
                ElapsedTime = RetrieveAndAggregate(databaseCustomerMarketPlace, historyRecord),
            });

            Helper.CustomerMarketplaceUpdateAction(
                CustomerMarketplaceUpdateActionType.UpdateOrdersInfo,
                databaseCustomerMarketPlace,
                historyRecord,
                action
                );
        }
        }         // UpdateAccountInfo

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

                var resultInfo = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                    elapsedTimeInfo,
                    databaseCustomerMarketPlace.Id,
                    ElapsedDataMemberType.RetrieveDataFromExternalService,
                    () => DataProviderGetFeedback.GetFeedBack(info)
                    );

                ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                    elapsedTimeInfo,
                    databaseCustomerMarketPlace.Id,
                    ElapsedDataMemberType.StoreDataToDatabase,
                    () => SaveFeedbackInfo(databaseCustomerMarketPlace, resultInfo, historyRecord)
                    );

                var ebayRaitingInfo = resultInfo == null ? null : resultInfo.GetRaitingData(
                    FeedbackSummaryPeriodCodeType.FiftyTwoWeeks,
                    FeedbackRatingDetailCodeType.ShippingAndHandlingCharges
                    );

                return(new UpdateActionResultInfo {
                    Name = UpdateActionResultType.FeedbackRaiting,
                    Value = ebayRaitingInfo == null ? null : (object)ebayRaitingInfo.Value,
                    RequestsCounter = resultInfo == null ? null : resultInfo.RequestsCounter,
                    ElapsedTime = elapsedTimeInfo
                });
            }
                );
        }         // UpdateFeedbackInfo
        }         // Update

        protected override void InternalUpdateInfo(
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
            MP_CustomerMarketplaceUpdatingHistory historyRecord
            )
        {
            var info = CreateProviderCreationInfo(RetrieveCustomerSecurityInfo <eBaySecurityInfo>(
                                                      databaseCustomerMarketPlace
                                                      ));

            CheckTokenStatus(databaseCustomerMarketPlace, info, historyRecord);
            UpdateAccountInfo(databaseCustomerMarketPlace, info, historyRecord);
            UpdateUserInfo(databaseCustomerMarketPlace, info, historyRecord);
            UpdateFeedbackInfo(databaseCustomerMarketPlace, info, historyRecord);

            Helper.CustomerMarketplaceUpdateAction(
                CustomerMarketplaceUpdateActionType.EbayGetOrders,
                databaseCustomerMarketPlace,
                historyRecord,
                () => FetchTransactions(databaseCustomerMarketPlace, info, historyRecord)
                );
        }         // InternalUpdateInfo
Exemple #11
0
        }         // HmrcVatReturnConversion

        private ElapsedTimeInfo ProcessRetrieved(
            IHarvester oHarvester,
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
            MP_CustomerMarketplaceUpdatingHistory historyRecord
            )
        {
            // Convert orders into internal format.
            List <Order> oRawOrders = ((Integration.ChannelGrabberAPI.Harvester)oHarvester).RetrievedOrders;

            var oChaGraOrders = new List <AInternalOrderItem>();

            if (oRawOrders != null)
            {
                oChaGraOrders.AddRange(oRawOrders.Select(oRaw => new ChannelGrabberOrderItem {
                    CurrencyCode  = oRaw.CurrencyCode,
                    OrderStatus   = oRaw.OrderStatus,
                    NativeOrderId = oRaw.NativeOrderId,
                    PaymentDate   = oRaw.PaymentDate,
                    PurchaseDate  = oRaw.PurchaseDate,
                    TotalCost     = oRaw.TotalCost,
                    IsExpense     = oRaw.IsExpense,
                }));
            }             // if

            var elapsedTimeInfo = new ElapsedTimeInfo();

            // store retrieved orders to DB.
            ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                elapsedTimeInfo,
                databaseCustomerMarketPlace.Id,
                ElapsedDataMemberType.StoreDataToDatabase,
                () => Helper.StoreChannelGrabberOrdersData(
                    databaseCustomerMarketPlace,
                    new InternalDataList(DateTime.UtcNow, oChaGraOrders),
                    historyRecord,
                    oHarvester.SourceID
                    ));

            return(elapsedTimeInfo);
        }         // ProcessRetrieved
        }         // SaveFeedbackInfo

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

                var elapsedTimeInfo = new ElapsedTimeInfo();

                var resultInfo = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                    elapsedTimeInfo,
                    databaseCustomerMarketPlace.Id,
                    ElapsedDataMemberType.RetrieveDataFromExternalService,
                    () => account.GetAccount()
                    );

                ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                    elapsedTimeInfo,
                    databaseCustomerMarketPlace.Id,
                    ElapsedDataMemberType.StoreDataToDatabase,
                    () => Helper.StoreEbayUserAccountData(databaseCustomerMarketPlace, resultInfo, historyRecord)
                    );

                return(new UpdateActionResultInfo {
                    Name = UpdateActionResultType.CurrentBalance,
                    Value = resultInfo == null ? null : (object)resultInfo.CurrentBalance,
                    RequestsCounter = resultInfo == null ? null : resultInfo.RequestsCounter,
                    ElapsedTime = elapsedTimeInfo
                });
            }
                );
        }         // UpdateAccountInfo
Exemple #13
0
        }         // RetrieveCustomerSecurityInfo

        protected override ElapsedTimeInfo RetrieveAndAggregate(
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
            MP_CustomerMarketplaceUpdatingHistory historyRecord
            )
        {
            // Retrieve data from EKM API
            var ordersList = EkmConnector.GetOrders(
                databaseCustomerMarketPlace.DisplayName,
                Encrypted.Decrypt(databaseCustomerMarketPlace.SecurityData),
                Helper.GetEkmDeltaPeriod(databaseCustomerMarketPlace)
                );

            var ekmOrderList = new List <EkmOrderItem>();

            foreach (var order in ordersList)
            {
                try {
                    ekmOrderList.Add(order.ToEkmOrderItem());
                } catch (Exception e) {
                    log.Error(e, "Failed to create EKMOrderItem from the original order {0}", order);
                    throw;
                }
            }             // for

            var elapsedTimeInfo = new ElapsedTimeInfo();

            var newOrders = new EkmOrdersList(DateTime.UtcNow, ekmOrderList);

            ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                elapsedTimeInfo,
                databaseCustomerMarketPlace.Id,
                ElapsedDataMemberType.StoreDataToDatabase,
                () => Helper.StoreEkmOrdersData(databaseCustomerMarketPlace, newOrders, historyRecord)
                );

            return(elapsedTimeInfo);
        }         // RetrieveAndAggregate
Exemple #14
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
                });
            });
        }
Exemple #15
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);
        }
Exemple #16
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);
        }
Exemple #17
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);
        }
Exemple #18
0
        public MP_AmazonOrder StoreAmazonOrdersData(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace, List <AmazonOrderItem> ordersData, MP_CustomerMarketplaceUpdatingHistory historyRecord, MP_AmazonOrder amazonOrder)
        {
            MP_CustomerMarketPlace customerMarketPlace = GetCustomerMarketPlace(databaseCustomerMarketPlace.Id);

            if (ordersData == null)
            {
                return(amazonOrder);
            }

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

            if (ordersData.Count > 0)
            {
                ordersData.ForEach(
                    dataItem => {
                    if (dataItem != null)
                    {
                        var mpOrderItem = new MP_AmazonOrderItem {
                            Order                  = amazonOrder,
                            OrderId                = dataItem.OrderId,
                            OrderStatus            = dataItem.OrderStatus.ToString(),
                            PurchaseDate           = dataItem.PurchaseDate,
                            LastUpdateDate         = dataItem.LastUpdateDate,
                            NumberOfItemsShipped   = dataItem.NumberOfItemsShipped,
                            NumberOfItemsUnshipped = dataItem.NumberOfItemsUnshipped,
                            OrderTotal             = _CurrencyConvertor.ConvertToBaseCurrency(dataItem.OrderTotal, dataItem.PurchaseDate),
                            SellerOrderId          = dataItem.SellerOrderId,
                        };

                        amazonOrder.OrderItems.Add(mpOrderItem);
                    }
                });
            }
            customerMarketPlace.AmazonOrders.Add(amazonOrder);
            _CustomerMarketplaceRepository.Update(customerMarketPlace);

            return(amazonOrder);
        }
 protected abstract ElapsedTimeInfo RetrieveAndAggregate(
     IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
     MP_CustomerMarketplaceUpdatingHistory historyRecord
     );
Exemple #20
0
        }         // GetAllChannelGrabberOrdersData

        public void StoreChannelGrabberOrdersData(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace, InternalDataList ordersData, MP_CustomerMarketplaceUpdatingHistory historyRecord, int nIgnoredHere)
        {
            MP_CustomerMarketPlace customerMarketPlace = GetCustomerMarketPlace(databaseCustomerMarketPlace.Id);

            LogData("ChannelGrabber Orders Data", customerMarketPlace, ordersData);

            if (ordersData == null)
            {
                return;
            }

            DateTime submittedDate = DateTime.UtcNow;
            var      mpOrder       = new MP_ChannelGrabberOrder {
                CustomerMarketPlace = customerMarketPlace,
                Created             = submittedDate,
                HistoryRecord       = historyRecord
            };

            ordersData.ForEach(di => {
                var dataItem = (ChannelGrabberOrderItem)di;

                var mpOrderItem = new MP_ChannelGrabberOrderItem {
                    Order         = mpOrder,
                    NativeOrderId = dataItem.NativeOrderId,
                    TotalCost     = dataItem.TotalCost,
                    CurrencyCode  = dataItem.CurrencyCode,
                    PaymentDate   = dataItem.PaymentDate,
                    PurchaseDate  = dataItem.PurchaseDate,
                    OrderStatus   = dataItem.OrderStatus,
                    IsExpense     = dataItem.IsExpense
                };

                mpOrder.OrderItems.Add(mpOrderItem);
            });

            customerMarketPlace.ChannelGrabberOrders.Add(mpOrder);
            _CustomerMarketplaceRepository.Update(customerMarketPlace);
        } // StoreChannelGrabberOrdersData
Exemple #21
0
        }         // ConvertData

        private ElapsedTimeInfo UpdateClientOrdersInfo(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace, YodleeSecurityInfo securityInfo, MP_CustomerMarketplaceUpdatingHistory historyRecord)
        {
            Dictionary <BankData, List <BankTransactionData> > ordersList;

            if (databaseCustomerMarketPlace.DisplayName == "ParsedBank")
            {
                //retrieve data from file
                var fileInfo          = Helper.GetFileInfo((int)securityInfo.ItemId);
                var lastTransactionId = Helper.GetLastTransactionId();
                if (fileInfo == null)
                {
                    throw new Exception("file not found");
                }

                var parser     = new TransactionsParser();
                var parsedData = parser.ParseFile(fileInfo.FilePath);

                if (parsedData == null)
                {
                    throw new Exception(string.Format("failed to parse the file {0}", fileInfo.FileName));
                }
                if (!string.IsNullOrEmpty(parsedData.Error))
                {
                    throw new Exception(string.Format("failed to parse the file {0} \n {1}", fileInfo.FileName, parsedData.Error));
                }

                ordersList = ConvertData(parsedData, fileInfo.FileName, securityInfo.ItemId, lastTransactionId);
            }
            else
            {
                //retrieve data from Yodlee API
                ordersList = YodleeConnector.GetOrders(securityInfo.Name, Encrypted.Decrypt(securityInfo.Password),
                                                       securityInfo.ItemId);
            }

            var elapsedTimeInfo = new ElapsedTimeInfo();

            if (ordersList != null)
            {
                var newOrders = new YodleeOrderDictionary {
                    Data = ordersList
                };

                //save orders data
                ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(elapsedTimeInfo,
                                                                               databaseCustomerMarketPlace.Id,
                                                                               ElapsedDataMemberType.StoreDataToDatabase,
                                                                               () => Helper.StoreYodleeOrdersData(
                                                                                   databaseCustomerMarketPlace,
                                                                                   newOrders,
                                                                                   historyRecord)
                                                                               );
            }

            List <string> directors;

            ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(elapsedTimeInfo,
                                                                           databaseCustomerMarketPlace.Id,
                                                                           ElapsedDataMemberType.AggregateData,
                                                                           () => Helper.GetAllYodleeOrdersData(DateTime.Now, databaseCustomerMarketPlace, false, out directors));

            //Thread.Sleep(15000);
            return(elapsedTimeInfo);
        } // UpdateClientsOrderInfo
Exemple #22
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);
            }
        }
Exemple #23
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);
        }
Exemple #24
0
        public void AddEbayOrdersData(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace, EbayDatabaseOrdersList data, MP_CustomerMarketplaceUpdatingHistory historyRecord)
        {
            MP_CustomerMarketPlace customerMarketPlace = GetCustomerMarketPlace(databaseCustomerMarketPlace.Id);

            LogData("Orders Data", customerMarketPlace, data);

            if (data == null)
            {
                return;
            }

            var mpOrder = new MP_EbayOrder
            {
                CustomerMarketPlace = customerMarketPlace,
                Created             = data.SubmittedDate.ToUniversalTime(),
                HistoryRecord       = historyRecord
            };

            if (data.Count != 0)
            {
                data.ForEach(
                    databaseOrder =>
                {
                    var mpOrderItem = new MP_EbayOrderItem
                    {
                        Order              = mpOrder,
                        CreatedTime        = databaseOrder.CreatedTime,
                        PaymentTime        = databaseOrder.PaymentTime,
                        ShippedTime        = databaseOrder.ShippedTime,
                        BuyerName          = databaseOrder.BuyerName,
                        AdjustmentAmount   = databaseOrder.AdjustmentAmount,
                        AmountPaid         = databaseOrder.AmountPaid,
                        SubTotal           = databaseOrder.SubTotal,
                        Total              = databaseOrder.Total,
                        CheckoutStatus     = databaseOrder.CheckoutStatus,
                        OrderStatus        = databaseOrder.OrderStatus.ToString(),
                        PaymentStatus      = databaseOrder.PaymentStatus,
                        PaymentHoldStatus  = databaseOrder.PaymentHoldStatus,
                        PaymentMethod      = databaseOrder.PaymentMethod,
                        PaymentMethodsList = databaseOrder.PaymentMethods,
                        ShippingAddress    = CreateAddressInDatabase(databaseOrder.ShippingAddressData),
                    };

                    if (databaseOrder.TransactionData != null && databaseOrder.TransactionData.HasData)
                    {
                        mpOrderItem.Transactions.AddAll(databaseOrder.TransactionData.Select(t =>
                        {
                            var tr = new MP_EbayTransaction
                            {
                                OrderItem             = mpOrderItem,
                                CreatedDate           = t.CreatedDate,
                                PaymentHoldStatus     = t.PaymentHoldStatus,
                                PaymentMethodUsed     = t.PaymentMethodUsed,
                                QuantityPurchased     = t.QuantityPurchased,
                                TransactionPrice      = t.TransactionPrice,
                                ItemID                = t.ItemID,
                                ItemPrivateNotes      = t.ItemPrivateNotes,
                                ItemSKU               = t.ItemSKU,
                                ItemSellerInventoryID = t.ItemSellerInventoryID,
                                eBayTransactionId     = t.eBayTransactionId,
                            };
                            return(tr);
                        }).ToArray());
                    }

                    if (databaseOrder.ExternalTransactionData != null && databaseOrder.ExternalTransactionData.HasData)
                    {
                        mpOrderItem.ExternalTransactions.AddAll(databaseOrder.ExternalTransactionData.Select(t =>
                                                                                                             new MP_EbayExternalTransaction
                        {
                            OrderItem             = mpOrderItem,
                            TransactionID         = t.TransactionID,
                            TransactionTime       = t.TransactionTime,
                            FeeOrCreditAmount     = t.FeeOrCreditAmount,
                            PaymentOrRefundAmount = t.PaymentOrRefundAmount
                        }).ToArray());
                    }
                    mpOrder.OrderItems.Add(mpOrderItem);
                }
                    );
            }

            customerMarketPlace.EbayOrders.Add(mpOrder);

            _CustomerMarketplaceRepository.Update(customerMarketPlace);
        }
        }         // class FetchResultCounters

        private FetchResultCounters FetchOnePeriodTransactions(
            int mpID,
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
            ElapsedTimeInfo elapsedTimeInfo,
            DataProviderCreationInfo info,
            MP_CustomerMarketplaceUpdatingHistory historyRecord,
            FetchPeriod period
            )
        {
            this.log.Debug("Fetching eBay orders '{0}'@{1}...", mpID, period);

            ResultInfoOrders orders = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                elapsedTimeInfo,
                mpID,
                ElapsedDataMemberType.RetrieveDataFromExternalService,
                () => DataProviderGetOrders.GetOrders(
                    info,
                    new ParamsDataInfoGetOrdersFromDateToDateCreated(period.From, period.To)
                    )
                );

            EbayDatabaseOrdersList databaseOrdersList = ParseOrdersInfo(orders);

            DateTime?max = null;
            DateTime?min = null;

            foreach (EbayDatabaseOrderItem o in databaseOrdersList.Where(x => x.CreatedTime != null))
            {
                DateTime c = o.CreatedTime.Value;

                if ((min == null) || (c < min.Value))
                {
                    min = c;
                }

                if ((max == null) || (c > max.Value))
                {
                    max = c;
                }
            }             // for each

            this.log.Debug(
                "Fetching eBay orders '{0}'@{1}: {2} are ready to be stored; " +
                "min order date is '{3}', max order date is '{4}'.",
                mpID,
                period,
                Grammar.Number(databaseOrdersList.Count, "order"),
                (min == null) ? "N/A" : min.Value.ToString("d/MMM/yyyy H:mm:ss", CultureInfo.InvariantCulture),
                (max == null) ? "N/A" : max.Value.ToString("d/MMM/yyyy H:mm:ss", CultureInfo.InvariantCulture)
                );

            ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                elapsedTimeInfo,
                mpID,
                ElapsedDataMemberType.StoreDataToDatabase,
                () => Helper.AddEbayOrdersData(databaseCustomerMarketPlace, databaseOrdersList, historyRecord)
                );

            this.log.Debug(
                "Fetching eBay orders '{0}'@{1}: {2} were stored.",
                mpID,
                period,
                Grammar.Number(databaseOrdersList.Count, "order")
                );

            EbayDatabaseOrdersList allEBayOrders = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                elapsedTimeInfo,
                mpID,
                ElapsedDataMemberType.RetrieveDataFromDatabase,
                () => Helper.GetAllEBayOrders(orders.SubmittedDate, databaseCustomerMarketPlace)
                );

            this.log.Debug(
                "Fetching eBay orders '{0}'@{1}: {2} were loaded from DB.",
                mpID,
                period,
                Grammar.Number(allEBayOrders.Count, "order")
                );

            if (this.settings.DownloadCategories)
            {
                IEnumerable <string> topSealedProductItems = GetTopSealedProductItems(allEBayOrders);

                if (topSealedProductItems != null)
                {
                    List <MP_EBayOrderItemDetail> orderItemDetails = topSealedProductItems.Select(
                        item => FindEBayOrderItemInfo(
                            databaseCustomerMarketPlace,
                            info,
                            item,
                            databaseOrdersList.RequestsCounter,
                            elapsedTimeInfo
                            )
                        ).Where(d => d != null)
                                                                     .ToList();

                    Helper.UpdateOrderItemsInfo(orderItemDetails, elapsedTimeInfo, mpID);
                }         // if
            }             // if

            var frc = new FetchResultCounters(
                databaseOrdersList.RequestsCounter,
                (orders.Orders == null) ? 0 : orders.Orders.Count
                );

            this.log.Debug(
                "Done fetching eBay orders '{0}'@{1}: {2} fetched.",
                mpID,
                period,
                Grammar.Number(frc.OrderCount, "order")
                );

            return(frc);
        }         // FetchOnePeriodTransactions
Exemple #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);
        }
Exemple #27
0
        protected override ElapsedTimeInfo RetrieveAndAggregate(
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
            MP_CustomerMarketplaceUpdatingHistory historyRecord
            )
        {
            log.Info("Starting to update Sage marketplace. Id:{0} Name:{1}", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName);

            SageSecurityInfo sageSecurityInfo = (Serialized.Deserialize <SageSecurityInfo>(databaseCustomerMarketPlace.SecurityData));

            string accessToken = sageSecurityInfo.AccessToken;

            log.Info("Getting sales invoices...");

            SageSalesInvoicesList salesInvoices = SageConnector.GetSalesInvoices(
                accessToken,
                Helper.GetSageDeltaPeriod(databaseCustomerMarketPlace)
                );

            log.Info("Getting incomes...");

            SageIncomesList incomes = SageConnector.GetIncomes(
                accessToken,
                Helper.GetSageDeltaPeriod(databaseCustomerMarketPlace)
                );

            log.Info("Getting purchase invoices...");

            SagePurchaseInvoicesList purchaseInvoices = SageConnector.GetPurchaseInvoices(
                accessToken,
                Helper.GetSageDeltaPeriod(databaseCustomerMarketPlace)
                );

            log.Info("Getting expenditures...");

            SageExpendituresList expenditures = SageConnector.GetExpenditures(
                accessToken,
                Helper.GetSageDeltaPeriod(databaseCustomerMarketPlace)
                );

            var elapsedTimeInfo = new ElapsedTimeInfo();

            log.Info("Saving request, {0} sales invoices, {1} purchase invoices, {2} incomes, {3} expenditures in DB...", salesInvoices.Count, purchaseInvoices.Count, incomes.Count, expenditures.Count);

            ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                elapsedTimeInfo,
                databaseCustomerMarketPlace.Id,
                ElapsedDataMemberType.StoreDataToDatabase,
                () => Helper.StoreSageData(
                    databaseCustomerMarketPlace,
                    salesInvoices,
                    purchaseInvoices,
                    incomes,
                    expenditures,
                    historyRecord
                    )
                );

            log.Info("Getting payment statuses...");
            var paymentStatuses = SageConnector.GetPaymentStatuses(accessToken);

            ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                elapsedTimeInfo,
                databaseCustomerMarketPlace.Id,
                ElapsedDataMemberType.StoreDataToDatabase,
                () => Helper.StoreSagePaymentStatuses(paymentStatuses)
                );

            return(elapsedTimeInfo);
        }
        }         // GetCustomerUserInfo

        private void SaveFeedbackInfo(
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
            ResultInfoEbayFeedBack feedbackInfo,
            MP_CustomerMarketplaceUpdatingHistory historyRecord
            )
        {
            if (feedbackInfo == null)
            {
                return;
            }

            var submittedDate = feedbackInfo.SubmittedDate;

            var data = new DatabaseEbayFeedbackData(submittedDate)
            {
                RepeatBuyerCount    = feedbackInfo.RepeatBuyerCount,
                RepeatBuyerPercent  = feedbackInfo.RepeatBuyerPercent,
                TransactionPercent  = feedbackInfo.TransactionPercent,
                UniqueBuyerCount    = feedbackInfo.UniqueBuyerCount,
                UniqueNegativeCount = feedbackInfo.UniqueNegativeFeedbackCount,
                UniquePositiveCount = feedbackInfo.UniquePositiveFeedbackCount,
                UniqueNeutralCount  = feedbackInfo.UniqueNeutralFeedbackCount
            };

            var timePeriodsFeedback = new[] {
                TimePeriodEnum.Zero,
                TimePeriodEnum.Month,
                TimePeriodEnum.Month6,
                TimePeriodEnum.Year
            };

            foreach (TimePeriodEnum timePeriod in timePeriodsFeedback)
            {
                data.FeedbackByPeriod.Add(timePeriod, new DatabaseEbayFeedbackDataByPeriod(timePeriod)
                {
                    Negative = feedbackInfo.GetNegativeFeedbackByPeriod(timePeriod),
                    Neutral  = feedbackInfo.GetNeutralFeedbackByPeriod(timePeriod),
                    Positive = feedbackInfo.GetPositiveFeedbackByPeriod(timePeriod),
                });
            }             // for

            var timePeriodsRaiting = new[] {
                new Tuple <TimePeriodEnum, FeedbackSummaryPeriodCodeType>(
                    TimePeriodEnum.Month,
                    FeedbackSummaryPeriodCodeType.ThirtyDays
                    ),
                new Tuple <TimePeriodEnum, FeedbackSummaryPeriodCodeType>(
                    TimePeriodEnum.Year,
                    FeedbackSummaryPeriodCodeType.FiftyTwoWeeks
                    )
            };

            foreach (var pair in timePeriodsRaiting)
            {
                var timePeriod     = pair.Item1;
                var periodCodeType = pair.Item2;

                data.RaitingByPeriod.Add(timePeriod, new DatabaseEbayRaitingDataByPeriod(timePeriod)
                {
                    Communication = feedbackInfo.GetRaitingData(
                        periodCodeType,
                        FeedbackRatingDetailCodeType.Communication
                        ),
                    ItemAsDescribed = feedbackInfo.GetRaitingData(
                        periodCodeType,
                        FeedbackRatingDetailCodeType.ItemAsDescribed
                        ),
                    ShippingAndHandlingCharges = feedbackInfo.GetRaitingData(
                        periodCodeType,
                        FeedbackRatingDetailCodeType.ShippingAndHandlingCharges
                        ),
                    ShippingTime = feedbackInfo.GetRaitingData(
                        periodCodeType,
                        FeedbackRatingDetailCodeType.ShippingTime
                        )
                });
            }             // for

            Helper.StoreEbayFeedbackData(databaseCustomerMarketPlace, data, historyRecord);
        }         // SaveFeedbackInfo
        private ElapsedTimeInfo UpdateClientOrdersInfo(
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
            PayPointSecurityInfo securityInfo,
            MP_CustomerMarketplaceUpdatingHistory historyRecord
            )
        {
            string condition = Helper.GetPayPointDeltaPeriod(databaseCustomerMarketPlace);

            var payPointTransactions = PayPointConnector.GetOrders(
                condition,
                securityInfo.Mid,
                securityInfo.VpnPassword,
                securityInfo.RemotePassword
                );

            var payPointOrders = new List <PayPointOrderItem>();

            foreach (PayPointDataSet.TransactionRow x in payPointTransactions)
            {
                var order = new PayPointOrderItem {
                    acquirer    = x.acquirer,
                    amount      = x.amount,
                    auth_code   = x.auth_code,
                    authorised  = x.authorised,
                    card_type   = x.card_type,
                    cid         = x.cid,
                    classType   = x._class,
                    company_no  = x.company_no,
                    country     = x.country,
                    currency    = x.currency,
                    cv2avs      = x.cv2avs,
                    deferred    = x.deferred,
                    emvValue    = x.emvValue,
                    fraud_code  = x.fraud_code,
                    FraudScore  = x.FraudScore,
                    ip          = x.ip,
                    lastfive    = x.lastfive,
                    merchant_no = x.merchant_no,
                    message     = x.message,
                    MessageType = x.MessageType,
                    mid         = x.mid,
                    name        = x.name,
                    options     = x.options,
                    status      = x.status,
                    tid         = x.tid,
                    trans_id    = x.trans_id
                };

                DateTime result;
                order.date       = !DateTime.TryParse(x.date, out result) ? (DateTime?)null : result;
                order.ExpiryDate = !DateTime.TryParse(x.ExpiryDate, out result) ? (DateTime?)null : result;
                order.start_date = !DateTime.TryParse(x.start_date, out result) ? (DateTime?)null : result;
                payPointOrders.Add(order);
            }

            var elapsedTimeInfo = new ElapsedTimeInfo();

            ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                elapsedTimeInfo,
                databaseCustomerMarketPlace.Id,
                ElapsedDataMemberType.StoreDataToDatabase,
                () => Helper.StorePayPointOrdersData(
                    databaseCustomerMarketPlace,
                    new PayPointOrdersList(DateTime.UtcNow, payPointOrders),
                    historyRecord
                    )
                );

            // Stored procedure UpdateMpTotalsPayPoint does not exist as of today (December 25 2014, Merry Xmas!).
            // It should be created similarly to other UpdateMpTotals*** procedures based on PayPointOrdersAggregator.cs.

            return(elapsedTimeInfo);
        }
        }         // UpdateUserInfo

        private IUpdateActionResultInfo FetchTransactions(
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
            DataProviderCreationInfo info,
            MP_CustomerMarketplaceUpdatingHistory historyRecord
            )
        {
            int mpID = databaseCustomerMarketPlace.Id;

            DateTime toDate = DateTime.UtcNow.Date;

            var elapsedTimeInfo = new ElapsedTimeInfo();

            DateTime fromDate = Helper.FindLastKnownEbayTransactionTime(mpID);

            var periods = new Stack <FetchPeriod>();

            DateTime t = toDate;

            while (t >= fromDate)
            {
                DateTime f = t.AddDays(-90).Date;

                periods.Push(new FetchPeriod {
                    To   = t.Date.AddDays(1).AddSeconds(-1),                   // convert to 23:59:59
                    From = (f < fromDate ? fromDate : f).Date,
                });

                t = f.AddDays(-1).Date;
            }             // while

            this.log.Debug(
                "Fetching eBay orders for marketplace '{0}' using these date range list: {1}.",
                mpID,
                string.Join("; ", periods)
                );

            var frc = new FetchResultCounters();

            foreach (var period in periods)
            {
                frc.Add(FetchOnePeriodTransactions(
                            mpID,
                            databaseCustomerMarketPlace,
                            elapsedTimeInfo,
                            info,
                            historyRecord,
                            period
                            ));
            }             // for each

            this.log.Debug(
                "Done fetching eBay orders for marketplace '{0}' using these date range list: {1}.",
                mpID,
                string.Join("; ", periods)
                );

            return(new UpdateActionResultInfo {
                Name = UpdateActionResultType.eBayOrdersCount,
                Value = frc.OrderCount,
                RequestsCounter = frc.RequestCount.IsEmpty ? null : frc.RequestCount,
                ElapsedTime = elapsedTimeInfo
            });
        }         // FetchTransactions