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="syncOrderByDateRequest"></param>
        [HttpPost]
        public void SyncOrderByDate([FromBody] SyncOrderByDateRequest syncOrderByDateRequest)
        {
            orderSyncBusiness.SyncOrderByDate(syncOrderByDateRequest);
        }

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