using ReAct_PME.WPF_FrameWork;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Interop;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using ToolsServices;
using static ToolsServices.PromptService;
using ReAct_PME.ViewModels;

namespace ReAct_PME
{
    /// <summary>
    /// Logique d'interaction pour ParametresPrompts.xaml
    /// </summary>
    public partial class ParametresPrompts : Window
    {
        #region Variables
        private ParametresPrompts_VM _VM = new ParametresPrompts_VM();
        #endregion

        #region Constructeur
        public ParametresPrompts()
        {
            InitializeComponent();
            this.DataContext = _VM;
        }
        #endregion

        #region Méthodes privées
        private void OnSelectClick(object sender, RoutedEventArgs e)
        {
            ShowMessage("", true);
            _VM.SelectPrompt();
        }

        private void OnFermerClick(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void OnSaveClick(object sender, RoutedEventArgs e)
        {
            var (b, m) = _VM.SavePrompt();
            if (!b)
            {
                if (m == PromptService.PromptNoQuery)
                {
                    var rep = MessageBox.Show("Le prompt ne contient pas l'expression @QUERY (en majuscule).\nEtes-vous sûr de vouloir enregistrer ?", "Erreur", MessageBoxButton.YesNo, MessageBoxImage.Exclamation);
                    if (rep == MessageBoxResult.Yes)
                    {
                        var (b2, m2) = _VM.SavePrompt(true);
                        if(b2)
                        {
                            ShowMessage("Prompt sauvegardé avec succès", true);
                        }
                        else
                        {
                            ShowMessage($"Erreur lors de la sauvegarde du prompt : {m}", false);
                        }
                    }
                    else
                    {
                        ShowMessage("Sauvegarde annulée", true);
                    }
                }
                else
                {
                    ShowMessage($"Erreur lors de la sauvegarde du prompt : {m}", false);
                }
            }
            else
            {
                ShowMessage("Prompt sauvegardé avec succès", true);
            }
        }

        private void ShowMessage(string msg, bool isSuccess)
        {
            StatusText.Text = msg;
            StatusText.Foreground = isSuccess ? Brushes.Green : Brushes.Red;
        }
        #endregion

    }


}
