using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using OASystem.API.OAMethodLib.JuHeAPI;
using OASystem.Domain.ViewModels.JuHeExchangeRate;
using System.Buffers;
using System.Collections.Specialized;
using System.Text.Json;
using System.Text.Json.Nodes;
using System.Xml.Linq;

namespace OASystem.API.Controllers
{
    /// <summary>
    /// 小功能接口
    /// </summary>
    [Route("api/[controller]/[action]")]
    [ApiController]
    public class SmallFunController : ControllerBase
    {
        private readonly IJuHeApiService _juHeApiService;

        /// <summary>
        /// 初始化
        /// </summary>
        /// <param name="juHeApiService"></param>
        public SmallFunController(IJuHeApiService juHeApiService)
        {
            this._juHeApiService = juHeApiService;
        }


        #region 聚合汇率相关
        /// <summary>
        /// 获取汇率接口
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
        public async Task<IActionResult> GeExchangeRate()
        {
            string rateDataString = await RedisRepository.RedisFactory
                                                         .CreateRedisRepository()
                                                         .StringGetAsync<string>("OA2023JuHeExchangeRate");//string 取

            //if (string.IsNullOrEmpty(rateDataString))
            //{
                var rateData = await _juHeApiService.GetExchangeRateAsync();
                if (rateData.Resultcode == "200" && rateData.Error_code == 0)
                {
                    var data = rateData.Result;

                    System.Text.Json.JsonSerializer.Deserialize<ListDictionary>(data.ToJson());


                    var node = JsonNode.Parse(data.ToJson());
                    var responseData = System.Text.Json.JsonSerializer.Deserialize<Dictionary<string, dynamic>>(node);
                //var responseData = System.Text.Json.JsonSerializer.Deserialize<ExchangeRateModel>(data);

                //var responseData = JsonSerializer.Deserialize<Dictionary<string, dynamic>>(data);
                //var node = JsonNode.Parse(data.ToJson());
                //var myClass = node.GetValue<ExchangeRateModel>;


                TimeSpan ts = DateTime.Now.AddMinutes(120) - DateTime.Now; //设置redis 过期时间 比 jwt 时间 快一分钟
                    await RedisRepository.RedisFactory.CreateRedisRepository()
                                                      .StringSetAsync<string>("OA2023JuHeExchangeRate", data.ToJson(), ts);//string 存
                                                                                                                                                   //JsonObject.Create(data, ExchangeRateModel).ToJson();
                }
            //}

           

            return Ok(JsonView(true));
        }
        #endregion
        /// <summary>
        /// 获取汇率
        /// </summary>
        /// <returns></returns>


    }
}