using IRaCIS.Core.Application.BusinessFilter;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace IRaCIS.Core.Application.Service.MinimalApiService
{
    /// <summary>
    /// minimal api  测试 
    /// 学习参考文档:http://fanrk.cn/%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3/MinimalApi/MinimalApi.html
    /// 组件参考文档:https://docs.masastack.com/framework/building-blocks/minimal-apis#section-69828ff0
    /// 升级只用改一个地方 搜索关键词: 统一使用 Directory.Build.props 管理项目
    //https://www.toutiao.com/article/7407615998343348787/?app=news_article&timestamp=1724760241&use_new_style=1&req_id=20240827200400D600951D2F54551B5ACF&group_id=7407615998343348787&share_token=03C009BA-571C-47AB-86E5-87DA93F08975&tt_from=weixin&utm_source=weixin&utm_medium=toutiao_ios&utm_campaign=client_share&wxshare_count=1&source=m_redirect&wid=1729739417949

    /// </summary>
    [ApiExplorerSettings(GroupName = "Institution")]

    public class TestMinimalApiService(IUserInfo _userInfo) : ServiceBase
    {


        [TrialGlobalLimit("AddOrUpdateTrial", "BeforeOngoingCantOpt", "AfterStopCannNotOpt")]
        public Task<List<string>> GetProjectList1Async()
        {
            var list = new List<string>()
            {
                "Auth",
                "DCC",
                "PM"
            };
            return Task.FromResult(list);
        }

        [AllowAnonymous]
        [TrialGlobalLimit( "BeforeOngoingCantOpt")]
        public IResponseOutput GetTest()
        {

            //throw new BusinessValidationFailedException("手动抛出的异常");

            return ResponseOutput.Ok(_userInfo.IP);
        }

        public IResponseOutput GetTestI18n()
        {
            var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US;

            //CultureInfo.CurrentCulture = new CultureInfo(StaticData.CultureInfo.en_US);
            //CultureInfo.CurrentUICulture = new CultureInfo(StaticData.CultureInfo.en_US);

            return ResponseOutput.Ok(I18n.T("TaskAllocation_DoctorConfigExists"));
        }

    }

}