using SdbS.Model;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Net.Http.Headers;
using System.Runtime.Serialization.Json;
using System.Text;
using System.Text.RegularExpressions;
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.Navigation;
using System.Windows.Shapes;
using static SdbS.View_Manager.Pages.ManufacturedMachines;

namespace SdbS.View_Manager.Pages
{
    /// <summary>
    /// Логика взаимодействия для TypeMachines.xaml
    /// </summary>
    public partial class TypeMachines : Page
    {
        /* Класс со свойствами для передачи их данных в кастомный ListBox */
        public class DataType
        {
            public string Name { get; set; }

            // Создание временного списка для поиска 
            public static List<object> tempItems = new List<object>();
        }

        /* Объявление объекта для работы с моделью БД */
        Entities entities = new Entities();

        public TypeMachines()
        {
            InitializeComponent();

            // Передача reader`а в переменную для чтения данных из таблицы //
            SqlDataReader reader = Metods_TypeMachines.GetReader_DefaultListBox();

            // Формирование списка для ListBox
            while (reader.Read())
            {
                listBox_TypeMachines.Items.Add(
                new DataMachines()
                {
                    Name = reader["name"].ToString()
                });
            }
            reader.Close();
            CommonClass.GetConnection().Close();

            textBlock_AllCountRecords.Text = "(" + listBox_TypeMachines.Items.Count.ToString() + ")";
        }

        /* МЕТОД РЕДАКТИРОВАНИЯ СТРОКИ В ТАЛИЦЕ 'Типы станков' */
        private void button_EditTypeMachine_Click(object sender, RoutedEventArgs e)
        {
            if (textBox_NameType.Text != "")
            {
                var rezult = MessageBox.Show("Вы уверены?", "Изменение строки", MessageBoxButton.YesNo,
                                              MessageBoxImage.Question);

                if (rezult == MessageBoxResult.No)
                    return;

                else
                {
                    int selectindex = listBox_TypeMachines.SelectedIndex + 1;
                    string name = textBox_NameType.Text;

                    listBox_TypeMachines.ItemsSource = null;
                    listBox_TypeMachines.Items.Clear();

                    SqlDataReader readerRefund = Metods_TypeMachines.GetReader_DefaultListBox();

                    while (readerRefund.Read())
                    {
                        listBox_TypeMachines.Items.Add(
                        new DataType()
                        {
                            Name = readerRefund["name"].ToString()
                        });
                    }
                    readerRefund.Close();
                    CommonClass.GetConnection().Close();

                    textBlock_AllCountRecords.Text = "(" + listBox_TypeMachines.Items.Count.ToString() + ")";
                }
            }

            else MessageBox.Show("Необходимо заполнить поля данными! (нажмите по любой строке)",
                                 "Ой-ой, не торопись!", MessageBoxButton.OK, MessageBoxImage.Warning);
        }

        /* МЕТОД ДОБАВЛЕНИЯ СТРОКИ В ТАБЛИЦУ "Типы станков" */
        private void button_AddTypeMachine_Click(object sender, RoutedEventArgs e)
        {
            if (textBox_NameType.Text != "")
            {
                var rezult = MessageBox.Show("Вы уверены?", "Добавление новой строки", MessageBoxButton.YesNo,
                                          MessageBoxImage.Question);

                if (rezult == MessageBoxResult.No)
                    return;

                else
                {
                    int ID = listBox_TypeMachines.Items.Count + 1;
                    string name = textBox_NameType.Text;

                    Metods_TypeMachines.AddType(ID, name);

                    listBox_TypeMachines.ItemsSource = null;
                    listBox_TypeMachines.Items.Clear();

                    SqlDataReader readerRefund = Metods_TypeMachines.GetReader_DefaultListBox();

                    while (readerRefund.Read())
                    {
                        listBox_TypeMachines.Items.Add(
                        new DataType()
                        {
                            Name = readerRefund["name"].ToString()
                        });
                    }
                    readerRefund.Close();
                    CommonClass.GetConnection().Close();

                    textBlock_AllCountRecords.Text = "(" + listBox_TypeMachines.Items.Count.ToString() + ")";
                }
            }

            else MessageBox.Show("Необходимо заполнить поля данными!",
                                 "Ой-ой, не торопись!", MessageBoxButton.OK, MessageBoxImage.Warning);
        }

        /* МЕТОД УДАЛЕНИЯ СТРОКИ ИЗ ТАБЛИЦЫ 'Типы станков' */
        private void button_DeleteTypeMachine_Click(object sender, RoutedEventArgs e)
        {
            if (listBox_TypeMachines.SelectedIndex == -1)
            {
                MessageBox.Show("Упс. А вы не выделили элемент!", "Оповещение", MessageBoxButton.OK,
                                              MessageBoxImage.Warning);
                return;
            }

            else
            {

                var rezult = MessageBox.Show("Вы уверены?", "Удаление", MessageBoxButton.YesNo,
                                              MessageBoxImage.Question);

                if (rezult == MessageBoxResult.No)
                    return;

                else
                {
                    int selectIndex = listBox_TypeMachines.SelectedIndex + 1;

                    Metods_TypeMachines.DeleteType(selectIndex);

                    listBox_TypeMachines.ItemsSource = null;
                    listBox_TypeMachines.Items.Clear();

                    SqlDataReader readerRefund = Metods_TypeMachines.GetReader_DefaultListBox();

                    while (readerRefund.Read())
                    {
                        listBox_TypeMachines.Items.Add(
                        new DataType()
                        {
                            Name = readerRefund["name"].ToString()
                        });
                    }
                    readerRefund.Close();
                    CommonClass.GetConnection().Close();

                    textBlock_AllCountRecords.Text = "(" + listBox_TypeMachines.Items.Count.ToString() + ")";

                }
            }
        }

        /* МЕТОД ПОЛНОГО СБРОСА ПО КНОПКЕ */
        private void button_DropFields_Click(object sender, RoutedEventArgs e)
        {
            textBox_NameType.Text = "";

            listBox_TypeMachines.ItemsSource = null;
            listBox_TypeMachines.Items.Clear();

            SqlDataReader readerRefund = Metods_TypeMachines.GetReader_DefaultListBox();

            while (readerRefund.Read())
            {
                listBox_TypeMachines.Items.Add(
                new DataType()
                {
                    Name = readerRefund["name"].ToString()
                });
            }
            readerRefund.Close();
            CommonClass.GetConnection().Close();
        }

 
    }
}
