JAPWT / View / AdminPages / AdminUsers.xaml.cs
AdminUsers.xaml.cs
Raw
using MyApp.ExampleDataSetTableAdapters;
using MyApp.Services;
using System;
using System.Data;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Navigation;

namespace MyApp.AdminPages
{
    public partial class AdminUsers : Page
    {
        UsersTableAdapter usersTableAdapter = new UsersTableAdapter();
        RoleTableAdapter roleTableAdapter = new RoleTableAdapter();
        public AdminUsers()
        {
            InitializeComponent();
            Users_DG.ItemsSource = usersTableAdapter.GetData();
            RolesCB.ItemsSource = roleTableAdapter.GetData();
            RolesCB.DisplayMemberPath = "TitleRole";

            SortCB.ItemsSource = SearchAndSort.NotFullSortBy;
        }

        //Поиск и сортировка
        private void StartSearchButton_Click(object sender, RoutedEventArgs e)
        {
            if (SearchTB.Text != "Поиск..." & SearchTB.Text != "")
            {
                SearchAndSort.Search(usersTableAdapter, Users_DG, SearchTB.Text);
            }
            else
            {
                Users_DG.ItemsSource = usersTableAdapter.GetData();
            }
        }

        private void SortCB_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (SortCB.SelectedItem != null) { ForSortCB.Visibility = Visibility.Collapsed; }
            if(SortCB.SelectedItem.ToString() == "По алфавиту")
            {
                SearchAndSort.SortByAlphabet(usersTableAdapter, Users_DG);
            }
        }


