using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Ropin.Inspection.Api.Common;
using Ropin.Inspection.Api.Common.Options;
using Ropin.Inspection.Api.Wx;
using Ropin.Inspection.Common.Helper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;

namespace Ropin.Inspection.Api.Controllers
{
    public class WxController : BaseController
    {
        private readonly IOptionsMonitor<WXOptions> _options;
        private readonly IHttpClientFactory _httpClientFactory;
        public WxController(IOptionsMonitor<WXOptions> options, IHttpClientFactory httpClientFactory)
        {
            _options = options;
            _httpClientFactory = httpClientFactory;
        }
        // GET: api/<controller>
        [HttpGet]
        public ActionResult Get(SignatureModel signatureModel)
        {
            signatureModel.Token = _options.Get("WXOptions").Token;
            string rtnStr;
            if (SignatureHelper.Check(signatureModel))
            {
                rtnStr = signatureModel.Echostr;
            }
            else
            {
                rtnStr = signatureModel.Signature + signatureModel.Timestamp + signatureModel.Nonce + signatureModel.Echostr;
            }
            return Content(rtnStr);
        }
        /// <summary>
        /// 获取ai公众号的openID
        /// </summary>
        /// <returns></returns>
        [HttpGet("GetOpenId")]
        [AllowAnonymous]
        public async Task<ApiResult> GetOpenId(string jsCode)
        {
            var openid = await (new WeChatHelper(_httpClientFactory)).GetOpenIdByCodeAsync(jsCode);
            return new ApiResult<string>(openid, ReturnCode.Success);
        }
    }
}