using Azure.Cosmos;
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;
using TEAMModelOS.SDK.Helper.Common.DateTimeHelper;
using TEAMModelOS.SDK.Models.Cosmos.Common;
namespace TEAMModelOS.SDK.Models.Service
{
public class LessonService
{
///
///
///
///
///
///
///
public static LessonDis DisLessonCount(LessonRecord oldRecord, LessonRecord newRecord, LessonDis lessonDis)
{
//创建课堂的情况
if (oldRecord == null && newRecord != null)
{
lessonDis.record = 1;
}
//删除数据的情况
else if (oldRecord != null && newRecord == null)
{
lessonDis.record = -1;
//P分数量加减
if (oldRecord.pScore >= 70)
{
lessonDis.disPCount = -1;
}
//T分数量加减
if (oldRecord.tScore >= 70)
{
lessonDis.disTCount = -1;
}
if (oldRecord.tScore >= 70 && oldRecord.pScore >= 70)
{
lessonDis.disTCount = -1;
}
}
//无效操作
else if (oldRecord == null && newRecord == null)
{
}
//前后操作都有值,则表示更新
else
{
//P分数量加减
if (oldRecord.pScore >= 70)
{
if (newRecord.pScore < 70)
{
lessonDis.disPCount = -1;
}
}
else
{
if (newRecord.pScore >= 70)
{
lessonDis.disPCount = 1;
}
}
//T分数量加减
if (oldRecord.tScore >= 70)
{
if (newRecord.tScore < 70)
{
lessonDis.disTCount = -1;
}
}
else
{
if (newRecord.tScore >= 70)
{
lessonDis.disTCount = 1;
}
}
//双绿灯数量
if (oldRecord.tScore >= 70 && oldRecord.pScore >= 70)
{
if (newRecord.tScore < 70 || newRecord.pScore < 70)
{
lessonDis.disDCount = -1;
}
}
else
{
if (newRecord.tScore >= 70 && newRecord.pScore >= 70)
{
lessonDis.disDCount = 1;
}
}
}
return lessonDis;
}
public static async Task FixLessonCount(CosmosClient client, DingDing _dingDing, LessonRecord record, LessonRecord oldRecord, LessonDis lessonDis)
{
LessonRecord data = null;
try
{
if (record != null && oldRecord == null) {
data = record;
}
if (record == null && oldRecord != null)
{
data = oldRecord;
}
if (record != null && oldRecord != null)
{
data = record;
}
int day = DateTimeOffset.FromUnixTimeMilliseconds(data.startTime).DayOfYear;
int year = DateTimeOffset.FromUnixTimeMilliseconds(data.startTime).Year;
int days = DateTimeHelper.getDays(year);
//int years = DateTimeOffset.UtcNow.DayOfYear;
string tbname = string.Empty;
string code = string.Empty;
if (data.scope.Equals("school"))
{
code = $"LessonCount-{data.school}-{year}";
tbname = "School";
}
else
{
code = $"LessonCount-{year}";
tbname = "Teacher";
}
var response = await client.GetContainer(Constant.TEAMModelOS, tbname).ReadItemStreamAsync(data.tmdid.ToString(), new PartitionKey(code));
if (response.Status == 200)
{
using var json = await JsonDocument.ParseAsync(response.ContentStream);
LessonCount count = json.ToObject();
count.tCount[day-1] += lessonDis.disTCount;
count.pCount[day-1] += lessonDis.disPCount;
count.ptCount[day-1] += lessonDis.disDCount;
count.beginCount[day-1] += lessonDis.record;
/*if (!count.courseIds.Contains(data.courseId))
{
count.courseIds.Add(data.courseId);
count.beginCount[day] += 1;
}*/
await client.GetContainer("TEAMModelOS", tbname).ReplaceItemAsync(count, count.id, new PartitionKey(code));
}
else
{
LessonCount count = new LessonCount
{
id = data.tmdid,
code = code,
ttl = -1
};
double[] da = new double[days];
List list = new List(da);
List listT = new List(da);
List listP = new List(da);
List listPT = new List(da);
list[day-1] += lessonDis.record;
listT[day-1] += lessonDis.disTCount;
listP[day-1] += lessonDis.disPCount;
listPT[day-1] += lessonDis.disDCount;
count.beginCount.AddRange(list);
count.tCount.AddRange(listT);
count.pCount.AddRange(listP);
count.ptCount.AddRange(listPT);
//count.courseIds.Add(data.courseId);
await client.GetContainer("TEAMModelOS", tbname).CreateItemAsync(count, new PartitionKey(code));
}
}
catch (Exception ex)
{
await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-LessonCount-FixLessonCount\n{ex.Message}{ex.StackTrace}{data.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
}
}
}
}