using BBWYB.Server.Business;
using BBWYB.Server.Model.Dto;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using SDKAdapter.OperationPlatform.Models;

namespace BBWYB.Server.API.Controllers
{
    [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
    public class OrderController : BaseApiController
    {
        private OrderBusiness orderBusiness;
        public OrderController(IHttpContextAccessor httpContextAccessor, OrderBusiness orderBusiness) : base(httpContextAccessor)
        {
            this.orderBusiness = orderBusiness;
        }

        /// <summary>
        /// 订单查询
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public OrderListResponse GetOrderList(QueryOrderRequest request)
        {
            return orderBusiness.GetOrderList(request);
        }

        /// <summary>
        /// 出库
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void OutStock([FromBody] OutStockRequest request)
        {
            orderBusiness.OutStock(request);
        }

        /// <summary>
        /// 取消订单
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void CancelOrder([FromBody] CancelOrderRequest request)
        {
            if (!httpContextAccessor.HttpContext.Request.Headers.TryGetValue("Authorization", out StringValues token))
                throw new Exception("未获取到token");

            orderBusiness.CancelOrder(request, token.ToString());
        }

        /// <summary>
        /// 改价
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void EditPrice([FromBody]OP_EditPriceRequest request)
        { 
            orderBusiness.EditPrice(request);
        }
    }
}