private AmazonOrderItemDetailsList GetOrderItems( AmazonSecurityInfo securityInfo, ActionAccessType access, AmazonOrderItem orderItem2, ElapsedTimeInfo elapsedTimeInfo, AmazonOrdersList orders, int mpId ) { var itemsRequestInfo = new AmazonOrdersItemsRequestInfo { MarketplaceId = securityInfo.MarketplaceId, MerchantId = securityInfo.MerchantId, OrderId = orderItem2.OrderId, ErrorRetryingInfo = this.amazonSettings, MWSAuthToken = securityInfo.MWSAuthToken }; AmazonOrderItemDetailsList orderItems = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds( elapsedTimeInfo, mpId, ElapsedDataMemberType .RetrieveDataFromExternalService, () => AmazonServiceHelper.GetListItemsOrdered(this.connectionInfo, itemsRequestInfo, access, orders.RequestsCounter) ); return(orderItems); }
} // 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
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); }
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 }); }); }
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); }
private static void DisplayOrders(ElapsedTimeInfo elapsedTimeInfo, List <OrderItemTwo> orders) { foreach (var order in orders) { Console.WriteLine(order.ToString()); } Console.WriteLine("RetrieveDataFromExternalService took {0} s", elapsedTimeInfo.GetValue(ElapsedDataMemberType.RetrieveDataFromExternalService)); Console.WriteLine("Number of orders: {0}", orders.Count); }
public void TestAmazonOrders() { var amazonTester = new AmazonTester(); var elapsedTimeInfo = new ElapsedTimeInfo(); var connectionInfo = ObjectFactory.GetInstance <AmazonMarketPlaceTypeConnection>(); var connection = AmazonServiceConnectionFactory.CreateConnection(connectionInfo); var orders = amazonTester.GetOrders(18363, elapsedTimeInfo, connection, 7, false); amazonTester.DisplayOrders(elapsedTimeInfo, orders); }
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 }); }
public DatabaseElapsedTimeInfo(ElapsedTimeInfo info) { if (info == null) { return; } AggregateData = info.GetValue(ElapsedDataMemberType.AggregateData); RetrieveDataFromDatabase = info.GetValue(ElapsedDataMemberType.RetrieveDataFromDatabase); RetrieveDataFromExternalService = info.GetValue(ElapsedDataMemberType.RetrieveDataFromExternalService); StoreAggregatedData = info.GetValue(ElapsedDataMemberType.StoreAggregatedData); StoreDataToDatabase = info.GetValue(ElapsedDataMemberType.StoreDataToDatabase); }
private static List <OrderItemTwo> GetOrders(int umi, ElapsedTimeInfo elapsedTimeInfo, AmazonServiceConnectionInfo _ConnectionInfo, int days, bool useReporting) { var session = ObjectFactory.GetInstance <ISession>(); var marketplace = session.Get <MP_CustomerMarketPlace>(umi); var securityInfo = Serialized.Deserialize <AmazonSecurityInfo>(marketplace.SecurityData); var endDate = DateTime.UtcNow; var startDate = endDate.AddDays(-days); var errorRetryingInfo = new ErrorRetryingInfo((bool)CurrentValues.Instance.AmazonEnableRetrying, CurrentValues.Instance.AmazonMinorTimeoutInSeconds, CurrentValues.Instance.AmazonUseLastTimeOut); errorRetryingInfo.Info = new ErrorRetryingItemInfo[2]; errorRetryingInfo.Info[0] = new ErrorRetryingItemInfo(CurrentValues.Instance.AmazonIterationSettings1Index, CurrentValues.Instance.AmazonIterationSettings1CountRequestsExpectError, CurrentValues.Instance.AmazonIterationSettings1TimeOutAfterRetryingExpiredInMinutes); errorRetryingInfo.Info[1] = new ErrorRetryingItemInfo(CurrentValues.Instance.AmazonIterationSettings2Index, CurrentValues.Instance.AmazonIterationSettings2CountRequestsExpectError, CurrentValues.Instance.AmazonIterationSettings2TimeOutAfterRetryingExpiredInMinutes); var amazonOrdersRequestInfo = new AmazonOrdersRequestInfo { StartDate = startDate, EndDate = endDate, MarketplaceId = securityInfo.MarketplaceId, MerchantId = securityInfo.MerchantId, ErrorRetryingInfo = errorRetryingInfo, }; List <OrderItemTwo> orders; if (useReporting) { var configurator = AmazonServiceConfigurationFactory.CreateServiceReportsConfigurator(_ConnectionInfo); orders = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds( elapsedTimeInfo, umi, ElapsedDataMemberType.RetrieveDataFromExternalService, () => AmazonServiceReports.GetUserOrders(configurator, amazonOrdersRequestInfo, ActionAccessType.Full)) .Select(OrderItemTwo.FromOrderItem) .ToList(); } else { var ordersList = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(elapsedTimeInfo, umi, ElapsedDataMemberType.RetrieveDataFromExternalService, () => AmazonServiceHelper.GetListOrders(_ConnectionInfo, amazonOrdersRequestInfo, ActionAccessType.Full, null)); //todo make it work again orders = new List <OrderItemTwo>(); } return(orders); }
} // 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
} // FindEBayOrderItemInfo private MP_EbayAmazonCategory FindCategory( IMarketplaceType marketplace, eBayCategoryInfo data, ElapsedTimeInfo elapsedTimeInfo, int mpID ) { if (data == null) { return(null); } return(Helper.FindEBayAmazonCategory(marketplace, data.CategoryId, elapsedTimeInfo, mpID) ?? Helper.AddEbayCategory(marketplace, data, elapsedTimeInfo, mpID)); } // FindCategory
public MP_EbayAmazonCategory[] FindAmazonCategoryByProductAsin(string asin, ElapsedTimeInfo elapsedTimeInfo, int mpId) { MP_EbayAmazonCategory[] cat; if (!_CacheAmazonCategoryByProductKey.TryGetValue(asin, out cat)) { cat = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(elapsedTimeInfo, mpId, ElapsedDataMemberType.RetrieveDataFromDatabase, () => _AmazonOrderItemDetailRepository.FindCategoriesByAsin(asin)); if (cat != null) { _CacheAmazonCategoryByProductKey.TryAdd(asin, cat); } } return(cat); }
} // 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
} // 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
public override void Run(string[] args) { if (args.Length != 3) { Console.WriteLine("Usage: StandaloneAmazonApp.exe <umi> <days> <isReporting>"); return; } Init(); var connectionInfo = ObjectFactory.GetInstance <IAmazonMarketPlaceTypeConnection>(); var connection = AmazonServiceConnectionFactory.CreateConnection(connectionInfo); int umi = int.Parse(args[0]); int days = int.Parse(args[1]); bool isReporting = int.Parse(args[2]) == 1; var elapsedTimeInfo = new ElapsedTimeInfo(); var orders = GetOrders(umi, elapsedTimeInfo, connection, days, isReporting); DisplayOrders(elapsedTimeInfo, orders); }
} // RetrieveAndAggregate private void StoreCompanyData( MP_FreeAgentRequest mpRequest, FreeAgentCompany freeAgentCompany, ElapsedTimeInfo elapsedTimeInfo, int mpId ) { if (mpRequest == null) return; log.Info("Saving company to DB..."); var mpFreeAgentCompany = new MP_FreeAgentCompany { Request = mpRequest, url = freeAgentCompany.url, name = freeAgentCompany.name, subdomain = freeAgentCompany.subdomain, type = freeAgentCompany.type, currency = freeAgentCompany.currency, mileage_units = freeAgentCompany.mileage_units, company_start_date = freeAgentCompany.company_start_date, freeagent_start_date = freeAgentCompany.freeagent_start_date, first_accounting_year_end = freeAgentCompany.first_accounting_year_end, company_registration_number = freeAgentCompany.company_registration_number, sales_tax_registration_status = freeAgentCompany.sales_tax_registration_status, sales_tax_registration_number = freeAgentCompany.sales_tax_registration_number, }; ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds( elapsedTimeInfo, mpId, ElapsedDataMemberType.StoreDataToDatabase, () => { Helper.StoreFreeAgentCompanyData(mpFreeAgentCompany); Helper.UpdateMarketplaceDisplayName(mpRequest.CustomerMarketPlace, freeAgentCompany.name); } ); } // StoreCompanyData
} // StoreCompanyData private void StoreUsersData( MP_FreeAgentRequest mpRequest, List<FreeAgentUsers> freeAgentUsers, ElapsedTimeInfo elapsedTimeInfo, int mpId ) { if (mpRequest == null) return; log.Info("Saving {0} user(s) in DB...", freeAgentUsers.Count); var mpFreeAgentUsersList = new List<MP_FreeAgentUsers>(); foreach (FreeAgentUsers user in freeAgentUsers) { var mpFreeAgentUsers = new MP_FreeAgentUsers { Request = mpRequest, url = user.url, first_name = user.first_name, last_name = user.last_name, email = user.email, role = user.role, permission_level = user.permission_level, opening_mileage = user.opening_mileage, updated_at = user.updated_at, created_at = user.created_at }; mpFreeAgentUsersList.Add(mpFreeAgentUsers); } // for ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds( elapsedTimeInfo, mpId, ElapsedDataMemberType.StoreDataToDatabase, () => Helper.StoreFreeAgentUsersData(mpFreeAgentUsersList) ); } // StoreUsersData
} // 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
} // 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
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); }
} // Name public override void Execute() { if (this.saveVatReturnData.IsEmptyInput()) { return; } this.stopper.Execute(ElapsedDataMemberType.RetrieveDataFromDatabase, () => { this.loadVatReturnRawData.Execute(); foreach (var oOld in this.loadVatReturnRawData.VatReturnRawData) { foreach (var oNew in this.saveVatReturnData.VatReturnRecords) { if (oOld.Overlaps(oNew)) { this.saveVatReturnData.AddHistoryItem(oOld, oNew); } } } }); Log.Debug(this.saveVatReturnData); var os = new StringBuilder(); os.AppendLine("SaveVatReturnData output - begin:"); int nRowNum = 0; this.stopper.Execute(ElapsedDataMemberType.StoreDataToDatabase, () => { this.saveVatReturnData.ForEachRow((oReader, bRowsetStart) => { var vals = new object[oReader.FieldCount]; int nRead = oReader.GetValues(vals); os.AppendFormat( "\nRow {0}{3}: {1} fields, {2} read.\n", nRowNum, oReader.FieldCount, nRead, bRowsetStart ? " NEW ROWSET" : string.Empty ); for (int i = 0; i < nRead; i++) { os.AppendFormat("\t{2} - {0}: {1}\n", oReader.GetName(i), vals[i], i); } nRowNum++; return(ActionResult.Continue); }); }); os.AppendLine("SaveVatReturnData output - end."); Log.Debug("\n{0}\n", os); var oSummary = new CalculateVatReturnSummary(this.saveVatReturnData.CustomerMarketplaceID) .SetHistoryRecordID(this.saveVatReturnData.HistoryRecordID); oSummary.Execute(); DB.ExecuteNonQuery( "UpdateMpTotalsHmrc", CommandSpecies.StoredProcedure, new QueryParameter("@HistoryID", this.saveVatReturnData.HistoryRecordID) ); ElapsedTimeInfo.MergeData(oSummary.Stopper.ElapsedTimeInfo); } // Execute
public MP_EBayOrderItemDetail SaveEBayOrderItemInfo(EbayDatabaseOrderItemInfo data, ElapsedTimeInfo elapsedTimeInfo, int mpId) { MP_EbayAmazonCategory mpEbayAmazonCategory = null; if (data.PrimaryCategory != null) { mpEbayAmazonCategory = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(elapsedTimeInfo, mpId, ElapsedDataMemberType.RetrieveDataFromDatabase, () => _EbayAmazonCategoryRepository.Get(data.PrimaryCategory.Id)); } var item = new MP_EBayOrderItemDetail { ItemID = data.ItemID, PrimaryCategory = mpEbayAmazonCategory, //SecondaryCategory = data.SecondaryCategory == null ? null : _EbayAmazonCategoryRepository.Get( data.SecondaryCategory.Id ), //FreeAddedCategory = data.FreeAddedCategory == null ? null : _EbayAmazonCategoryRepository.Get( data.FreeAddedCategory.Id ), Title = data.Title, }; ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(elapsedTimeInfo, mpId, ElapsedDataMemberType.StoreDataToDatabase, () => _EBayOrderItemInfoRepository.Save(item)); _CacheEBayOrderItemInfo.TryAdd(item.ItemID, item); return(item); }
} // 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
} // 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
public MP_EbayAmazonCategory FindEBayAmazonCategory(IMarketplaceType marketplace, string categoryId, ElapsedTimeInfo elapsedTimeInfo, int mpId) { MP_EbayAmazonCategory value; var cache = GetCache(marketplace); if (!cache.TryGetValue(categoryId, out value)) { value = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(elapsedTimeInfo, mpId, ElapsedDataMemberType.RetrieveDataFromDatabase, () => _EbayAmazonCategoryRepository.FindItem(categoryId)); if (value != null) { AddCategoryToCache(marketplace, value); } } return(value); }
public MP_EbayAmazonCategory AddEbayCategory(IMarketplaceType marketplace, eBayCategoryInfo data, ElapsedTimeInfo elapsedTimeInfo, int mpId) { var item = new MP_EbayAmazonCategory { CategoryId = data.CategoryId, IsVirtual = data.IsVirtual, Name = data.Name, Marketplace = _MarketPlaceRepository.Get(marketplace.InternalId) }; ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(elapsedTimeInfo, mpId, ElapsedDataMemberType.StoreDataToDatabase, () => _EbayAmazonCategoryRepository.Save(item)); AddCategoryToCache(marketplace, item); return(item); }
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); }
public MP_EBayOrderItemDetail FindEBayOrderItemInfo(eBayFindOrderItemInfoData eBayFindOrderItemInfoData, ElapsedTimeInfo elapsedTimeInfo, int mpId) { if (eBayFindOrderItemInfoData == null || eBayFindOrderItemInfoData.ItemId == null) { return(null); } MP_EBayOrderItemDetail value; if (!_CacheEBayOrderItemInfo.TryGetValue(eBayFindOrderItemInfoData.ItemId, out value)) { value = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(elapsedTimeInfo, mpId, ElapsedDataMemberType.RetrieveDataFromDatabase, () => _EBayOrderItemInfoRepository.FindItem(eBayFindOrderItemInfoData)); if (value != null) { _CacheEBayOrderItemInfo.TryAdd(value.ItemID, value); } } return(value); }