using System;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Controls;
using PDF_Master.CustomControl;
using PDF_Master.Helper;
using PDF_Master.Properties;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Regions;
using Prism.Services.Dialogs;

namespace PDF_Master.ViewModels.Dialog.ServiceDialog
{
    public class UserDialogViewModel : BindableBase, IDialogAware
    {
        private string uuid = ServiceHelper.GetDeviceSerialNumber();
        public IRegionManager Region;
        public string Title => "";

        public event Action<IDialogResult> RequestClose;

        public void Close()
        {
            RequestClose?.Invoke(new Prism.Services.Dialogs.DialogResult(ButtonResult.Cancel));
        }

        public bool CanCloseDialog()
        {
            return true;
        }

        public void OnDialogClosed()
        {

        }

        public void OnDialogOpened(IDialogParameters parameters)
        {
            if (ServiceHelper. IsConnectInternet()==false)
            {
                RegionMan("NOInternetRegion");
            }

        }


        #region 文案

        private string _Text_useracc = "";

        public string Text_useracc
        {
            get { return _Text_useracc; }
            set
            {
                SetProperty(ref _Text_useracc, value);
            }
        }


        private string _Text_admail = "";

        public string Text_admail
        {
            get { return _Text_admail; }
            set
            {
                SetProperty(ref _Text_admail, value);
            }
        }

        private string _Text_logout = "";

        public string Text_logout
        {
            get { return _Text_logout; }
            set
            {
                SetProperty(ref _Text_logout, value);
            }
        }

        private string _Text_no = "";

        public string Text_no
        {
            get { return _Text_no; }
            set
            {
                SetProperty(ref _Text_no, value);
            }
        }

        private string _Text_yes = "";

        public string Text_yes
        {
            get { return _Text_yes; }
            set
            {
                SetProperty(ref _Text_yes, value);
            }
        }

        private string _Text_useroutmsg = "";

        public string Text_useroutmsg
        {
            get { return _Text_useroutmsg; }
            set
            {
                SetProperty(ref _Text_useroutmsg, value);
            }
        }

        private string _Text_userouttol = "";

        public string Text_userouttol
        {
            get { return _Text_userouttol; }
            set
            {
                SetProperty(ref _Text_userouttol, value);
            }
        }

        private void InitString()
        {

            Text_useracc = App.ServiceLoader.GetString("Text_useracc");
            Text_admail = App.ServiceLoader.GetString("Text_admail");
            Text_logout = App.ServiceLoader.GetString("Text_logout");

            Text_userouttol = App.ServiceLoader.GetString("Text_userouttol");
            Text_useroutmsg = App.ServiceLoader.GetString("Text_useroutmsg");
            Text_yes = App.ServiceLoader.GetString("Text_yes");
            Text_no = App.ServiceLoader.GetString("Text_no");

        }


        #endregion
        private string _Useremailchar = Settings.Default.UserDate.Email.Substring(0, 1);

        public string Useremailchar
        {
            get { return _Useremailchar; }
            set
            {
                SetProperty(ref _Useremailchar, value);
            }
        }


        private string _UserEmail = Settings.Default.UserDate.Email;
        public string UserEmail
        {
            get { return _UserEmail; }
            set { _UserEmail = value; }
        }


        private string _UserRegionName;
        public string UserRegionName
        {
            get { return _UserRegionName; }
            set { _UserRegionName = value; }
        }




        public DelegateCommand UserOutCommand { get; set; }
        public DelegateCommand LogOutCommand { get; set; }

        UserDialogViewModel(IRegionManager regionManager, IDialogService dialogService)
        {
            this.Region = regionManager;
            InitString();
            UserRegionName = Guid.NewGuid().ToString();
            UserOutCommand = new DelegateCommand(UserOut);
            LogOutCommand = new DelegateCommand(LogOut);

            UserEmail = Settings.Default.UserDate.Email;


  

        }


        public void UserOut()
        {
            AlertsMessage alertsMessage = new AlertsMessage();
            alertsMessage.ShowDialog(Text_userouttol, Text_useroutmsg, App.ServiceLoader.GetString("Text_yes"), App.ServiceLoader.GetString("Text_no"), IconType.Tip);
            //调整按钮显示位置,cancel按钮表示确认退出
            //目的是尽量引导用户不注销
            if (alertsMessage.result == ContentResult.MiddleCancel)
            {
                RegionMan("UserOutCodeRegion");
            }
        }

        public void LogOut()
        {
            ServiceHelper.Logout(uuid);
            Settings.Default.AppProperties.LoginToken = "";
            Settings.Default.Save();
            App.mainWindowViewModel.UserVis = Visibility.Collapsed;
            App.mainWindowViewModel.RegisterVis = Visibility.Collapsed;
            App.mainWindowViewModel.LoginVis = Visibility.Visible;
            Close();
        }

        public void RegionMan(string name)
        {
            NavigationParameters param = new NavigationParameters();
            param.Add("UserDialogViewModel", this);
            Region.RequestNavigate(UserRegionName, name, e => {
                var r = e.Result;
            }, param);
        }

    }
}