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);
        }

        /// <summary>
        /// 修改商家备注
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void EditVenderRemark([FromBody] EditVenderRemarkRequest request)
        {
            orderBusiness.EditVenderRemark(request);
        }

        /// <summary>
        /// 修改订单SKU备注
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void EditOrderSkuRemark([FromBody] EditOrderSkuRemarkRequest request)
        {
            orderBusiness.EditOrderSkuRemark(request);
        }

        /// <summary>
        /// 齐库推送打包费
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void QiKuPublishPackAmount([FromBody] QiKuPublishPackAmountRequest request)
        {
            orderBusiness.QiKuPublishPackAmount(request);
        }
    }
}