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;
using System.Data;
using System.Data.SqlClient;

namespace mateo
{
    public partial class First : Window
    {
        public First()
        {
            InitializeComponent();
            vvod_login.Focus();
        }

        private void btn_exit(object sender, RoutedEventArgs e)
        {
            Application.Current.Shutdown();
        }

        private void btn_vhod(object sender, RoutedEventArgs e)
        {
            if (vvod_login.Text == "" || vvod_pass.Password == "") MessageBox.Show("Пустые поля");
            else
            {
                //пользователь
                if (DB.GetContext().Users.FirstOrDefault(x => x.Login == vvod_login.Text && x.Password == vvod_pass.Password) != null) //?&&||???
                {
                    DB.Iduser = DB.GetContext().Users.FirstOrDefault(x => x.Login == vvod_login.Text && x.Password == vvod_pass.Password).IDUsers;

                    MessageBox.Show("Добро пожаловать");

                    MainWindow mainWindow = new MainWindow();
                    mainWindow.Show();
                    this.Close();
                }

                //администратор
                else if (DB.GetContext().Employees.FirstOrDefault(x => x.Login == vvod_login.Text && x.Password == vvod_pass.Password) != null) //?&&||???
                {
                    DB.Idemployees = DB.GetContext().Employees.FirstOrDefault(x => x.Login == vvod_login.Text && x.Password == vvod_pass.Password).IDEmployees;
                    if (DB.GetContext().Employees.Where(x => x.IDEmployees == DB.Idemployees).FirstOrDefault().FKStatusEmployees != 2)
                    {
                        MessageBox.Show("Вы вощли как администратор");

                        SysAdmin sysAdmin = new SysAdmin();
                        sysAdmin.Show();
                        this.Close();
                    }
                    else MessageBox.Show("Вы были уволены");
                }
                else
                {
                    MessageBox.Show("Такого пользователя не сущ-ет");
                    vvod_login.Text = "";
                    vvod_pass.Password = "";
                }
            }
        }

        private void btn_registr(object sender, RoutedEventArgs e)
        {
            grid_registr.Visibility = Visibility.Visible;
            grid_vhod.Visibility = Visibility.Hidden;
        }

        private void btn_regist2(object sender, RoutedEventArgs e)
        {
            if (vvod_login_reg.Text == "" || vvod_pass_reg.Password == "") MessageBox.Show("Пустые поля!");
            else
            {
                try
                {
                    //проверяем есть ли пользователь с указанным логином в системе //проверяем в пользователях и админах
                    if (DB.GetContext().Users.FirstOrDefault(x => x.Login == vvod_login_reg.Text) == null && DB.GetContext().Employees.FirstOrDefault(x => x.Login == vvod_login_reg.Text) == null) //||&&????????    || x.Password == vvod_pass_reg.Password
                    {

                        //string numberCard = "0000 0000 0000 0000";
                        //проверяем есть ли карта с таким номером

                        string numberCard;
                        do
                        {
                            Random random = new Random();
                            int card1 = random.Next(1000, 9999);
                            int card2 = random.Next(1000, 9999);
                            int card3 = random.Next(1000, 9999);
                            int card4 = random.Next(1000, 9999);
                            numberCard = card1.ToString() + " " + card2.ToString() + " " + card3.ToString() + " " + card4.ToString();
                        } while (DB.GetContext().Card.FirstOrDefault(x => x.NumberCard == numberCard) != null);


                        //записать номер карты в табл Card
                        DB.GetContext().Card.Add(new Card { NumberCard = numberCard });
                        DB.GetContext().SaveChanges();

                        //ЗАПИСАТЬ НОМЕР КАРТЫ ДЛЯ ИСПОЛЬЗОВАНИЯ В PROFILE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                        /*Profile profile = new Profile();
                        profile.idcard.Text = DB.GetContext().Card.OrderByDescending(x => x.IDCard).FirstOrDefault().ToString(); //DB.GetContext().Card.Add(new Card { NumberCard = numberCard}).ToString(); //эээ???
                        */
                        //aa = DB.GetContext().Card.OrderByDescending(x => x.IDCard).FirstOrDefault().IDCard;


                        DB.Idcard = DB.GetContext().Card.OrderByDescending(x => x.IDCard).FirstOrDefault().IDCard;

                        if (vvod_MNAME.Text == "")
                        {
                            vvod_MNAME.Text = null;
                        }

                        //записать пользователя и привязать id в табл Users
                        var card = DB.GetContext().Card.OrderByDescending(x => x.IDCard).FirstOrDefault();
                        DB.GetContext().Users.Add(new Users
                        {
                            LastName = vvod_LNAME.Text,
                            FirstName = vvod_FNAME.Text,
                            MiddleName = vvod_MNAME.Text,
                            Login = vvod_login_reg.Text,
                            Password = vvod_pass_reg.Password,
                            FKCard = card.IDCard
                        });

                        //ЗАПИСАТЬ id ПОЛЬЗОВАТЕЛЯ ДЛЯ ИСПОЛЬЗОВАНИЯ В PROFILE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                        // profile.iduser.Text = DB.GetContext().Users.OrderByDescending(x => x.IDUsers).FirstOrDefault().ToString();
                        DB.GetContext().SaveChanges();

                        MessageBox.Show("Пользователь " + vvod_LNAME.Text + " " + vvod_FNAME.Text + " " + " был добавлен\nДобро пожаловать! " + numberCard);
                        MainWindow mainWindow = new MainWindow();
                        mainWindow.Show();
                        this.Close();

                    }
                    else
                    {
                        MessageBox.Show("Пользователь с таким логином уже есть!");
                        vvod_login_reg.Text = "";
                    }
                } 
                catch(Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }


            

           
        }
    }
}
