/// <summary>
        /// Evaluate parameters for a given subscription
        /// </summary>
        /// <param name="offer"></param>
        /// <param name="plan"></param>
        /// <param name="subscription"></param>
        /// <returns></returns>
        private async Task <Dictionary <string, object> > EvaluateParameters(Offer offer, Plan plan, Subscription subscription)
        {
            ExpressionEvaluationUtils util = new ExpressionEvaluationUtils(
                await SetContext(offer.OfferName, subscription.Owner, subscription.SubscriptionId, plan.PlanName, subscription.ProvisioningType));

            Dictionary <string, string> parameters = new Dictionary <string, string>();

            foreach (var param in await _armTemplateParameterService.GetAllAsync(offer.OfferName))
            {
                parameters.Add(param.Name, param.Value);
            }
            foreach (var param in await _webhookParameterService.GetAllAsync(offer.OfferName))
            {
                parameters.Add(param.Name, param.Value);
            }
            await util.EvaluateAll(parameters);

            foreach (var param in util.Context.Parameters.Keys)
            {
                if (!await _subscriptionParameterService.ExistsAsync(subscription.SubscriptionId, param))
                {
                    await _subscriptionParameterService.CreateAsync(new SubscriptionParameter
                    {
                        SubscriptionId = subscription.SubscriptionId,
                        Name           = param,
                        Value          = util.Context.Parameters[param].ToString(),
                        Type           = util.Context.Parameters[param].GetType().Name
                    });
                }
            }

            return(util.Context.Parameters);
        }
 public async Task <ActionResult> GetAllAsync(string offerName)
 {
     AADAuthHelper.VerifyUserAccess(this.HttpContext, _logger, true);
     _logger.LogInformation($"Get all webhook parameters in offer {offerName}.");
     return(Ok(await _webhookParameterService.GetAllAsync(offerName)));
 }