using Azure.Cosmos;
using HTEXLib.COMM.Helpers;
using Microsoft.Azure.Documents;
using System;
using System.Collections.Generic;
using System.Text;
using TEAMModelOS.SDK;
using TEAMModelOS.SDK.DI;
using TEAMModelOS.SDK.Models;
using TEAMModelOS.SDK.Models.Cosmos.Common;

namespace TEAMModelFunction
{
    public static class TriggerExamLite
    {
        public static async void Trigger(AzureServiceBusFactory _serviceBus, AzureStorageFactory _azureStorage, DingDing _dingDing,
                    CosmosClient client, Document input, TriggerData tdata, AzureRedisFactory _azureRedis)
        {
            try
            {
                if ((tdata.status != null && tdata.status.Value == 404) || tdata.ttl > 0)
                {
                    return;
                }
                var adid = tdata.id;
                var adcode = "";
                string blobcntr = null;
                if (tdata.scope.Equals("school"))
                {
                    adcode = $"Activity-{tdata.school}";
                    blobcntr = tdata.school;
                }
                else
                {
                    adcode = $"Activity-{tdata.creatorId}";
                    blobcntr = tdata.creatorId;
                }
                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}研修评测活动【{tdata.name}-{tdata.id}-ttl={tdata.ttl}】正在操作", GroupNames.成都开发測試群組);
                ExamLite lite = await client.GetContainer("TEAMModelOS", "Common").ReadItemAsync<ExamLite>(input.Id, new Azure.Cosmos.PartitionKey($"{tdata.code}"));
                //List<ChangeRecord> voteRecords = await _azureStorage.FindListByDict<ChangeRecord>(new Dictionary<string, object>() { { "RowKey", input.Id }, { "PartitionKey", vote.progress } });
                if (lite != null)
                {
                    (List<TmdInfo> tchList, _) = await TriggerStuActivity.GetTchList(client, _dingDing, lite.tchLists, lite.school);
                    List<StuActivity> tchActivities = new List<StuActivity>();

                    if (tchList.IsNotEmpty())
                    {
                        tchList.ForEach(x =>
                        {
                            tchActivities.Add(new StuActivity
                            {
                                pk = "Activity",
                                id = lite.id,
                                code = $"Activity-{x.id}",
                                type = "ExamLite",
                                name = lite.name,
                                startTime = lite.startTime,
                                endTime = lite.endTime,
                                scode = lite.code,
                                scope = lite.scope,
                                school = lite.school,
                                creatorId = lite.creatorId,
                                subjects = new List<string> { "" },
                                blob = null,
                                owner = lite.owner,
                                createTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
                                taskStatus = -1,
                                classIds = lite.tchLists
                            });
                        });
                    }
                    await TriggerStuActivity.SaveStuActivity(client, _dingDing, null, null, tchActivities);


                }

            }
            catch (Exception ex)
            {
                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}研修评测异常{ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
            }

        }
    }
}
