using System; using System.Collections.Generic; using System.Text.Json; using System.Threading.Tasks; using Azure.Cosmos; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Host; using Microsoft.Extensions.Logging; using TEAMModelOS.SDK.DI; using TEAMModelOS.SDK.Extension; namespace TEAMModelFunction { public class ServiceBusTopic { private readonly AzureCosmosFactory _azureCosmos; public ServiceBusTopic( AzureCosmosFactory azureCosmos) { _azureCosmos = azureCosmos; } [FunctionName("ServiceBusTopic")] public async Task Run([ServiceBusTrigger("test_topic_ActiveTask", "test_topic_ReciveTask", Connection = "ConnectionBusName")] string mySbMsg, ILogger log) { log.LogInformation($"C# ServiceBus topic trigger function processed message: {mySbMsg}"); Dictionary keyValuePairs = mySbMsg.ToObject>(); var client = _azureCosmos.GetCosmosClient(); keyValuePairs.TryGetValue("id", out object id); keyValuePairs.TryGetValue("name", out object name); keyValuePairs.TryGetValue("code", out object code); keyValuePairs.TryGetValue("status", out object progress); if (name.ToString().Equals("ExamInfo")) { ExamInfo exam = await client.GetContainer("TEAMModelOS", "Common").ReadItemAsync(id.ToString(), new PartitionKey($"{code}")); exam.progress = progress.ToString(); await client.GetContainer("TEAMModelOS", "Common").ReplaceItemAsync(exam, id.ToString(), new PartitionKey($"{code}")); } else if (name.ToString().Equals("Survey")) { Survey survey = await client.GetContainer("TEAMModelOS", "Common").ReadItemAsync(id.ToString(), new PartitionKey($"{code}")); survey.progress = progress.ToString(); await client.GetContainer("TEAMModelOS", "Common").ReplaceItemAsync(survey, id.ToString(), new PartitionKey($"{code}")); } else if (name.ToString().Equals("Vote")) { Vote vote = await client.GetContainer("TEAMModelOS", "Common").ReadItemAsync(id.ToString(), new PartitionKey($"{code}")); vote.progress = progress.ToString(); await client.GetContainer("TEAMModelOS", "Common").ReplaceItemAsync(vote, id.ToString(), new PartitionKey($"{code}")); } } } }