Exemple #1
0
        private string GetBestOnlineStrategy(OnlineStrategyParameters parameters)
        {
            string   bestStrategy = null;
            Campaign cpg          = _campaigns.Find(cpg => cpg.Id == parameters.Id).FirstOrDefault();


            foreach (Strategy strategy in cpg.Strategies)
            {
                if (strategy.StrategyType == StrategyType.Online &&
                    strategy.ExtraElements.URL == parameters.URL &&
                    strategy.StrategyBudget >= parameters.Budget)
                {
                    bestStrategy = strategy.StrategyName;
                    int remainingBudget = strategy.StrategyBudget - parameters.Budget;

                    FilterDefinition <Campaign> filter = Builders <Campaign> .Filter.And(
                        Builders <Campaign> .Filter.Eq(cpg => cpg.Id, parameters.Id),
                        Builders <Campaign> .Filter.ElemMatch <Strategy>(cpg => cpg.Strategies, x => x.StrategyName == bestStrategy)

                        );

                    UpdateDefinition <Campaign> update = Builders <Campaign> .Update.Set(cpg => cpg.Strategies[-1].StrategyBudget, remainingBudget);

                    _campaigns.FindOneAndUpdateAsync(filter, update);

                    break;
                }
            }


            return(bestStrategy);
        }
        public async Task <ActionResult <string> > ObtainBestOnlineStrategy([FromBody] OnlineStrategyParameters parameters)
        {
            string result = await _campaignService.GetBestOnlineFromParams(parameters);

            return(Ok(result));
        }
Exemple #3
0
 /**
  * Returns the best online strategy according to the given params and update it's strategy budget
  */
 public async Task <string> GetBestOnlineFromParams(OnlineStrategyParameters parameters)
 {
     return(await Task.Run(() => GetBestOnlineStrategy(parameters)));
 }