        //Прочие события
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Window ownerWindow = Application.Current.Windows.OfType<Window>().SingleOrDefault(w => w.Title == "MainWindow");
            ownerWindow.Close();
        }

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            Window ownerWindow = Application.Current.Windows.OfType<Window>().SingleOrDefault(w => w.Title == "MainWindow");
            ownerWindow.WindowState = WindowState.Minimized;
        }

        private void SearchTB_MouseEnter(object sender, MouseEventArgs e)
        {
            if (SearchTB.Text == "Поиск...") { SearchTB.Text = ""; SearchTB.Foreground = Brushes.White; }
        }

        private void SearchTB_MouseLeave(object sender, MouseEventArgs e)
        {
            if (SearchTB.Text == "") { SearchTB.Text = "Поиск..."; SolidColorBrush sb = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#6BFFFFFF")); SearchTB.Foreground = sb; }
        }
        private void NameTB_MouseEnter(object sender, MouseEventArgs e)
        {
            if (NameTB.Text == "Имя") { NameTB.Text = ""; NameTB.Foreground = Brushes.White; }
        }

        private void NameTB_MouseLeave(object sender, MouseEventArgs e)
        {
            if (NameTB.Text == "")
            {
                NameTB.Text = "Имя";
                SolidColorBrush sb = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#6BFFFFFF"));
                NameTB.Foreground = sb;
            }
        }

        private void SurnameTB_MouseEnter(object sender, MouseEventArgs e)
        {
            if (SurnameTB.Text == "Фамилия") { SurnameTB.Text = ""; SurnameTB.Foreground = Brushes.White; }
        }

        private void SurnameTB_MouseLeave(object sender, MouseEventArgs e)
        {
            if (SurnameTB.Text == "")
            {
                SurnameTB.Text = "Фамилия";
                SolidColorBrush sb = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#6BFFFFFF"));
                SurnameTB.Foreground = sb;
            }
        }

        private void LoginTB_MouseEnter(object sender, MouseEventArgs e)
        {
            if (LoginTB.Text == "Логин") { LoginTB.Text = ""; LoginTB.Foreground = Brushes.White; }
        }

        private void LoginTB_MouseLeave(object sender, MouseEventArgs e)
        {
            if (LoginTB.Text == "")
            {
                LoginTB.Text = "Логин";
                SolidColorBrush sb = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#6BFFFFFF"));
                LoginTB.Foreground = sb;
            }
        }

        private void PasswordTB_MouseEnter(object sender, MouseEventArgs e)
        {
            if (PasswordTB.Text == "Пароль") { PasswordTB.Text = ""; PasswordTB.Foreground = Brushes.White; }
        }

        private void PasswordTB_MouseLeave(object sender, MouseEventArgs e)
        {
            if (PasswordTB.Text == "")
            {
                PasswordTB.Text = "Пароль";
                SolidColorBrush sb = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#6BFFFFFF"));
                PasswordTB.Foreground = sb;
            }
        }


        //Навигация
        private void ItemsPageButton_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.Navigate(new AdminProducts());
        }

        private void OrdersPageButton_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.Navigate(new AdminOrders());
        }

        private void RolesPageButton_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.Navigate(new AdminRoles());
        }

        private void UsersPageButton_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.Navigate(new AdminUsers());
        }

        //CRUD

        private void Users_DG_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (Users_DG.SelectedItem != null)
            {
                SolidColorBrush sb = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFFFFF"));
                
                var name = (Users_DG.SelectedItem as DataRowView).Row[1];
                NameTB.Text = name.ToString();
                NameTB.Foreground = sb;

                var surname = (Users_DG.SelectedItem as DataRowView).Row[2];
                SurnameTB.Text = surname.ToString();
                SurnameTB.Foreground = sb;

                var login = (Users_DG.SelectedItem as DataRowView).Row[3];
                LoginTB.Text = login.ToString();
                LoginTB.Foreground = sb;

                var password = (Users_DG.SelectedItem as DataRowView).Row[4];
                PasswordTB.Text = password.ToString();
                PasswordTB.Foreground = sb;
            }
        }
        private void RolesCB_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (RolesCB.SelectedItem != null)
            {
                ForRolesCB.Visibility = Visibility.Collapsed;
            }
        }

        private void AddButton_Click(object sender, RoutedEventArgs e)
        {
            if (NameTB.Text != "" & SurnameTB.Text != "" & LoginTB.Text != "" & PasswordTB.Text != "" & RolesCB.SelectedItem != null & NameTB.Text != null & SurnameTB.Text != null & LoginTB.Text != null & PasswordTB.Text != null)
            {
                
                if (NameTB.Text != "Имя" & SurnameTB.Text != "Фамилия" & LoginTB.Text != "Логин" & PasswordTB.Text != "Пароль")
                {
                    bool HaveSameLogin = false;
                    foreach (var item in Users_DG.Items)
                    {
                        var row = Users_DG.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
                        if (row != null)
                        {
                            var cellcontent = Users_DG.Columns[3].GetCellContent(row);
                            if (cellcontent is TextBlock textblock)
                            {
                                if (textblock.Text == LoginTB.Text)
                                {
                                    HaveSameLogin = true;
                                    MessageBox.Show("Такой логин уже существует!"); break;
                                }
                            }
                        }
                    }

                    if (HaveSameLogin == false)
                    {
                        int KolvoElementov = Users_DG.Items.Count;
                        var GetLastIndex = (Users_DG.Items.GetItemAt(KolvoElementov - 1) as DataRowView).Row[0];
                        var IDRole = (RolesCB.SelectedItem as DataRowView).Row[0];
                        usersTableAdapter.Insert((int)GetLastIndex + 1, NameTB.Text, SurnameTB.Text, LoginTB.Text, PasswordTB.Text, (int)IDRole);
                        Users_DG.ItemsSource = usersTableAdapter.GetData();
                    }
                }
            }
        }

        private void DelButton_Click(object sender, RoutedEventArgs e)
        {
            if (NameTB.Text != "" & SurnameTB.Text != "" & LoginTB.Text != "" & PasswordTB.Text != "" & SurnameTB.Text != null & LoginTB.Text != null & PasswordTB.Text != null)
            {
                try
                {
                    var index = (Users_DG.SelectedItem as DataRowView).Row[0];
                    var idrole = (Users_DG.SelectedItem as DataRowView).Row[5];
                    usersTableAdapter.Delete((int)index, NameTB.Text, SurnameTB.Text, LoginTB.Text, PasswordTB.Text, (int)idrole);
                    Users_DG.ItemsSource = usersTableAdapter.GetData();
                }
                catch (Exception)
                {
                    return;
                }
            }
        }
        private void ChangeButton_Click(object sender, RoutedEventArgs e)
        {
            if (RolesCB.SelectedItem == null) { MessageBox.Show("Выберите роль!"); }
            if (NameTB.Text != "" & SurnameTB.Text != "" & LoginTB.Text != "" & PasswordTB.Text != "" & RolesCB.SelectedItem != null & NameTB.Text != null & SurnameTB.Text != null & LoginTB.Text != null & PasswordTB.Text != null)
            {
                try
                {
                    var index = (Users_DG.SelectedItem as DataRowView).Row[0];
                    var OriginalName = (Users_DG.SelectedItem as DataRowView).Row[1];
                    var OriginalSurname = (Users_DG.SelectedItem as DataRowView).Row[2];
                    var OriginalLogin = (Users_DG.SelectedItem as DataRowView).Row[3];
                    var OriginalPassword = (Users_DG.SelectedItem as DataRowView).Row[4];
                    var OriginalIDROLE = (Users_DG.SelectedItem as DataRowView).Row[5];
                    var IDRoleFromCB = (RolesCB.SelectedItem as DataRowView).Row[0];

                    bool HaveSameLogin = false;
                    if (OriginalLogin.ToString() != LoginTB.Text)
                    {
                        foreach (var item in Users_DG.Items)
                        {
                            var row = Users_DG.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
                            if (row != null)
                            {
                                var cellcontent = Users_DG.Columns[3].GetCellContent(row);
                                if (cellcontent is TextBlock textblock)
                                {
                                    if (textblock.Text == LoginTB.Text)
                                    {
                                        HaveSameLogin = true;
                                    }
                                }
                            }
                        }
                    }


                    if (OriginalName.ToString() != NameTB.Text | OriginalSurname.ToString() != SurnameTB.Text | OriginalLogin.ToString() != LoginTB.Text | OriginalPassword.ToString() != PasswordTB.Text | (int)OriginalIDROLE != (int)IDRoleFromCB)
                    {
                        if (OriginalLogin.ToString() != LoginTB.Text)
                        {
                            if(HaveSameLogin == true) { MessageBox.Show("Такой логин существует!"); return; }
                        }
                        usersTableAdapter.Update((int)index, NameTB.Text, SurnameTB.Text, LoginTB.Text, PasswordTB.Text, (int)IDRoleFromCB, (int)index, OriginalName.ToString(), OriginalSurname.ToString(), OriginalLogin.ToString(), OriginalPassword.ToString(), (int)OriginalIDROLE);
                        Users_DG.ItemsSource = usersTableAdapter.GetData();
                    }
                }
                catch (Exception) { return; }
            }
        }
    }
}