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}"); } }
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)); } }