} // constructor protected override void ExecuteStep() { MarketplaceUpdateStatus mpus = UpdateMarketplaces(); new Staller(this.customerID, this.mailer) .SetMarketplaceUpdateStatus(mpus) .Stall(); ExecuteAdditionalStrategies(); } // ExecuteStep
} // ExecuteStep private MarketplaceUpdateStatus UpdateMarketplaces() { Log.Debug("Checking which marketplaces should be updated for {0}...", OuterContextDescription); DateTime now = DateTime.UtcNow; var mpsToUpdate = new List <int>(); DB.ForEachRowSafe( sr => { DateTime?lastUpdateStart = sr["UpdatingStart"]; DateTime?lastUpdateEnd = sr["UpdatingEnd"]; bool shouldUpdate = (lastUpdateStart == null) || (( (lastUpdateEnd != null) && (lastUpdateEnd.Value.AddDays(this.marketplaceUpdateValidityDays) <= now) )); if (!shouldUpdate) { return; } mpsToUpdate.Add(sr["MpID"]); }, "LoadMarketplacesLastUpdateTime", CommandSpecies.StoredProcedure, new QueryParameter("@CustomerID", this.customerID) ); if (mpsToUpdate.Count < 1) { Log.Debug("No marketplace should be updated for {0}.", OuterContextDescription); return(null); } // if Log.Debug( "{0} to update for {1}: {2}.", Grammar.Number(mpsToUpdate.Count, "Marketplace"), OuterContextDescription, string.Join(", ", mpsToUpdate) ); var mpus = new MarketplaceUpdateStatus(mpsToUpdate); foreach (int mpID in mpsToUpdate) { int thisMpID = mpID; // to avoid "Access to foreach variable in closure". Task.Run(() => { Log.Debug("Updating marketplace {0} for {1}...", thisMpID, OuterContextDescription); new UpdateMarketplace(this.customerID, thisMpID, false) .PreventSilentAutomation() .SetMarketplaceUpdateStatus(mpus) .Execute(); Log.Debug("Updating marketplace {0} for {1} complete.", thisMpID, OuterContextDescription); }); } // for each Log.Debug( "Update launched for marketplaces {1} for {0}.", OuterContextDescription, string.Join(", ", mpsToUpdate) ); return(mpus); } // UpdateMarketplaces
} // Execute internal UpdateMarketplace SetMarketplaceUpdateStatus(MarketplaceUpdateStatus mpus) { this.marketplaceUpdateStatus = mpus; return(this); } // SetMarketplaceUpdateStatus