using ComPDFKitViewer.PdfViewer;
using PDF_Office.EventAggregators;
using PDF_Office.Model;
using Prism.Commands;
using Prism.Events;
using Prism.Mvvm;
using Prism.Regions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;

namespace PDF_Office.ViewModels.EditTools.Background
{
    public class BackgroundCreateBaseContentViewModel : BindableBase, INavigationAware
    {
        IEventAggregator eventAggregator;
        IRegionManager backgroundCreateRegion;

        private CPDFViewer PDFViewer;

        private string backgroundCreateRegionName;

        public string BackgroundCreateRegionName
        {
            get => backgroundCreateRegionName;
            set => SetProperty(ref backgroundCreateRegionName, value);
        }

        private string _currentCreateModName;
        public string CurrentCreateModName
        {
            get => _currentCreateModName;
            set=>_currentCreateModName= value;
        }


        private System.Windows.Visibility backgroundCreateVisible;
        public System.Windows.Visibility BackgroundCreateVisible
        {
            get => backgroundCreateVisible;
            set => SetProperty(ref backgroundCreateVisible, value);
        }

        public DelegateCommand<object> ChangeCreateModCommand { get; set; }
        public DelegateCommand EnterTemplateListCommand { get; set; }


        public BackgroundCreateBaseContentViewModel(IRegionManager regionManager,IEventAggregator eventAggregator)
        {
            this.eventAggregator = eventAggregator;
            this.backgroundCreateRegion = regionManager;
            BackgroundCreateRegionName = Guid.NewGuid().ToString();
            ChangeCreateModCommand = new DelegateCommand<object>(ChangeCreateMod);
            EnterTemplateListCommand = new DelegateCommand(EnterTemplateList);
            EnterSelectedCreateMod("BackgroundCreateColorContent");
        }

        public void EnterTemplateList()
        {
            this.eventAggregator.GetEvent<EnterTemplateListOrCreateEvent>().Publish(EnumTemplateListOrCreate.StatusTemplate);
        }

        public void EnterSelectedCreateMod(string currentCreateName)
        {
            NavigationParameters param = new NavigationParameters();
            param.Add(ParameterNames.PDFViewer, PDFViewer);
            backgroundCreateRegion.RequestNavigate(BackgroundCreateRegionName, currentCreateName, param);
            backgroundCreateVisible = System.Windows.Visibility.Visible;
        }

        public void ChangeCreateMod(object e)
        {
            var args = e as Button;
            if (args != null)
            {
                CurrentCreateModName = args.Name;
                EnterSelectedCreateMod(CurrentCreateModName);
                eventAggregator.GetEvent<SetCurrentCreateModEvent>().Publish(CurrentCreateModName);
            }
        }

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

        public void OnNavigatedFrom(NavigationContext navigationContext)
        {
        }

        public void OnNavigatedTo(NavigationContext navigationContext)
        {
            navigationContext.Parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out PDFViewer);

        }
    }
}