using Azure.Cosmos; using Azure.Messaging.ServiceBus; using Microsoft.Extensions.Configuration; using System; using System.Collections.Generic; using System.Text; using System.Text.Json; using System.Threading.Tasks; using TEAMModelOS.SDK.DI; using TEAMModelOS.SDK.Extension; namespace TEAMModelOS.SDK.Models.Service { public static class HomeworkService { public static async Task saveMoreAsync(CosmosClient client, DingDing _dingDing, Homework work, AzureServiceBusFactory _serviceBus, AzureStorageFactory _azureStorage, IConfiguration _configuration) { try { work.ttl = -1; work.code = "Homework-" + work.school; long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); work.createTime = now; var messageBlob = new ServiceBusMessage(); string blobcntr = null; blobcntr = work.school; work.size = await _azureStorage.GetBlobContainerClient(work.school).GetBlobsSize($"homework/{work.id}"); messageBlob = new ServiceBusMessage(new { id = Guid.NewGuid().ToString(), progress = "insert", root = $"homework/{work.id}", name = $"{work.school}" }.ToJsonString()); messageBlob.ApplicationProperties.Add("name", "BlobRoot"); var ActiveTask = _configuration.GetValue("Azure:ServiceBus:ActiveTask"); await _serviceBus.GetServiceBusClient().SendMessageAsync(ActiveTask, messageBlob); work.recordUrl = $"/homework/{work.id}/record.json"; var cods = new { records = new List(), userids = new List(), question = new List() }; await _azureStorage.UploadFileByContainer(blobcntr, cods.ToJsonString(), "homework", $"{work.id}/record.json"); work.id = Guid.NewGuid().ToString(); if (string.IsNullOrEmpty(work.id)) { if (work.publish == 1) { work.progress = "pending"; } else { if (work.startTime > now) { work.progress = "pending"; } else { work.progress = "going"; } } await client.GetContainer("TEAMModelOS", "Common").CreateItemAsync(work, new PartitionKey($"{work.code}")); } else { await client.GetContainer("TEAMModelOS", "Common").UpsertItemAsync(work, new PartitionKey($"{work.code}")); } return work.id; } catch (Exception e) { await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-HomeworkService-saveMore\n{e.Message}{e.StackTrace}", GroupNames.醍摩豆服務運維群組); return ""; } } } }