using Microsoft.Extensions.DependencyInjection;
using System;

namespace BBWY.Client.ViewModels
{
    public class ViewModelLocator
    {
        private IServiceProvider sp;

        public bool IsCreateWareManager { get; private set; }

        public bool IsCreateWareStock { get; private set; }

        public bool IsCreateOrderList { get; private set; }



        public ViewModelLocator()
        {
            sp = (App.Current as App).ServiceProvider;
        }

        public MainViewModel Main
        {
            get
            {
                using (var s = sp.CreateScope())
                {
                    return s.ServiceProvider.GetRequiredService<MainViewModel>();
                }
            }
        }

        public WareManagerViewModel WareManager
        {
            get
            {
                IsCreateWareManager = true;
                using (var s = sp.CreateScope())
                {
                    return s.ServiceProvider.GetRequiredService<WareManagerViewModel>();
                }
            }
        }

        public WareStockViewModel WareStock
        {
            get
            {
                IsCreateWareStock = true;
                using (var s = sp.CreateScope())
                {
                    return s.ServiceProvider.GetRequiredService<WareStockViewModel>();
                }
            }
        }

        public BindingPurchaseProductViewModel BindingPurchaseProduct
        {
            get
            {
                using (var s = sp.CreateScope())
                {
                    return s.ServiceProvider.GetRequiredService<BindingPurchaseProductViewModel>();
                }
            }
        }

        public OrderListViewModel OrderList
        {
            get
            {
                IsCreateOrderList = true;
                using (var s = sp.CreateScope())
                {
                    return s.ServiceProvider.GetRequiredService<OrderListViewModel>();
                }
            }
        }

        public ChoosePurchaseSchemeViewModel ChoosePurchaseScheme
        {
            get
            {
                using (var s = sp.CreateScope())
                {
                    return s.ServiceProvider.GetRequiredService<ChoosePurchaseSchemeViewModel>();
                }
            }
        }

        public _1688PreviewPurchaseViewModel _1688PreviewPurchase
        {
            get
            {
                using (var s = sp.CreateScope())
                {
                    return s.ServiceProvider.GetRequiredService<_1688PreviewPurchaseViewModel>();
                }
            }
        }

        public ShopSettingViewModel ShopSetting
        {
            get
            {
                using var s = sp.CreateScope();
                return s.ServiceProvider.GetRequiredService<ShopSettingViewModel>();
            }
        }

        public ProcurementAuditViewModel ProcurementAudit
        {
            get
            {
                using var s = sp.CreateScope();
                return s.ServiceProvider.GetRequiredService<ProcurementAuditViewModel>();
            }
        }
    }
}