using PDF_Office.Helper;
using PDF_Office.Model;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Regions;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;

namespace PDF_Office.ViewModels.Dialog.ServiceDialog
{
    public class PasswordUpdataRegionViewModel : BindableBase, INavigationAware
    {
        private static Guid myuuid = Guid.NewGuid();
        private string uuid = myuuid.ToString();
        private LoginDialogViewModel LoginDialogViewModel;
        public IDialogService dialogs;

        public bool IsNavigationTarget(NavigationContext navigationContext)
        {
            return true;
        }

        public void OnNavigatedFrom(NavigationContext navigationContext)
        {


        }

        public void OnNavigatedTo(NavigationContext navigationContext)
        {
            navigationContext.Parameters.TryGetValue<LoginDialogViewModel>("LoginDialogViewModel", out LoginDialogViewModel);
            LoginEmail = LoginDialogViewModel.LoginEmail;
        }






        private bool enableNextStep = false;
        public bool EnableNextStep
        {
            get { return enableNextStep; }
            set { SetProperty(ref enableNextStep, value); }
        }


        private string _LoginEmail = "";
        public string LoginEmail
        {
            get { return _LoginEmail; }
            set
            {
                SetProperty(ref _LoginEmail, value);
                CheckEnableNextStepEncrypt();
            }
        }

        private string _LoginPasswordlook;
        public string LoginPasswordlook
        {
            get { return _LoginPasswordlook; }
            set { SetProperty(ref _LoginPasswordlook, value); }
        }




        private string _LoginPassword = "";
        public string LoginPassword
        {
            get { return _LoginPassword; }
            set
            {
                SetProperty(ref _LoginPassword, value);
                CheckEnableNextStepEncrypt();
            }

        }

        private string _LoginPasswordMsg = "Enter the new password again";
        public string LoginPasswordMsg
        {
            get { return _LoginPasswordMsg; }
            set
            {
                SetProperty(ref _LoginPasswordMsg, value);
            }
        }


        private Visibility _LoginPasswordVisibility = Visibility.Visible;
        public Visibility LoginPasswordVisibility
        {
            get { return _LoginPasswordVisibility; }
            set
            {
                if (value == Visibility.Visible)
                {
                    LoginTextVisibility = Visibility.Collapsed;
                }
                else
                {
                    LoginTextVisibility = Visibility.Visible;
                }
                SetProperty(ref _LoginPasswordVisibility, value);
            }
        }

        private Visibility _LoginTextVisibility = Visibility.Collapsed;
        public Visibility LoginTextVisibility
        {
            get { return _LoginTextVisibility; }
            set { SetProperty(ref _LoginTextVisibility, value); }
        }




        private string _LoginPassword2 = "";
        public string LoginPassword2
        {
            get { return _LoginPassword2; }
            set
            {
                SetProperty(ref _LoginPassword2, value);
                CheckEnableNextStepEncrypt();
            }

        }

        private string _LoginPasswordMsg2 = "Enter your password";
        public string LoginPasswordMsg2
        {
            get { return _LoginPasswordMsg2; }
            set
            {
                SetProperty(ref _LoginPasswordMsg2, value);
            }
        }


        private Visibility _LoginPasswordVisibility2 = Visibility.Visible;
        public Visibility LoginPasswordVisibility2
        {
            get { return _LoginPasswordVisibility2; }
            set
            {
                if (value == Visibility.Visible)
                {
                    LoginTextVisibility2 = Visibility.Collapsed;
                }
                else
                {
                    LoginTextVisibility2 = Visibility.Visible;
                }
                SetProperty(ref _LoginPasswordVisibility2, value);
            }
        }

        private Visibility _LoginTextVisibility2 = Visibility.Collapsed;
        public Visibility LoginTextVisibility2
        {
            get { return _LoginTextVisibility2; }
            set { SetProperty(ref _LoginTextVisibility2, value); }
        }





        private string _PasswordUpdatamsglook = "";
        public string PasswordUpdatamsglook
        {
            get { return _PasswordUpdatamsglook; }
            set
            {
                SetProperty(ref _PasswordUpdatamsglook, value);
            }
        }



        private Visibility _PasswordUpdatalookVis = Visibility.Collapsed;
        public Visibility PasswordUpdatalookVis
        {
            get { return _PasswordUpdatalookVis; }
            set { SetProperty(ref _PasswordUpdatalookVis, value); }
        }


        public DelegateCommand<object> DisplayPasswordCommand { get; set; }

        public DelegateCommand ChangeEmailCommand { get; set; }
        public DelegateCommand GoCodeUpdataCommand { get; set; }
        public DelegateCommand PasswordUpdataCommand { get; set; }
        public DelegateCommand LinkLicenseCommand { get; set; }
        PasswordUpdataRegionViewModel(IRegionManager regionManager, IDialogService dialogService)
        {
            dialogs = dialogService;

            DisplayPasswordCommand = new DelegateCommand<object>(DisplayPassword);
            DisplayPasswordCommand = new DelegateCommand<object>(DisplayPassword2);
            PasswordUpdataCommand = new DelegateCommand(PasswordUpdata);
        }



        private void PasswordUpdata()
        {
            
           
            if (ServiceHelper.Rebirth(LoginEmail, LoginPassword2, LoginPassword, LoginDialogViewModel.PasswordCode) == "success")
            {
                LoginDialogViewModel.RegionMan("LoginRegion");
            }
            else
            {
                PasswordUpdatamsglook = ServiceHelper.Rebirth(LoginEmail, LoginPassword2, LoginPassword, LoginDialogViewModel.PasswordCode);
                PasswordUpdatalookVis = Visibility.Visible;
            }
        }


        private void CheckEnableNextStepEncrypt()
        {
            EnableNextStep = true;

            if (string.IsNullOrEmpty(LoginPassword)|| string.IsNullOrEmpty(LoginPassword2))
            {
                EnableNextStep = false;
            }
        }

        public void DisplayPassword(object e)
        {
            var chk = e as CheckBox;
            if (chk != null)
            {

                if (chk.IsChecked == true)
                {
                    LoginPasswordVisibility = Visibility.Collapsed;
                }
                else
                {
                    LoginPasswordVisibility = Visibility.Visible;
                }

            }
        }
        public void DisplayPassword2(object e)
        {
            var chk = e as CheckBox;
            if (chk != null)
            {

                if (chk.IsChecked == true)
                {
                    LoginPasswordVisibility2 = Visibility.Collapsed;
                }
                else
                {
                    LoginPasswordVisibility2 = Visibility.Visible;
                }

            }
        }
    }
}