using BBWY.Client.Models;
using BBWY.Common.Http;
using BBWY.Common.Models;
using System;
using System.Net.Http;

namespace BBWY.Client.APIServices
{
    public class ServiceOrderService : BaseApiService, IDenpendency
    {
        public ServiceOrderService(RestApiService restApiService, GlobalContext globalContext) : base(restApiService, globalContext)
        {
        }

        public ApiResponse<ServiceOrderResponse> GetList(string orderId,
                                                         string sku,
                                                         string spu,
                                                         string serviceId,
                                                         string shopId,
                                                         ServiceOrderState? serviceOrderState,
                                                         ReturnDirection? returnDirection,
                                                         int pageIndex,
                                                         int pageSize,
                                                         DateTime? startDate,
                                                         DateTime? endDate)
        {
            return SendRequest<ServiceOrderResponse>(globalContext.BBYWApiHost, "Api/ServiceOrder/GetList", new
            {
                orderId,
                sku,
                spu,
                serviceId,
                shopId,
                serviceOrderState,
                returnDirection,
                pageIndex,
                pageSize,
                startDate,
                endDate
            }, null, HttpMethod.Post);
        }

        public ApiResponse<object> EditServiceOrder(long servicePId,
                                                    string orderId,
                                                    ServiceResult? serviceResult,
                                                    decimal? sdRefundFreight,
                                                    ReturnDirection? returnDirection,
                                                    string renewalOrderId,
                                                    decimal? reissueAfterSaleAmount,
                                                    string returnCheckRemark,
                                                    StorageType? renewalType,
                                                    string renewalPurchaseOrderId,
                                                    Platform? renewalPurchasePlatform,
                                                    decimal? reissueFreight,
                                                    decimal? reissueProductAmount)
        {
            return SendRequest<object>(globalContext.BBYWApiHost, "Api/ServiceOrder/EditServiceOrder", new
            {
                servicePId,
                orderId,
                serviceResult,
                sdRefundFreight,
                returnDirection,
                renewalOrderId,
                reissueAfterSaleAmount,
                returnCheckRemark,
                renewalType,
                renewalPurchaseOrderId,
                renewalPurchasePlatform,
                reissueFreight,
                reissueProductAmount
            }, null, HttpMethod.Post);
        }
    }
}