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
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); }
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 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 }); }
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
public MP_EbayAmazonCategory[] FindAmazonCategoryByProductSellerSKU(string sellerSKU, ElapsedTimeInfo elapsedTimeInfo, int mpId) { MP_EbayAmazonCategory[] cat; if (!_CacheAmazonCategoryByProductKey.TryGetValue(sellerSKU, out cat)) { cat = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(elapsedTimeInfo, mpId, ElapsedDataMemberType.RetrieveDataFromDatabase, () => _AmazonOrderItemDetailRepository.FindCategoriesBySellectSku(sellerSKU)); if (cat != null) { _CacheAmazonCategoryByProductKey.TryAdd(sellerSKU, cat); } } return(cat); }
private MP_EbayAmazonCategory AddAmazonCategory(IMarketplaceType marketplace, AmazonProductCategory amazonProductCategory, ElapsedTimeInfo elapsedTimeInfo, int mpId) { var cat = new MP_EbayAmazonCategory { CategoryId = amazonProductCategory.CategoryId, Name = amazonProductCategory.CategoryName, Marketplace = _MarketPlaceRepository.Get(marketplace.InternalId), Parent = amazonProductCategory.Parent == null ? null : FindEBayAmazonCategory(marketplace, amazonProductCategory.Parent.CategoryId, elapsedTimeInfo, mpId) ?? AddAmazonCategory(marketplace, amazonProductCategory.Parent, elapsedTimeInfo, mpId) }; AddCategoryToCache(marketplace, cat); ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(elapsedTimeInfo, mpId, ElapsedDataMemberType.StoreDataToDatabase, () => _EbayAmazonCategoryRepository.Save(cat)); return(cat); }
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); }
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); }
} // 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 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); }
} // 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
} // 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
public void UpdateOrderItemsInfo(IEnumerable <MP_EBayOrderItemDetail> mpEBayOrderItemDetails, ElapsedTimeInfo elapsedTimeInfo, int mpId) { if (mpEBayOrderItemDetails == null) { return; } foreach (MP_EBayOrderItemDetail mpEBayOrderItemDetail in mpEBayOrderItemDetails) { if (mpEBayOrderItemDetail == null) { continue; } var detail = mpEBayOrderItemDetail; var items = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(elapsedTimeInfo, mpId, ElapsedDataMemberType.RetrieveDataFromDatabase, () => _MP_EbayTransactionsRepository.GetAllItemsWithItemsID(detail.ItemID)); if (items == null || items.Count == 0) { continue; } foreach (var mpEbayTransaction in items) { mpEbayTransaction.OrderItemDetail = mpEBayOrderItemDetail; var transaction = mpEbayTransaction; ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(elapsedTimeInfo, mpId, ElapsedDataMemberType.StoreDataToDatabase, () => _MP_EbayTransactionsRepository.SaveOrUpdate(transaction)); } } }
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); }
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); }
} // 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
private UpdateActionResultInfo CustomerMarketplaceUpdateAction( IDatabaseCustomerMarketPlace databaseCustomerMarketPlace, AmazonSecurityInfo securityInfo, ActionAccessType access, MP_CustomerMarketplaceUpdatingHistory historyRecord ) { // save data to order table //var webServiceConfigurator = CreateServiceReportsConfigurator(connectionInfo); var elapsedTimeInfo = new ElapsedTimeInfo(); DateTime?startDate = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds( elapsedTimeInfo, databaseCustomerMarketPlace.Id, ElapsedDataMemberType.RetrieveDataFromDatabase, () => Helper.GetLastAmazonOrderDate(databaseCustomerMarketPlace) ); var now = DateTime.UtcNow; if (!startDate.HasValue) { startDate = now.AddYears(-1); // We want data since the 1st of the month. startDate = startDate.Value.AddDays(-startDate.Value.Day).AddDays(1).Date; } // if var fromDate = startDate.Value; var toDate = now; var amazonOrdersRequestInfo = new AmazonOrdersRequestInfo { StartDate = fromDate, EndDate = toDate, MarketplaceId = securityInfo.MarketplaceId, MerchantId = securityInfo.MerchantId, ErrorRetryingInfo = this.amazonSettings, CustomerId = databaseCustomerMarketPlace.Customer.Id, MWSAuthToken = securityInfo.MWSAuthToken }; DateTime submittedDate = now; log.InfoFormat( "Fetching Amazon orders for customer: {0} marketplace: {1}", databaseCustomerMarketPlace.Customer.Id, databaseCustomerMarketPlace.Id ); MP_AmazonOrder amazonOrder = null; RequestsCounterData requestsCounter = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds( elapsedTimeInfo, databaseCustomerMarketPlace.Id, ElapsedDataMemberType.RetrieveDataFromExternalService, () => AmazonServiceHelper.GetListOrders(this.connectionInfo, amazonOrdersRequestInfo, access, data => { amazonOrder = Helper.StoreAmazonOrdersData(databaseCustomerMarketPlace, data, historyRecord, amazonOrder); return(true); }) ); var allOrders = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds( elapsedTimeInfo, databaseCustomerMarketPlace.Id, ElapsedDataMemberType.RetrieveDataFromDatabase, () => Helper.GetAllAmazonOrdersData(submittedDate, databaseCustomerMarketPlace) ); allOrders.RequestsCounter = requestsCounter; if (allOrders.Count > 0) { var bestSaledOrderItemList = AnalyseOrder(allOrders).ToList(); if (bestSaledOrderItemList.Any()) { foreach (var orderItem2 in bestSaledOrderItemList) { var orderItems = GetOrderItems( securityInfo, access, orderItem2, elapsedTimeInfo, allOrders, databaseCustomerMarketPlace.Id ); orderItem2.OrderedItemsList = orderItems; if (orderItems != null) { foreach (var orderItem in orderItems) { orderItem.Categories = GetAndSaveAmazonProcuctCategoryByProductSellerSku( databaseCustomerMarketPlace, securityInfo, orderItem.SellerSKU, access, allOrders.RequestsCounter, elapsedTimeInfo ); } // for each } // if } // for each } // if ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds( elapsedTimeInfo, databaseCustomerMarketPlace.Id, ElapsedDataMemberType.StoreDataToDatabase, () => Helper.StoreAmazonOrdersDetailsData(databaseCustomerMarketPlace, bestSaledOrderItemList) ); } // if return(new UpdateActionResultInfo { Name = UpdateActionResultType.OrdersCount, Value = (object)allOrders.Count, RequestsCounter = allOrders.RequestsCounter, ElapsedTime = elapsedTimeInfo }); }
} // 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
} // RetrieveCustomerSecurityInfo protected override ElapsedTimeInfo RetrieveAndAggregate( IDatabaseCustomerMarketPlace databaseCustomerMarketPlace, MP_CustomerMarketplaceUpdatingHistory historyRecord ) { log.Info( "Starting to update FreeAgent marketplace id: {0} name: '{1}'...", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); FreeAgentSecurityInfo freeAgentSecurityInfo; try { log.Debug( "Trying to deserialize (without decrypting) security info for marketplace {0} name: '{1}'...", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); freeAgentSecurityInfo = Serialized.Deserialize<FreeAgentSecurityInfo>( databaseCustomerMarketPlace.SecurityData ); log.Debug( "Successfully deserialized (without decrypting) security info for marketplace {0} name: '{1}'.", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); } catch (Exception e) { log.Warn( e, "Failed to deserialize (without decrypting) security info for marketplace {0} name: '{1}'.", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); freeAgentSecurityInfo = null; } // try if (freeAgentSecurityInfo == null) { try { log.Debug( "Trying to decrypt (without deserializing) security info for marketplace {0} name: '{1}'...", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); string decrypted = Encrypted.Decrypt(databaseCustomerMarketPlace.SecurityData); log.Debug("Decrypted text: {0}", decrypted); MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes( decrypted )); freeAgentSecurityInfo = (FreeAgentSecurityInfo)new XmlSerializer(typeof(FreeAgentSecurityInfo)) .Deserialize(memStream); log.Debug( "Successfully decrypted (without deserializing) security info for marketplace {0} name: '{1}'.", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); } catch (Exception e) { log.Warn( e, "Failed to decrypt (without deserializing) security info for marketplace {0} name: '{1}'.", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); freeAgentSecurityInfo = null; } // try } // if if (freeAgentSecurityInfo == null) { try { log.Debug( "Trying to deserialize and decrypt security info for marketplace {0} name: '{1}'...", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); freeAgentSecurityInfo = Serialized.Deserialize<FreeAgentSecurityInfo>(Encrypted.Decrypt( databaseCustomerMarketPlace.SecurityData )); log.Debug( "Successfully deserialized and decrypted security info for marketplace {0} name: '{1}'.", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); } catch (Exception e) { log.Warn( e, "Failed to deserialize and decrypt security info for marketplace {0} name: '{1}'.", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); freeAgentSecurityInfo = null; } // try } // if if (freeAgentSecurityInfo == null) { throw new Exception(string.Format( "FreeAgent marketplace id: {0} name: '{1}': failed to decrypt/deserialize security info.", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName )); } // if var connector = new FreeAgentConnector(); string accessToken = freeAgentSecurityInfo.AccessToken; if (DateTime.UtcNow > freeAgentSecurityInfo.ValidUntil) { log.Info( "FreeAgent marketplace id: {0} name: '{1}': starting to refresh access token...", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); var tokenContainer = connector.RefreshToken(freeAgentSecurityInfo.RefreshToken); if (tokenContainer == null) { string err = string.Format( "FreeAgent marketplace id: {0} name: '{1}': failed to refresh access token.", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); log.Warn(err); throw new Exception(err); } // if log.Info( "FreeAgent marketplace id: {0} name: '{1}': received new access token, will save it to DB.", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); var securityData = new FreeAgentSecurityInfo { ApprovalToken = freeAgentSecurityInfo.ApprovalToken, AccessToken = tokenContainer.access_token, ExpiresIn = tokenContainer.expires_in, TokenType = tokenContainer.token_type, RefreshToken = freeAgentSecurityInfo.RefreshToken, MarketplaceId = freeAgentSecurityInfo.MarketplaceId, Name = freeAgentSecurityInfo.Name, ValidUntil = DateTime.UtcNow.AddSeconds(tokenContainer.expires_in - 60) }; var serializedSecurityData = new Serialized(securityData); Helper.SaveOrUpdateCustomerMarketplace( databaseCustomerMarketPlace.DisplayName, new FreeAgentDatabaseMarketPlace(), serializedSecurityData, databaseCustomerMarketPlace.Customer ); log.Info( "FreeAgent marketplace id: {0} name: '{1}': new access token was saved to DB.", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); } // if int invoicesDeltaPeriod = Helper.GetFreeAgentInvoiceDeltaPeriod(databaseCustomerMarketPlace); log.Info( "FreeAgent marketplace id: {0} name: '{1}': getting invoices with delta period = '{2}'...", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName, invoicesDeltaPeriod ); var freeAgentInvoices = connector.GetInvoices(accessToken, invoicesDeltaPeriod); log.Info( "FreeAgent marketplace id: {0} name: '{1}': getting expenses...", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); var freeAgentExpenses = connector.GetExpenses( accessToken, Helper.GetFreeAgentExpenseDeltaPeriod(databaseCustomerMarketPlace) ); log.Info( "FreeAgent marketplace id: {0} name: '{1}': filling expenses category...", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); foreach (var expense in freeAgentExpenses) { expense.categoryItem = connector.GetExpenseCategory(accessToken, expense.category); expense.categoryItem.Id = Helper.AddFreeAgentExpenseCategory(expense.categoryItem); } // for each log.Info( "FreeAgent marketplace id: {0} name: '{1}': getting company...", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); FreeAgentCompany freeAgentCompany = connector.GetCompany(accessToken); log.Info( "FreeAgent marketplace id: {0} name: '{1}': getting users...", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); List<FreeAgentUsers> freeAgentUsers = connector.GetUsers(accessToken); var elapsedTimeInfo = new ElapsedTimeInfo(); log.Info( "FreeAgent marketplace id: {0} name: '{1}': saving request, {2} invoices & {3} expenses in DB...", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName, freeAgentInvoices.Count, freeAgentExpenses.Count ); var mpRequest = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds( elapsedTimeInfo, databaseCustomerMarketPlace.Id, ElapsedDataMemberType.StoreDataToDatabase, () => Helper.StoreFreeAgentRequestAndInvoicesAndExpensesData( databaseCustomerMarketPlace, freeAgentInvoices, freeAgentExpenses, historyRecord ) ); StoreCompanyData(mpRequest, freeAgentCompany, elapsedTimeInfo, databaseCustomerMarketPlace.Id); StoreUsersData(mpRequest, freeAgentUsers, elapsedTimeInfo, databaseCustomerMarketPlace.Id); log.Info( "Finished to update FreeAgent marketplace id: {0} name: '{1}'.", databaseCustomerMarketPlace.Id, databaseCustomerMarketPlace.DisplayName ); return elapsedTimeInfo; } // RetrieveAndAggregate