using BBWY.Server.Business;
using BBWY.Server.Model.Dto;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using QuanTan.SDK.Model;
using System.Collections.Generic;

namespace BBWY.Server.API.Controllers
{
    [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
    public class PurchaseOrderController : BaseApiController
    {
        private PurchaseOrderBusiness purchaseOrderBusiness;

        public PurchaseOrderController(PurchaseOrderBusiness purchaseOrderBusiness,
                                       IHttpContextAccessor httpContextAccessor) : base(httpContextAccessor)
        {
            this.purchaseOrderBusiness = purchaseOrderBusiness;
        }

        [HttpPost]
        public void AddPurchaseOrder([FromBody] AddPurchaseOrderRequest addPurchaseOrderRequest)
        {
            purchaseOrderBusiness.AddPurchaseOrder(addPurchaseOrderRequest);
        }

        [HttpPut]
        public void EditPurchaseOrder([FromBody] EditPurchaseOrderRequest editPurchaseOrderRequest)
        {
            purchaseOrderBusiness.EditPurchaseOrder(editPurchaseOrderRequest);
        }

        [HttpPost]
        public IList<PurchaseOrderResponse> GetList([FromBody] QueryPurchaseOrderRequest queryPurchaseOrderRequest)
        {
            return purchaseOrderBusiness.GetList(queryPurchaseOrderRequest);
        }

        [HttpDelete("{id}")]
        public void DeletePurchaseOrder([FromRoute] long id)
        {
            purchaseOrderBusiness.DeletePurchaseOrder(id);
        }

        /// <summary>
        /// 订单预览
        /// </summary>
        /// <param name="previewOrderReuqest"></param>
        /// <returns></returns>
        [HttpPost]
        public PreviewOrderResponse PreviewPurchaseOrder([FromBody] PreviewOrderReuqest previewOrderReuqest)
        {
            return purchaseOrderBusiness.PreviewPurchaseOrder(previewOrderReuqest);
        }

        /// <summary>
        /// 创建在线采购单
        /// </summary>
        /// <param name="createOnlinePurchaseOrderRequest"></param>
        [HttpPost]
        public void NewFastCreateOrder([FromBody] CreateOnlinePurchaseOrderRequest createOnlinePurchaseOrderRequest)
        {
            purchaseOrderBusiness.NewFastCreateOrder(createOnlinePurchaseOrderRequest);
        }

        /// <summary>
        /// 查询审核采购单
        /// </summary>
        /// <param name="auditOrderRequest"></param>
        /// <returns></returns>
        [HttpPost]
        public IList<AuditPurchaseOrderResponse> GetAuditPurchaseOrderList([FromBody] AuditOrderRequest auditOrderRequest)
        {
            return purchaseOrderBusiness.GetAuditPurchaseOrderList(auditOrderRequest);
        }

        /// <summary>
        /// 1688回调
        /// </summary>
        /// <param name="message"></param>
        /// <param name="_aop_signature"></param>
        [HttpPost]
        [AllowAnonymous]
        public void CallbackFrom1688([FromForm] string message, [FromForm] string _aop_signature)
        {
            purchaseOrderBusiness.CallbackFrom1688(message);
        }

        /// <summary>
        /// 拳探发货回调
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        [AllowAnonymous]
        public void QuanTanSendGoodsCallback([FromBody] QuanTanSendGoodsNotifyRequest request)
        {
            purchaseOrderBusiness.QuanTan_SendGoodsCallback(request);
        }
    }
}