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

namespace BBWY.Server.API.Controllers
{
    public class BatchPurchaseController : BaseApiController
    {
        private BatchPurchaseBusiness batchPurchaseBusiness;

        public BatchPurchaseController(IHttpContextAccessor httpContextAccessor, BatchPurchaseBusiness batchPurchaseBusiness) : base(httpContextAccessor)
        {
            this.batchPurchaseBusiness = batchPurchaseBusiness;
        }

        /// <summary>
        /// 获取包含采购方案的sku列表
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public IList<ProductSkuWithSchemeResponse> GetProductSkuAndSchemeList([FromBody] SearchProductSkuAndSchemeRequest request)
        {
            return batchPurchaseBusiness.GetProductSkuAndSchemeList(request);
        }

        /// <summary>
        /// 预览订单价格
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public PreviewOrderResponse PreviewOrder([FromBody] BatchPurchasePreviewOrderRequest request)
        {
            return batchPurchaseBusiness.PreviewOrder(request);
        }

        /// <summary>
        /// 批量创建采购单
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public BatchCreareOrderResponse BatchCreateOrder([FromBody] BatchPurchaseCreateOrderRequest request)
        {
            return batchPurchaseBusiness.BatchCreateOrder(request);
        }

        /// <summary>
        /// 预览订单价格V2
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public PreviewOrderResponse PreviewOrderV2([FromBody] BatchPurchasePreviewOrderRequestV2 request)
        {
            return batchPurchaseBusiness.PreviewOrderV2(request);
        }

        /// <summary>
        /// 批量创建采购单V2
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public BatchCreareOrderResponse BatchCreateOrderV2(BatchPurchaseCreateOrderRequestV2 request)
        {
            return batchPurchaseBusiness.BatchCreateOrderV2(request);
        }

        /// <summary>
        /// 获取采购单列表
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public PurchaseOrderV2ListResponse GetPurchaseOrderList([FromBody] SearchPurchaseOrderV2Request request)
        {
            return batchPurchaseBusiness.GetPurchaseOrderList(request);
        }

        /// <summary>
        /// 支付订单
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public PayPurchaseOrderResponse PayPurchaseOrder([FromBody] PayPurchaseOrderRequest request)
        {
            return batchPurchaseBusiness.PayPurchaseOrder(request);
        }

        /// <summary>
        /// 取消订单
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public CancelPurchaseOrderResponse CancelPurchaseOrder([FromBody] CancelPurchaseOrderRequest request)
        {
            return batchPurchaseBusiness.CancelPurchaseOrder(request);
        }
  
        /// <summary>
        /// 修改采购单状态
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        [AllowAnonymous]
        public UpdatePackStateResponse UpdatePurchaseOrderState([FromBody] UpdatePurchaseOrderStateRequest request)
        {
            return batchPurchaseBusiness.UpdatePurchaseOrderState(request);
        }

        /// <summary>
        /// 修改打包状态
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public UpdatePackStateResponse UpdatePackState([FromBody] UpdatePackStateRequest request)
        {
            return batchPurchaseBusiness.UpdatePackState(request);
        }


    }
}