using Azure.Cosmos;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using TEAMModelOS.SDK.Models.Cosmos.BI;
using TEAMModelOS.SDK.Models.Service.BI;
namespace TEAMModelOS.SDK.Models.Service.BIStatsWay
{
public class UserStatsWay
{
///
/// 统计人数
///
///
///
///
///
///
public static async Task> GetYearTecherStudent(CosmosClient cosmosClient, string id, int year, int userType = 1)
{
List result = new(366);
DateTimeOffset dateTime = DateTimeOffset.UtcNow;
if (year < dateTime.Year)
dateTime = new(year, 12, 31, 23, 59, 59, TimeSpan.Zero);
var (yearS, yearE) = TimeHelper.GetStartOrEnd(dateTime, "year"); //计算今年开始/结束时间
string code = $"Teacher-{id}";
string container = "School";
if (userType != 1)
{
code = $"Base-{id}";
container = "Student";
}
List artRelStats = new();
string sql = $"select c.id,c.code,c.createTime from c where c.startTime >= {yearS} and c.startTime <= {yearE}";
await foreach (var item in cosmosClient.GetContainer("TEAMModelOS", container).GetItemQueryIterator(queryText: sql, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"{code}") }))
{
artRelStats.Add(item);
}
DateTimeOffset yearDay = new(year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second, TimeSpan.Zero);
List everyDay = TimeHelper.GetYearEveryDay(dateTime);
for (int i = 0; i < everyDay.Count; i++)
{
result.Add(artRelStats.FindAll(f => (f.createTime >= everyDay[i].start && f.createTime <= everyDay[i].end)).Count);
}
if (result.Count < 366)
result.Add(0);
return result;
}
}
}