using BBWYB.Server.Business;
using BBWYB.Server.Model.Dto;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;

namespace BBWYB.Server.API.Controllers
{
    [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
    public class PurchaseSchemeController : BaseApiController
    {
        private PurchaseSchemeBusiness purchaseSchemeBusiness;

        public PurchaseSchemeController(PurchaseSchemeBusiness purchaseSchemeBusiness, IHttpContextAccessor httpContextAccessor) : base(httpContextAccessor)
        {
            this.purchaseSchemeBusiness = purchaseSchemeBusiness;
        }

        /// <summary>
        /// 添加/编辑采购方案
        /// </summary>
        /// <param name="batchCURDSchemeRequest"></param>
        [HttpPost]
        public void EditPurchaseScheme([FromBody] BatchCURDSchemeRequest batchCURDSchemeRequest)
        {
            purchaseSchemeBusiness.EditPurchaseScheme(batchCURDSchemeRequest);
        }

        /// <summary>
        /// 添加/编辑采购方案(web)
        /// </summary>
        /// <param name="batchCURDSchemeRequest"></param>
        [HttpPost]
        public void EditPurchaseSchemeV2([FromBody] BatchCURDSchemeRequest batchCURDSchemeRequest)
        {
            purchaseSchemeBusiness.EditPurchaseSchemeV2(batchCURDSchemeRequest);
        }

        /// <summary>
        /// 获取采购方案列表
        /// </summary>
        /// <param name="querySchemeRequest"></param>
        /// <returns></returns>
        [HttpPost]
        public IList<PurchaseSchemeResponse> GetPurchaseSchemeList([FromBody] QuerySchemeRequest querySchemeRequest)
        {
            querySchemeRequest.IncludePurchaserStatisticsInfo = 1;
            return purchaseSchemeBusiness.GetPurchaseSchemeList(querySchemeRequest);
        }

        /// <summary>
        /// 获取采购分组和采购方案
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public IList<PurchaseSchemeGroupResponse> GetPurchaseSchemeAndGroupList(QuerySchemeAndGroupRequest request)
        {
            return purchaseSchemeBusiness.GetPurchaseSchemeAndGroupList(request);
        }

        /// <summary>
        /// 获取Sku采购方案数量
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public IList<PurchaseSchemeCountResponse> GetPurchaseSchemeCountList([FromBody] QuerySchemeCountRequest request)
        {
            return purchaseSchemeBusiness.GetPurchaseSchemeCountList(request);
        }


        ///// <summary>
        ///// 删除采购商
        ///// </summary>
        ///// <param name="deletePurchaseSchemeRequest"></param>
        //[HttpDelete]
        //public void DeletePurchaser([FromBody] DeletePurchaseSchemeRequest deletePurchaseSchemeRequest)
        //{
        //    purchaseSchemeBusiness.DeletePurchaser(deletePurchaseSchemeRequest);
        //}

        /// <summary>
        /// 删除采购方案
        /// </summary>
        /// <param name="schemeId"></param>
        [HttpDelete("{schemeId}")]
        public void DeletePurchaseScheme([FromRoute] long schemeId)
        {
            purchaseSchemeBusiness.DeletePurchaseScheme(schemeId);
        }

        ///// <summary>
        ///// 查询共有采购商
        ///// </summary>
        ///// <param name="querySchemeRequest"></param>
        ///// <returns></returns>
        //[HttpPost]
        //public IList<Purchaser> GetSharePurchaser([FromBody] QuerySchemeRequest querySchemeRequest)
        //{
        //    return purchaseSchemeBusiness.GetSharePurchaser(querySchemeRequest);
        //}

        /// <summary>
        /// 查询采购方案中采购Sku的基本信息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public PurchaseSkuBasicInfoResponse GetPurchaseSkuBasicInfo([FromBody] PurchaseSkuBasicInfoRequest request)
        {
            return purchaseSchemeBusiness.GetPurchaseSkuBasicInfo(request);
        }

        /// <summary>
        /// 批量查询采购方案中采购Sku的基本信息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public IList<PurchaseSkuBasicInfoResponse> BatchGetPurchaseSkuBasicInfo([FromBody] BatchPurchaseSkuBasicInfoRequest request)
        {
            return purchaseSchemeBusiness.BatchGetPurchaseSkuBasicInfo(request);
        }

        /// <summary>
        /// 更新采购方案报价
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public IList<PurchaseSchemeResponse> RefreshPurchaseScheme([FromBody] RefreshSchemeRequest request)
        {
            return purchaseSchemeBusiness.RefreshPurchaseScheme(request);
        }

        ///// <summary>
        ///// 修改采购配件比例
        ///// </summary>
        ///// <param name="request"></param>
        //[HttpPost]
        //public void EditPurchaseRatio([FromBody]EditPurchaseRatioAndActualPriceRequest request)
        //{
        //    purchaseSchemeBusiness.EditPurchaseRatio(request);
        //}

        /// <summary>
        /// 根据慧眼标的Id获取慧眼采购方案(含全部配件基本信息)
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public IList<HYPurchaseSchemeResponse> GetPurchaseSchemeByHYBDId([FromBody] QueryHYSchemeRequest request)
        {
            return purchaseSchemeBusiness.GetPurchaseSchemeByHYBDId(request);
        }

        /// <summary>
        /// 修改采购配件比例
        /// </summary>
        /// <param name="request">最新的采购方案成本</param>
        /// <returns>最新的采购方案成本</returns>
        [HttpPost]
        public decimal EditPurchaseRatio([FromBody] EditPurchaseRatioRequest request)
        {
            return purchaseSchemeBusiness.EditPurchaseRatio(request);
        }

        /// <summary>
        /// 删除采购Sku
        /// </summary>
        /// <param name="request"></param>
        /// <returns>最新的采购方案成本</returns>
        [HttpDelete]
        public decimal DeletePurchaseSku([FromBody] DeletePurchaseSkuRequest request)
        {
            return purchaseSchemeBusiness.DeletePurchaseSku(request);
        }

        /// <summary>
        /// 设置首选采购方案,同时互斥相同Sku的其他采购方案
        /// </summary>
        /// <param name="schemeId"></param>
        [HttpPost("{schemeId}")]
        public void SetFirstPurchaseScheme([FromRoute] long schemeId)
        {
            purchaseSchemeBusiness.SetFirstPurchaseScheme(schemeId);
        }

        /// <summary>
        /// 查询同spu同采购商的其他配件接口,排除失效配件
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public IList<PurchaseSchemeProductSkuResponse> QuerySameSpuAndSamePurchaserOtherPurchaseSkuList([FromBody] QuerySameSpuAndSamePurchaserOtherPurchaseSkuRequest request)
        {
            return purchaseSchemeBusiness.QuerySameSpuAndSamePurchaserOtherPurchaseSkuList(request);
        }

        /// <summary>
        /// 批量修改采购配件实际单价
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void BatchEditPurchaseSkuActualPrice([FromBody] BatchEditPurchaseSkuActualPriceRequest request)
        {
            purchaseSchemeBusiness.BatchEditPurchaseSkuActualPrice(request);
        }
    }
}