using Azure.Cosmos;
using DocumentFormat.OpenXml.Bibliography;
using Microsoft.VisualBasic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using TEAMModelOS.SDK.DI;
using TEAMModelOS.SDK.Extension;
using TEAMModelOS.SDK.Models.Cosmos.BI;
using TEAMModelOS.SDK.Models.Cosmos.BI.BICommon;
namespace TEAMModelOS.SDK.Models.Service.BI
{
public static class BIStatsNotice
{
///
/// 统计通知
///
/// 连接
/// 错误消息发送
/// 统计类型
/// 账号类型 private:个人 school 学校
/// 账号id
/// 数量
/// 创建时间
///
public static async Task SetStatsNotice(CosmosClient cosmosClient, DingDing _dingDing, string type, string idType, string id, int count, long careDate = 0)
{
try
{
DateTimeOffset dateOff = DateTimeOffset.UtcNow;
if (careDate > 1000000000000)
dateOff = DateTimeOffset.FromUnixTimeMilliseconds(careDate);
else
dateOff = DateTimeOffset.FromUnixTimeSeconds(careDate);
StatsNotice statsNotice = new();
var resStsInfo = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemStreamAsync($"{dateOff.Year}-{id}", new PartitionKey("StatsNotice"));
if (resStsInfo.Status == 200)
{
using var fileJson = await JsonDocument.ParseAsync(resStsInfo.ContentStream);
statsNotice = fileJson.ToObject();
}
else
{
statsNotice.id = $"{dateOff.Year}-{id}";
statsNotice.type = idType;
statsNotice.rangeId = id;
}
switch (type)
{
case "Student":
statsNotice.stuDayCnt += count;
break;
case "Classroom":
statsNotice.classroomDayCnt += count;
break;
case "Weigh":
statsNotice.weighDayCnt += count;
break;
case "Homework":
statsNotice.homeworkDayCnt = count;
break;
}
if (resStsInfo.Status == 200)
{
statsNotice = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReplaceItemAsync(statsNotice, statsNotice.id, new PartitionKey("StatsNotice"));
}
else
{
statsNotice = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").CreateItemAsync(statsNotice, new PartitionKey("StatsNotice"));
}
}
catch (Exception ex)
{
await _dingDing.SendBotMsg($"BI,{Environment.GetEnvironmentVariable("Option:Location")},SetStatsNotice(),参数: 统计类型:{type},类型私人/学校:{idType},id:{id}, 增/减数:{count},时间戳:{careDate}\n {ex.Message}\n {ex.StackTrace}", GroupNames.成都开发測試群組);
}
}
///
/// 发送消息
///
///
public static async Task MonitorStatsNotice()
{
}
}
}