using BBWYB.Common.Models;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;

namespace BBWYB.Server.API.Controllers
{
    [Produces("application/json")]
    [Route("Api/[Controller]/[Action]")]
    [ApiController]
    [EnableCors("cors")]
    public class BaseApiController : ControllerBase
    {
        protected IHttpContextAccessor httpContextAccessor;
        public BaseApiController(IHttpContextAccessor httpContextAccessor)
        {
            this.httpContextAccessor = httpContextAccessor;
        }

        protected string GetUserId()
        {
            var userId = httpContextAccessor?.HttpContext?.User.Claims.Where(x => x.Type == "userId")?.FirstOrDefault()?.Value;
            if (string.IsNullOrEmpty(userId))
                throw new BusinessException("未从token中获取到userId");
            return userId;
        }

        protected string GetToken()
        {
            httpContextAccessor.HttpContext.Request.Headers.TryGetValue("Authorization", out StringValues token);
            return token;
        }

        protected string GetClientCode()
        {
            httpContextAccessor.HttpContext.Request.Headers.TryGetValue("ClientCode", out StringValues clientCode);
            return clientCode;
        }
    }
}