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 SkuOptimizationController : BaseApiController
    {
        private OptimizationBusiness optimizationBusiness;

        public SkuOptimizationController(IHttpContextAccessor httpContextAccessor, OptimizationBusiness optimizationBusiness) : base(httpContextAccessor)
        {
            this.optimizationBusiness = optimizationBusiness;
        }

        /// <summary>
        /// 良库预警通知
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void LKInventoryAlertNotification([FromBody] BatchLKInventoryAlertRequest request)
        {
            optimizationBusiness.LKInventoryAlertNotification(request);
        }

        /// <summary>
        /// 完成待优化任务(当所有议价组的子任务优化完成, 所属待优化任务才会完成)
        /// </summary>
        /// <param name="taskId">待优化任务Id</param>
        [HttpPost("{taskId}")]
        public void CompleteOptimization([FromRoute] long taskId)
        {
            var userId = GetUserId();
            optimizationBusiness.CompleteOptimization(taskId, userId);
        }

        /// <summary>
        /// 更新报价
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void BatchUpdateCompetitiveTenderQuotation([FromBody] BatchUpdateCompetitiveTenderQuotationRequest request)
        {
            optimizationBusiness.BatchUpdateCompetitiveTenderQuotation(request, GetUserId());
        }

        /// <summary>
        /// 查询待议价任务列表
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public ListResponse<SpuOptimizationTaskResponse> GetNoCompletionSkuOptimizationTask([FromBody] QueryNoCompletionOptimizationTaskRequest request)
        {
            var userId = GetUserId();
            return optimizationBusiness.GetNoCompletionSkuOptimizationTask(request, userId);
        }

        /// <summary>
        /// 删除采购方案分组(包括采购方案和竞标关系)
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void DeleteSchemeGroup(DeleteSchemeGroupFromSpuOptimizationTaskRequest request)
        {
            var userId = GetUserId();
            optimizationBusiness.DeleteSchemeGroup(request, userId);
        }
    }
}