public static async Task RunAsync([QueueTrigger("icecreamorders", Connection = "AzureQueueStorage")] string iceCreamOrderQueueItem,
                                          [CosmosDB(databaseName: "csBlazorDb",
                                                    collectionName: "iceCreamOrders",
                                                    ConnectionStringSetting = "CosmosDBConnection")] IAsyncCollector <dynamic> document, ILogger Log)
        {
            var iceCreamOrder = JsonConvert.DeserializeObject <Preorder>(iceCreamOrderQueueItem);

            iceCreamOrder.Status = "Accepted";

            CatalogItem iceCream;
            var         contextOptions = new DbContextOptionsBuilder <ColdStartContext>()
                                         .UseSqlServer(Environment.GetEnvironmentVariable("AzureSqlDatabase", EnvironmentVariableTarget.Process))
                                         .Options;

            using (var context = new ColdStartContext(contextOptions))
            {
                iceCream = await context.Icecreams.FirstOrDefaultAsync(x => x.Id == iceCreamOrder.IcecreamId);
            }

            if (iceCream != null && iceCreamOrder != null)
            {
                await document.AddAsync(new CosmosDbOrder(iceCreamOrder, iceCream));
            }
            else
            {
                Log.LogError($"Something went wrong when parsing the queueitem: {iceCreamOrderQueueItem}");
            }
        }
Beispiel #2
0
        public static async Task <IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req, ILogger log)
        {
            try
            {
                string requestBody = String.Empty;
                using (StreamReader sReader = new StreamReader(req.Body))
                {
                    requestBody = await sReader.ReadToEndAsync();
                }

                //Send to SQL db
                var sendIceCreamOrderRequest = JsonConvert.DeserializeObject <SendIceCreamOrderRequest>(requestBody);

                var contextOptions = new DbContextOptionsBuilder <ColdStartContext>()
                                     .UseSqlServer(Environment.GetEnvironmentVariable("AzureSqlDatabase", EnvironmentVariableTarget.Process))
                                     .Options;
                using (var context = new ColdStartContext(contextOptions))
                {
                    var preorder = await context.Orders.AddAsync(sendIceCreamOrderRequest.Preorder);

                    await context.SaveChangesAsync();

                    //Send to Azure Queuee
                    var storageConnectionString = Environment.GetEnvironmentVariable("AzureQueueStorage", EnvironmentVariableTarget.Process);
                    var queueClient             = new QueueClient(storageConnectionString, QueueName);
                    var preOrderBytes           = System.Text.Encoding.UTF8.GetBytes(preorder.Entity.toJson());
                    await queueClient.SendMessageAsync(Convert.ToBase64String(preOrderBytes));
                }

                //Send personalizer options
                var personalizerEndpoint = Environment.GetEnvironmentVariable("AzurePersonalizerEndpoint", EnvironmentVariableTarget.Process);
                var personalizerKey      = Environment.GetEnvironmentVariable("AzurePersonalizerKey", EnvironmentVariableTarget.Process);
                if (!string.IsNullOrWhiteSpace(personalizerEndpoint) || !string.IsNullOrWhiteSpace(personalizerKey))
                {
                    var personalizerClient = new PersonalizerClient(
                        new ApiKeyServiceClientCredentials(personalizerKey))
                    {
                        Endpoint = personalizerEndpoint
                    };

                    var request = new RewardRequest(sendIceCreamOrderRequest.IsRecommended ? 1 : 0);
                    await personalizerClient.RewardAsync(sendIceCreamOrderRequest.EventId, request);
                }


                return(new OkObjectResult(true));
            }
            catch (Exception ex)
            {
                return(new BadRequestObjectResult($"Exception happened when sending: {ex}"));
            }
        }
 public static async Task <IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req, ILogger log)
 {
     try
     {
         var contextOptions = new DbContextOptionsBuilder <ColdStartContext>()
                              .UseSqlServer(Environment.GetEnvironmentVariable("AzureSqlDatabase", EnvironmentVariableTarget.Process))
                              .Options;
         var catalog = new Catalog();
         using (var context = new ColdStartContext(contextOptions))
         {
             catalog.icecreams = await context.Icecreams.ToListAsync();
         }
         return(new OkObjectResult(catalog));
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex);
         return(new BadRequestObjectResult(ex));
     }
 }