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.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace DemoExam.windows
{
    /// <summary>
    /// Логика взаимодействия для WindowEditAgent.xaml
    /// </summary>
    public partial class WindowEditAgent : Window
    {
        ViewModel.ViewModel VM;
        int saveMode { get; set; } = 1;// 1 - сохранение записей на редактирование, 2 - сохранение новых записей 
        public WindowEditAgent(ViewModel.ViewModel VM)
        {
            InitializeComponent();
            DataContext = VM;
            this.VM = VM;
            CommandBindings.Add(VM.SelectedAgent.ChangeImageBinding);
        }

        private void Button_Save_Click(object sender, RoutedEventArgs e)
        {
            switch (saveMode)
            {
                case 1:
                    try
                    {
                        VM.DataBase.SaveChanges();
                        MessageBox.Show("Изменения успешно сохранены");
                        this.Close();
                    }
                    catch
                    {
                        MessageBox.Show("Произошла ошибка, проверьте корректность введенных данных");
                    }
                    break;
                case 2:
                    try
                    {
                        VM.DataBase.Agent.Add(VM.SelectedAgent);
                        VM.DataBase.SaveChanges();
                        MessageBox.Show("Пользователь успешно добавлен!");
                        this.Close();
                    }
                    catch
                    {
                        MessageBox.Show("Произошла ошибка, проверьте корректность введенных данных");
                    }
                    break;
            }
           
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            if (VM.SelectedAgent.AgentType == null)
            {
                saveMode = 2;
            }
            else
            {
                saveMode = 1;
            }
            
        }

        private void Button_Delete_Click(object sender, RoutedEventArgs e)
        {

            var res = MessageBox.Show("Вы точно хотите удалить запись?", "Подтверждение",MessageBoxButton.YesNo, MessageBoxImage.Question);
            if (res == MessageBoxResult.Yes)
            {
                VM.DataBase.Agent.Remove(VM.SelectedAgent);
                VM.DataBase.SaveChanges();
                this.Close();
            }
            
        }

        private void Button_Delete_Loaded(object sender, RoutedEventArgs e)
        {
            Button sen = (Button)sender;
            if (saveMode == 2)
            {
                sen.Visibility = Visibility.Collapsed;
            }
        }
    }
}
