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

namespace BBWY.Server.API.Controllers
{

    public class EvaluationAssistantController : BaseApiController
    {
        private EvaluationAssistantBusiness evaluationAssistantBusiness;

        public EvaluationAssistantController(IHttpContextAccessor httpContextAccessor, EvaluationAssistantBusiness evaluationAssistantBusiness) : base(httpContextAccessor)
        {
            this.evaluationAssistantBusiness = evaluationAssistantBusiness;
        }

        /// <summary>
        /// 新增/编辑赠品模板
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void AddOrEditGiftTemplate([FromBody] AddOrEditGiftTemplateRequest request)
        {
            evaluationAssistantBusiness.AddOrEditGiftTemplate(request);
        }

        /// <summary>
        /// 获取赠品模板列表
        /// </summary>
        /// <param name="shopId"></param>
        /// <returns></returns>
        [HttpGet("{shopId}")]
        public IList<GiftTemplateResponse> GetGiftTemplateList([FromRoute] long shopId)
        {
            return evaluationAssistantBusiness.GetGiftTemplateList(shopId);
        }

        /// <summary>
        /// 删除赠品模板
        /// </summary>
        /// <param name="giftTemplateId"></param>
        [HttpDelete("{giftTemplateId}")]
        public void DeleteGiftTemplate([FromRoute] long giftTemplateId)
        {
            evaluationAssistantBusiness.DeleteGiftTemplate(giftTemplateId);
        }

        /// <summary>
        /// 新增或修改活动任务
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void AddOrEditPromotionTask([FromBody] AddOrEditPromotionTaskRequest request)
        {
            evaluationAssistantBusiness.AddOrEditPromotionTask(request);
        }

        /// <summary>
        /// 获取任务列表
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public PromotionTaskResponse GetPromotionTaskList([FromBody] QueryPromotionTaskRequest request)
        {
            return evaluationAssistantBusiness.GetPromotionTaskList(request);
        }

        /// <summary>
        /// 获取前置任务列表
        /// </summary>
        /// <param name="shopId"></param>
        /// <returns></returns>
        [HttpGet("{shopId}")]
        public PromotionTaskResponse GetPrePromotionTaskList([FromRoute] long shopId)
        {
            return evaluationAssistantBusiness.GetPrePromotionTaskList(shopId);
        }

        /// <summary>
        /// 设置前置任务
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void EditPreTask([FromBody] EditPreTaskRequest request)
        {
            evaluationAssistantBusiness.EditPreTask(request);
        }

        /// <summary>
        /// 修改活动排序
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void EditPromotionTaskSort([FromBody] EditPromotionTaskSortRequest request)
        {
            evaluationAssistantBusiness.EditPromotionTaskSort(request);
        }

        /// <summary>
        /// 开始活动
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void StartPromotionTask([FromBody] StartPromotionTaskRequest request)
        {
            evaluationAssistantBusiness.StartPromotionTask(request);
        }

        /// <summary>
        /// 删除任务同时删除京东活动
        /// </summary>
        /// <param name="request"></param>
        [HttpDelete]
        public void DeletePromotionTaskAndJDTask([FromBody] DeletePromotionTaskRequest request)
        {
            evaluationAssistantBusiness.DeletePromotionTaskAndJDTask(request);
        }

        /// <summary>
        /// 删除任务同时删除京东活动中的奶妈SKU
        /// </summary>
        /// <param name="request"></param>
        [HttpDelete]
        public void DeletePromotionTaskAndMotherSku([FromBody] DeletePromotionTaskRequest request)
        {
            evaluationAssistantBusiness.DeletePromotionTaskAndMotherSku(request);
        }

        /// <summary>
        /// 停止任务
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void StopPromotionTask([FromBody] StopPromotionTaskRequest request)
        {
            evaluationAssistantBusiness.StopPromotionTask(request);
        }

        /// <summary>
        /// 修改评价助手店铺设置
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void EditPJZSSettings([FromBody] PJZSShopSettingRequest request)
        {
            evaluationAssistantBusiness.EditPJZSSettings(request);
        }

        /// <summary>
        /// 开始监控
        /// </summary>
        [HttpGet]
        public void StartMonitor()
        {
            evaluationAssistantBusiness.StartMonitor(null, null);
        }

        /// <summary>
        /// 开始监控(按店铺)
        /// </summary>
        /// <param name="shopId"></param>
        /// <param name="taskId"></param>
        [HttpGet]
        public void StartMonitorByShopId(long shopId, long? taskId)
        {
            evaluationAssistantBusiness.StartMonitor(shopId, taskId);
        }
    }
}