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 OrderSyncController : BaseApiController
    {
        private OrderSyncBusiness orderSyncBusiness;
        public OrderSyncController(IHttpContextAccessor httpContextAccessor, OrderSyncBusiness orderSyncBusiness) : base(httpContextAccessor)
        {
            this.orderSyncBusiness = orderSyncBusiness;
        }

        /// <summary>
        /// 同步所有店铺的订单
        /// </summary>
        [HttpPost]
        public void SyncAllShopOrder()
        {
            orderSyncBusiness.SyncAllShopOrder();
        }

        /// <summary>
        /// 订单同步
        /// </summary>
        /// <param name="shopId"></param>
        /// <param name="orderId"></param>
        [HttpPost("{shopId}/{orderId}")]
        public void SyncOrder([FromRoute] long shopId, [FromRoute] string orderId)
        {
            orderSyncBusiness.ManualSyncOrder(shopId, orderId, null, null);
        }


        /// <summary>
        /// 订单同步
        /// </summary>
        /// <param name="shopId"></param>
        /// <param name="orderIds"></param>
        [HttpPost("{shopId}")]
        public void SyncOrders([FromRoute] long shopId, [FromBody] IList<string> orderIds)
        {
            orderSyncBusiness.ManualSyncOrder(shopId, orderIds, null, null);
        }

        ///// <summary>
        ///// 订单批量删除
        ///// </summary>
        ///// <param name="shopId"></param>
        ///// <param name="orderIds"></param>
        //[HttpPost("{shopId}")]
        //public void OrderDelete([FromRoute]long shopId, [FromBody]IList<string> orderIds)
        //{
        //    orderSyncBusiness.OrderDelete(shopId, orderIds);
        //}

        /// <summary>
        /// 根据日期同步
        /// </summary>
        /// <param name="syncOrderByDateRequest"></param>
        [HttpPost]
        public void SyncOrderByDate([FromBody] SyncOrderByDateRequest syncOrderByDateRequest)
        {
            orderSyncBusiness.SyncOrderByDate(syncOrderByDateRequest);
        }

        [HttpPost]
        public void SyncAllShopOrderByDate()
        {
            orderSyncBusiness.SyncAllShopOrderByDate();
        }

        /// <summary>
        /// 接收订单推送
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void OrderPublish([FromBody] OrderPublishRequest request)
        {
            orderSyncBusiness.OrderPublish(request);
        }

        /// <summary>
        /// 检查全店暂停订单
        /// </summary>
        [HttpPost]
        public void CheckJDPauseOrder()
        {
            orderSyncBusiness.CheckJDPauseOrder(null);
        }

        /// <summary>
        /// 检查全店暂停订单
        /// </summary>
        [HttpPost("{shopId}")]
        public void CheckJDPauseOrder(long shopId)
        {
            orderSyncBusiness.CheckJDPauseOrder(shopId);
        }

        /// <summary>
        /// 删除过期的待付款订单
        /// </summary>
        [HttpPost]
        public void DeleteTimeOutWaitPayOrder()
        {
            orderSyncBusiness.DeleteTimeOutWaitPayOrder();
        }

        /// <summary>
        /// 修复订单Sku缺少的spu
        /// </summary>
        [HttpPost]
        public void RepairOrderSkuProductId()
        {
            orderSyncBusiness.RepairOrderSkuProductId();
        }
    }
}