using BBWYB.Server.Business;
using BBWYB.Server.Model.Db;
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>
        /// 查询采购方案列表
        /// </summary>
        /// <param name="querySchemeRequest"></param>
        /// <returns></returns>
        [HttpPost]
        public IList<PurchaseSchemeResponse> GetPurchaseSchemeList([FromBody] QuerySchemeRequest querySchemeRequest)
        {
            return purchaseSchemeBusiness.GetPurchaseSchemeList(querySchemeRequest);
        }

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

    }
}