//adatok módosítása
        private void BTN_Save_Click(object sender, RoutedEventArgs e)
        {
            Regex regexnum  = new Regex(@"[^0-9]");
            Regex regexchar = new Regex(@"[^a-zA-Zá-űÁ-ŰŐ\s*]");



            //Ha minden mező üres akkor törölje a személyt
            if (TB_EmployeeName.Text == "" && TB_EmployeeNumber.Text == "" && (int?)CB_TeamSelect.SelectedValue == null)
            {
                LockerModel.ClearFields(int.Parse(LB_LockerNumber.Content.ToString()), (int)CB_StateSelect.SelectedValue);

                Refresh();
                return;
            }

            //Új személy felvételénél minden adat szükséges
            else if (TB_EmployeeName.Text == "" || TB_EmployeeNumber.Text == "" || (int?)CB_TeamSelect.SelectedValue == null)
            {
                MessageBox.Show("Új személy felvételéhez minden adatot meg kell adnia!", "Hiba!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            //Névben nincsenek számok
            else if (regexchar.IsMatch(TB_EmployeeName.Text))
            {
                MessageBox.Show("A dolgozó neve nem tartalmazhat számokat vagy különleges karaktert!", "Hiba!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            //Törzsszámban nincsenek betűk
            else if (regexnum.IsMatch(TB_EmployeeNumber.Text))
            {
                MessageBox.Show("A törzsszám nem tartalmazhat betűket vagy különleges karaktert!", "Hiba!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            //Törzsszám min 5 számjegy
            else if (TB_EmployeeNumber.Text.Count() != 5)
            {
                MessageBox.Show("A dolgozó törzsszámának 5 számjegyből kell állnia!", "Hiba!", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            else
            {
                this.Updatelocker = new LockerModel()
                {
                    Id      = int.Parse(LB_LockerNumber.Content.ToString()),
                    EmpName = TB_EmployeeName.Text,
                    Number  = TB_EmployeeNumber.Text,
                    TeamID  = (int?)CB_TeamSelect.SelectedValue,
                    StateId = (int)CB_StateSelect.SelectedValue
                };
                LockerModel.Update(this.Updatelocker);
                Refresh();
            }
        }
 private void Refresh()
 {
     locker = LockerModel.Select(searcsNumber, searcsEmpname, searcsTeamname, "", searcsState);
     DG_LockerList.ItemsSource = locker;
     lockerA = LockerModel.Select(searcsNumber, searcsEmpname, searcsTeamname, "A", searcsState);
     DG_LockerListA.ItemsSource = lockerA;
     lockerB = LockerModel.Select(searcsNumber, searcsEmpname, searcsTeamname, "B", searcsState);
     DG_LockerListB.ItemsSource = lockerB;
     lockerC = LockerModel.Select(searcsNumber, searcsEmpname, searcsTeamname, "C", searcsState);
     DG_LockerListC.ItemsSource = lockerC;
 }
        //Adatok törlése
        private void BTN_Delete_Click(object sender, RoutedEventArgs e)
        {
            var resoult = MessageBox.Show("Biztos törölni kívánja ezt a személyt?", "Törlés", MessageBoxButton.YesNo, MessageBoxImage.Question);

            if (resoult == MessageBoxResult.Yes)
            {
                LockerModel.Remove(int.Parse(LB_LockerNumber.Content.ToString()));
                Refresh();
            }
            else
            {
                return;
            }
        }
        private static void RefreshLocker(LockerModel model, MySqlConnection con, string sql4, int employeeId)
        {
            using (var cmd = new MySqlCommand(sql4, con))
            {
                cmd.Parameters.AddWithValue("@locker_id", model.Id);

                if (employeeId != 0)
                {
                    cmd.Parameters.AddWithValue("@employee_id", employeeId);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@employee_id", null);
                }

                cmd.Parameters.AddWithValue("@state_id", model.StateId);

                cmd.ExecuteNonQuery();
            }
        }
        public MainWindow()
        {
            InitializeComponent();

            //minden szekrény listázása
            locker  = LockerModel.Select(null, "", null, "", "");
            lockerA = LockerModel.Select(null, "", null, "A", "");
            lockerB = LockerModel.Select(null, "", null, "B", "");
            lockerC = LockerModel.Select(null, "", null, "C", "");
            DG_LockerList.ItemsSource  = locker;
            DG_LockerListA.ItemsSource = lockerA;
            DG_LockerListB.ItemsSource = lockerB;
            DG_LockerListC.ItemsSource = lockerC;

            teams = TeamModel.Select();
            teams.Insert(0, new TeamModel(null, ""));//legördülő listában első opció üres
            CB_TeamSearch.ItemsSource = teams;
            CB_TeamSelect.ItemsSource = teams;
            states = StateModel.Select();
            CB_StateSelect.ItemsSource = states;
        }
        public static void Update(LockerModel model)
        {
            using (var con = new MySqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
            {
                con.Open();
                //megszámolja hogy hány olyan személy van akinek a neve és a száma megegyezik a beírtakkal
                var sameNumberAndEmpname = "SELECT id FROM employees WHERE number=@number AND empname=@empname";

                //beszúrja az adatokat az alkalmazottak táblába
                var insertNewEmployee = "INSERT INTO employees (number, empname, team_id)" +
                                        " VALUES(@number, @empname, @team_id)";

                //megkeresi azon dolgozók azonosítóját akik már rendelkeznek ezzel a törzsszámmal
                var numberAlreadyExist = " SELECT id FROM employees WHERE number = @number";

                //frissíti az öltőszekrények táblában a dolgozók azonosítóját
                var updateLockers = " UPDATE lockers " +
                                    " SET employee_id = @employee_id," +
                                    " state_id = @state_id" +
                                    " WHERE id = @locker_id;";

                //frissíti az dolgozók táblában a csapatok azonosítóját
                var updateTeams = "UPDATE employees SET team_id = @team_id WHERE id = @employee_id";

                //megkeresi azon szekrények azonosítóját amihez tartozik olyan dolgozó akik már rendelkeznek ezzel a törzsszámmal és névveel
                var lockersWithsameNumberAndEmpname = " SELECT lockers.id FROM lockers " +
                                                      " INNER JOIN employees " +
                                                      " ON lockers.employee_id = employees.id " +
                                                      " WHERE number=@number AND empname=@empname";


                //var sql7 = "UPDATE lockers SET state_id = 3 WHERE id = @locker_id ";
                var setStateToWaiting = "UPDATE lockers SET state_id = 3 WHERE employee_id = @employee_id ";

                int duplicateId;
                using (var cmd = new MySqlCommand(lockersWithsameNumberAndEmpname, con))
                {
                    cmd.Parameters.AddWithValue("@number", model.Number);
                    cmd.Parameters.AddWithValue("@empname", model.EmpName);
                    duplicateId = Convert.ToInt32(cmd.ExecuteScalar());
                }

                int duplicateNumber;
                using (var cmd = new MySqlCommand(numberAlreadyExist, con))
                {
                    cmd.Parameters.AddWithValue("@number", model.Number);
                    duplicateNumber = Convert.ToInt32(cmd.ExecuteScalar());
                }

                bool employeeExists = false;
                int  empId          = 0;
                using (var cmd = new MySqlCommand(sameNumberAndEmpname, con))
                {
                    cmd.Parameters.AddWithValue("@number", model.Number);
                    cmd.Parameters.AddWithValue("@empname", model.EmpName);
                    object sqlresult = cmd.ExecuteScalar();
                    if (sqlresult != null)
                    {
                        empId = int.Parse(cmd.ExecuteScalar().ToString());

                        employeeExists = empId != 0 ? true : false;
                    }
                }



                if (!employeeExists && duplicateNumber == 0)
                {
                    if (!string.IsNullOrWhiteSpace(model.EmpName) && !string.IsNullOrWhiteSpace(model.Number))
                    {
                        using (var cmd = new MySqlCommand(insertNewEmployee, con))
                        {
                            cmd.Parameters.AddWithValue("@team_id", model.TeamID);
                            cmd.Parameters.AddWithValue("@number", model.Number);
                            cmd.Parameters.AddWithValue("@empname", model.EmpName);
                            cmd.ExecuteNonQuery();
                        }
                        int employeeId;

                        using (var cmd = new MySqlCommand(numberAlreadyExist, con))
                        {
                            cmd.Parameters.AddWithValue("@number", model.Number);
                            employeeId = Convert.ToInt32(cmd.ExecuteScalar());
                        }
                        RefreshLocker(model, con, updateLockers, employeeId);
                    }
                }
                else if (!employeeExists && duplicateNumber != 0)
                {
                    MessageBox.Show("A törzsszám egy másik személyhez tartozik!", "Hiba!", MessageBoxButton.OK, MessageBoxImage.Error);

                    return;
                }
                else
                {
                    var result = MessageBox.Show("A megadott személy már rendelkezik szekrénnyel! Költöztetni akar?", "Költöztetés", MessageBoxButton.YesNo, MessageBoxImage.Question);
                    if (result == MessageBoxResult.Yes)
                    {
                        int employeeId;

                        using (var cmd = new MySqlCommand(numberAlreadyExist, con))
                        {
                            cmd.Parameters.AddWithValue("@number", model.Number);
                            employeeId = Convert.ToInt32(cmd.ExecuteScalar());
                        }

                        using (var cmd = new MySqlCommand(setStateToWaiting, con))
                        {
                            cmd.Parameters.AddWithValue("@employee_id", empId);

                            cmd.ExecuteNonQuery();
                        }

                        if (employeeExists)
                        {
                            using (var cmd = new MySqlCommand(updateTeams, con))
                            {
                                cmd.Parameters.AddWithValue("@team_id", model.TeamID);
                                cmd.Parameters.AddWithValue("@employee_id", employeeId);
                                cmd.ExecuteNonQuery();
                            }
                        }

                        RefreshLocker(model, con, updateLockers, employeeId);
                    }
                    else
                    {
                        int employeeId;

                        using (var cmd = new MySqlCommand(numberAlreadyExist, con))
                        {
                            cmd.Parameters.AddWithValue("@number", model.Number);
                            employeeId = Convert.ToInt32(cmd.ExecuteScalar());
                        }

                        RefreshLocker(model, con, updateLockers, employeeId);

                        using (var cmd = new MySqlCommand(updateTeams, con))
                        {
                            cmd.Parameters.AddWithValue("@team_id", model.TeamID);
                            cmd.Parameters.AddWithValue("@employee_id", employeeId);
                            cmd.ExecuteNonQuery();
                        }
                        return;
                    }
                }
            }
        }