using BBWYB.Client.APIServices;
using BBWYB.Client.Models;
using BBWYB.Client.ViewModels;
using BBWYB.Client.Views.PackPurchaseTaska;
using BBWYB.Client.Views.WebB;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Messaging;
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Windows;

namespace BBWYB.Client
{

    [ClassInterface(ClassInterfaceType.AutoDual)]
    [ComVisible(true)]
    public class GlobalContext : ObservableObject
    {
        public GlobalContext()
        {
            BBWYBApiVersion = "10023";
        }

        private User user;

        public User User { get => user; set { SetProperty(ref user, value); } }

        public string UserToken { get; set; }

        public IList<LogisticsResponse> LogisticsResponseList { get; set; }

        /// <summary>
        /// JD客户端
        /// </summary>
        //public IJdClient JdClient { get; set; }

        #region APIHost
        public string BBWYApiHost { get; set; }

        public string MDSApiHost { get; set; }
        public string BBWYCApiHost { get; set; }
        public string QKApiHost { get; set; }

        public string BBWYBApiVersion { get; set; }
        #endregion

        #region Web
        public string GetUserString()
        {
            return JsonConvert.SerializeObject(User);
        }

        public string GetBBWYBApiVersion()
        {
            return BBWYBApiVersion;
        }

        /// <summary>
        /// 对web版提供的修改打包任务方法
        /// </summary>
        /// <param name="belongSkuId">订单sku归属的来源sku(JD)</param>
        /// <param name="orderId">订单Id</param>
        /// <param name="skuLogo">sku图片</param>
        /// <param name="skuTitle">sku标题</param>
        /// <param name="originShopName">订单来源店铺名称</param>
        public void OpenUpdatePurchaseTask(string belongSkuId, string orderId, string skuLogo, string skuTitle, string originShopName)
        {
            var app = App.Current as App;
            var sp = app.ServiceProvider;

            PackPurchaseTaskService packPurchaseTaskService = null;
            using (var s = sp.CreateScope())
            {
                packPurchaseTaskService = s.ServiceProvider.GetRequiredService<PackPurchaseTaskService>();
            }

            var orderSku = new OrderSku()
            {
                OrderId = orderId,
                BelongSkuId = belongSkuId,
                Title = skuTitle,
                Logo = skuLogo,

            };

            var res = packPurchaseTaskService.GetOrderTask(orderSku.BelongSkuId, orderSku.OrderId);
            if (res == null || !res.Success)
            {
                MessageBox.Show("网络异常!查不到任务");
                return;
            }
            if (res.Data == null)
            {
                MessageBox.Show("打包任务,不存在或已被删除,请重新发起任务!");
                return;
            }
            UpdatePurchaseTaskWindow packTask = new(res.Data, originShopName, orderSku);
            if (!packTask.IsClosed)
                packTask.Show();
            WeakReferenceMessenger.Default.Send(new Message_WebB_RefreshPack(null));
            //
        }
        #endregion
    }
}