using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
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;
using System.Windows.Navigation;
using System.Data.SqlClient;
namespace KursachMukha692gr
{
    /// <summary>
    /// Логика взаимодействия для RegUch.xaml
    /// </summary>
    public partial class RegUch : Window
    {
        List<string> Alphabetrus = new List<string> {
            "А", "а", "Б", "б", "В", "в", "Г", "г", "Д", "д", "Е", "е", "Ё", "ё", "Ж", "ж", "З", "з", "И", "и", "Й", "й",
            "К", "к", "Л", "л", "М", "м", "Н", "н", "О", "о", "П", "п", "Р", "р", "С", "с", "Т", "т", "У", "у", "Ф", "ф",
            "Х", "х", "Ц", "ц", "Ч", "ч", "Ш", "ш", "Щ", "щ", "Ъ", "ъ", "Ы", "ы", "Ь", "ь", "Э", "э", "Ю", "ю", "Я", "я" };
        List<string> Date = new List<string> {
            "0","1","2","3","4","5","6","7","8","9","."};
        //KURSACH1Entities db;
        public RegUch()
        {
           
            InitializeComponent();
            //db = new KURSACH1Entities();
            //List<infoadmin> infoadmins = db.infoadmins.ToList();
            //string str = "";
            //foreach (infoadmin flag in infoadmins)
            //{
            //  str += "Login: " + flag.LoginAdmin + " | ";
            //}
            //exampleText.Text = str;
        }
        /*public bool Reg(string fam)
        {
            if(string.IsNullOrEmpty(fam))
            {
                return false;
            }
            using(var db = new KURSACH1Entities2())
            {
                var uch = db.infoadmins
                    .AsNoTracking()
                    .FirstOrDefault(item => item.familiyaAdmin == familiyaAdmin.Text);
                if(uch == null)
                {
                    return false;
                }
                return true;
            }
        }*/
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            if (familiyaAdmin.Text != "" && imyaAdmin.Text != "" && otchAdmin.Text != "" && dataAdmin.Text != "" && numberAdmin.Text != "" && emailAdmin.Text != "" && LoginAdmin.Text != "" && pass1Admin.Password != "" && pass2Admin.Password != "")
            {
                bool fam = false, imya = false, otch = false, data = false, num = false;
                bool email = false , login = false , pas1 = false, pas2 = false;
                for (int i = 0; i < familiyaAdmin.Text.Length; i++)//проверка фамилии
                {
                    if (fam)
                    {
                        fam = false;
                    }
                    for(int j = 0; j < Alphabetrus.Count; j++)
                    {
                        if(Convert.ToString(familiyaAdmin.Text[i]).Contains(Alphabetrus[j]))
                        {
                            fam = true;
                            break;
                        }
                    }
                    if (fam == false)
                    {
                        MessageBox.Show("Поле фамилия должно содержать только русские символы"); 
                        break;
                    }
                }
                for (int i = 0; i < imyaAdmin.Text.Length; i++)//проверка имени
                {
                    if (imya)
                    {
                        imya = false;
                    }
                    for (int j = 0; j < Alphabetrus.Count; j++)
                    {
                        if (Convert.ToString(imyaAdmin.Text[i]).Contains(Alphabetrus[j]))
                        {
                            imya = true;
                            break;
                        }
                    }
                    if (imya == false)
                    {
                        MessageBox.Show("Поле имя должно содержать только русские символы");
                        break;
                    }
                }
                for (int i = 0; i < otchAdmin.Text.Length; i++)//проверка отчества
                {
                    if (otch)
                    {
                        otch = false;
                    }
                    for (int j = 0; j < Alphabetrus.Count; j++)
                    {
                        if (Convert.ToString(otchAdmin.Text[i]).Contains(Alphabetrus[j]))
                        {
                            otch = true;
                            break;
                        }
                    }
                    if (otch == false)
                    {
                        MessageBox.Show("Поле отчество должно содержать только русские символы");
                        break;
                    } 
                }
                for (int i = 0; i < dataAdmin.Text.Length; i++)//проверка даты рождения
                {
                    if(data)
                    {
                        data = false;
                    }
                    for(int j = 0; j <Date.Count; j++)
                    { 
                        if(Convert.ToString(dataAdmin.Text[i]).Contains(Date[j]))
                        {
                            data = true;
                            break;
                        }
                    }
                    if (data == false)
                    {
                        MessageBox.Show("Поле дата рождения должно содержать только цифры и знак '.''");
                        break;
                    }
                }
                for (int i = 0; i < numberAdmin.Text.Length; i++)//проверка номера телефона
                {
                    if (num)
                    {
                        num = false;
                    }
                    if (numberAdmin.Text[i] >= '0' && numberAdmin.Text[i] <= '9' && numberAdmin.Text.Length == 11)
                    {
                        num = true;
                        break;
                    }
                    if (num == false)
                    {
                        MessageBox.Show("Поле номер телефона  должно содержать только цифры (без знака + и 11 цифр)");
                        break;
                    } 
                }
                for (int i = 0; i < emailAdmin.Text.Length; i++)//проверка почту
                {
                    if (email)
                    {
                        email = false;
                    }
                    if (emailAdmin.Text[i] >= 'A' && emailAdmin.Text[i] <= 'Z' || emailAdmin.Text[i] >= 'a' && emailAdmin.Text[i] <= 'z' || emailAdmin.Text.Contains("@") || emailAdmin.Text.Contains("."))
                    {
                        email = true;
                        break;
                    }
                    if (email == false)
                    {
                        MessageBox.Show("Поле электронная почта должно содержать только английские символы и знаки '@' и '.'");
                        break;
                    } 
                }
                for (int i = 0; i < LoginAdmin.Text.Length; i++)//проверка логина
                {
                    if (login)
                    {
                        login = false;
                    }
                    if (LoginAdmin.Text[i] >= 'A' && LoginAdmin.Text[i] <= 'Z' || LoginAdmin.Text[i] >= 'a' && LoginAdmin.Text[i] <= 'z')
                    {
                        login = true;
                        break;
                    }
                    if (login == false)
                    {
                        MessageBox.Show("Поле логин должно содержать только английские символы");
                        break;
                    } 
                }
                for (int i = 0; i < pass1Admin.Password.Length; i++)//проверка пароля(англ символы)
                {
                    if (pas1)
                    {
                        pas1 = false;
                    }
                    if (pass1Admin.Password[i] >= 'a' && pass1Admin.Password[i] <= 'z' || pass1Admin.Password[i] >= 'A' && pass1Admin.Password[i] <= 'Z' || pass1Admin.Password[i] >= '0' && pass1Admin.Password[i] <= '9')
                    {
                        pas1 = true;
                        break;
                    }
                    if (pas1 == false)
                    {
                        MessageBox.Show("Поле пароль должно содержать только английские символы и цифры");
                        break;
                    }
                }
                for (int i = 0; i < pass2Admin.Password.Length; i++)//проверка подтверждения пароля
                {
                    if (pas2)
                    {
                        pas2 = false;
                    }
                    if (pass2Admin.Password[i] == pass1Admin.Password[i])
                    {
                        pas2 = true;
                        break;
                    } 
                    if (pas2 == false)
                    {
                        MessageBox.Show("Пароль не совпадает или вы не ввели его");
                        break;
                    } 
                }
                if(fam && imya && otch && data && num && email && login && pas1 && pas2)
                {
                    DataTable dt_infoadmin = Insert("insert into [dbo].[infoadmin] values " +
                                                            "('" + imyaAdmin.Text + "','" + familiyaAdmin.Text + "','" + dataAdmin.Text +
                                                              "','" + otchAdmin.Text + "','" + numberAdmin.Text + "','" + emailAdmin.Text +
                                                              "','" + LoginAdmin.Text + "','" + pass1Admin.Password + "')");
                    MessageBox.Show("Пользователь зарегистирован");
                    Registration mainreg = new Registration();
                    mainreg.Show();
                    Close();
                }
                else { MessageBox.Show("Неправильный формат"); }
            }
            else { MessageBox.Show("Все строки должны быть заполнены"); }
          
        }
        private void Button_Click_Back(object sender, RoutedEventArgs e)
        {
            MainWindow mainreg = new MainWindow();
            mainreg.Show();
            Close();
        }
        public DataTable Insert(string selectSQL)
        {
            DataTable dataTable = new DataTable("dataBase");
            SqlConnection sqlConnection = new SqlConnection("server=WIN-2CL665KE0ED; Trusted_Connection=YES;DataBase=KURSACH1;");
            sqlConnection.Open();
            SqlCommand sqlCommand = sqlConnection.CreateCommand();
            sqlCommand.CommandText = selectSQL;
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
            sqlDataAdapter.Fill(dataTable);
            sqlConnection.Close();
            return dataTable;
        }

        
    }
}
