Esempio n. 1
0
        }         // constructor

        protected override void ExecuteStep()
        {
            MarketplaceUpdateStatus mpus = UpdateMarketplaces();

            new Staller(this.customerID, this.mailer)
            .SetMarketplaceUpdateStatus(mpus)
            .Stall();

            ExecuteAdditionalStrategies();
        }         // ExecuteStep
Esempio n. 2
0
        }         // 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
Esempio n. 3
0
        }         // Execute

        internal UpdateMarketplace SetMarketplaceUpdateStatus(MarketplaceUpdateStatus mpus)
        {
            this.marketplaceUpdateStatus = mpus;
            return(this);
        }         // SetMarketplaceUpdateStatus