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

namespace MyApp.ManagerPages
{
    public partial class ManagerProducts : Page
    {
        ProductTableAdapter productTableAdapter = new ProductTableAdapter();
        public ManagerProducts()
        {
            InitializeComponent();
            Product_DG.ItemsSource = productTableAdapter.GetData();

            SortCB.ItemsSource = SearchAndSort.FullSortBy;
        }

        //Поиск и сортировка
        private void StartSearchButton_Click(object sender, RoutedEventArgs e)
        {
            if (SearchTB.Text != "Поиск..." & SearchTB.Text != "")
            {
                SearchAndSort.Search(productTableAdapter, Product_DG, SearchTB.Text);
            }
            else
            {
                Product_DG.ItemsSource = productTableAdapter.GetData();
            }
        }
        private void CB_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (SortCB.SelectedItem != null) { ForSortCB.Visibility = Visibility.Collapsed; }
            if (SortCB.SelectedItem.ToString() == "По алфавиту")
            {
                SearchAndSort.SortByAlphabet(productTableAdapter, Product_DG);
            }
            if (SortCB.SelectedItem.ToString() == "По стоимости")
            {
                SearchAndSort.SortByCost(productTableAdapter, Product_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 PriceTB_MouseEnter(object sender, MouseEventArgs e)
        {
            if (PriceTB.Text == "Цена") { PriceTB.Text = ""; PriceTB.Foreground = Brushes.White; }
        }

        private void PriceTB_MouseLeave(object sender, MouseEventArgs e)
        {
            if (PriceTB.Text == "")
            {
                PriceTB.Text = "Цена";
                SolidColorBrush sb = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#6BFFFFFF"));
                PriceTB.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 KolvoTB_MouseEnter(object sender, MouseEventArgs e)
        {
            if (KolvoTB.Text == "Кол-во") { KolvoTB.Text = ""; KolvoTB.Foreground = Brushes.White; }
        }

        private void KolvoTB_MouseLeave(object sender, MouseEventArgs e)
        {
            if (KolvoTB.Text == "")
            {
                KolvoTB.Text = "Кол-во";
                SolidColorBrush sb = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#6BFFFFFF"));
                KolvoTB.Foreground = sb;
            }
        }

        private void DescriptionTB_MouseEnter(object sender, MouseEventArgs e)
        {
            if (DescriptionTB.Text == "Описание") { DescriptionTB.Text = ""; DescriptionTB.Foreground = Brushes.White; }
        }

        private void DescriptionTB_MouseLeave(object sender, MouseEventArgs e)
        {
            if (DescriptionTB.Text == "")
            {
                DescriptionTB.Text = "Описание";
                SolidColorBrush sb = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#6BFFFFFF"));
                DescriptionTB.Foreground = sb;
            }
        }

        private void DataPicker_MouseEnter(object sender, MouseEventArgs e)
        {
            if (DataPicker.Text == "Дата просрочки") { DataPicker.Text = ""; DataPicker.Foreground = Brushes.White; }
        }

        private void DataPicker_MouseLeave(object sender, MouseEventArgs e)
        {
            if (DataPicker.Text == "")
            {
                DataPicker.Text = "Дата просрочки";
                SolidColorBrush sb = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#6BFFFFFF"));
                DataPicker.Foreground = sb;
            }
        }
        private void OpenCalendar_Click(object sender, RoutedEventArgs e)
        {
            if (Calendar.Visibility == Visibility.Collapsed)
            {
                Calendar.Visibility = Visibility.Visible;
                AddButton.Visibility = Visibility.Hidden;
                DelButton.Visibility = Visibility.Hidden;
                ChangeButton.Visibility = Visibility.Hidden;
                return;
            }
            else
            {
                Calendar.Visibility = Visibility.Collapsed;
                AddButton.Visibility = Visibility.Visible;
                DelButton.Visibility = Visibility.Visible;
                ChangeButton.Visibility = Visibility.Visible;
            }
        }
        private void Calendar_SelectedDatesChanged(object sender, SelectionChangedEventArgs e)
        {
            if (Calendar.SelectedDate != null)
            {
                DataPicker.Text = Calendar.SelectedDate.ToString();
                SolidColorBrush sb = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFFFFF"));
                DataPicker.Foreground = sb;
                DataPicker.IsReadOnly = true;
            }
        }

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

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

        //CRUD
        private void Product_DG_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (Product_DG.SelectedItem != null)
            {
                SolidColorBrush sb = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFFFFF"));

                var name = (Product_DG.SelectedItem as DataRowView).Row[1];
                NameTB.Text = name.ToString();
                NameTB.Foreground = sb;

                var price = (Product_DG.SelectedItem as DataRowView).Row[3];
                PriceTB.Text = price.ToString();
                PriceTB.Foreground = sb;

                var kolvo = (Product_DG.SelectedItem as DataRowView).Row[4];
                KolvoTB.Text = kolvo.ToString();
                KolvoTB.Foreground = sb;

                var description = (Product_DG.SelectedItem as DataRowView).Row[2];
                DescriptionTB.Text = description.ToString();
                DescriptionTB.Foreground = sb;

                var data = (Product_DG.SelectedItem as DataRowView).Row[5];
                DataPicker.Text = data.ToString();
                DataPicker.Foreground = sb;
                DataPicker.IsReadOnly = true;
            }
        }
        private void AddButton_Click(object sender, RoutedEventArgs e)
        {
            if (NameTB.Text != "" & PriceTB.Text != "" & KolvoTB.Text != "" & DataPicker.Text != "" & DescriptionTB.Text != "" & NameTB.Text != null & PriceTB.Text != null & KolvoTB.Text != null & DataPicker.Text != null & DescriptionTB.Text != null)
            {

                if (NameTB.Text != "Название" & PriceTB.Text != "Цена" & KolvoTB.Text != "Кол-во" & DataPicker.Text != "Дата просрочки" & DescriptionTB.Text != "Описание")
                {
                    bool HaveSameProductName = false;
                    foreach (var item in Product_DG.Items)
                    {
                        var row = Product_DG.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
                        if (row != null)
                        {
                            var cellcontent = Product_DG.Columns[1].GetCellContent(row);
                            if (cellcontent is TextBlock textblock)
                            {
                                if (textblock.Text == NameTB.Text)
                                {
                                    HaveSameProductName = true;
                                    MessageBox.Show("Продукт с таким названием уже существует!"); break;
                                }
                            }
                        }
                    }

                    if (HaveSameProductName == false)
                    {
                        int KolvoElementov = Product_DG.Items.Count;
                        var GetLastIndex = (Product_DG.Items.GetItemAt(KolvoElementov - 1) as DataRowView).Row[0];
                        int.TryParse(KolvoTB.Text, out int Kolvo);
                        float.TryParse(PriceTB.Text, out float Price);
                        DateTime.TryParse(DataPicker.Text, out DateTime date);
                        productTableAdapter.Insert((int)GetLastIndex + 1, NameTB.Text, DescriptionTB.Text, Price, Kolvo, date);
                        Product_DG.ItemsSource = productTableAdapter.GetData();
                    }
                }
            }
        }

        private void DelButton_Click(object sender, RoutedEventArgs e)
        {
            if (NameTB.Text != "" & PriceTB.Text != "" & KolvoTB.Text != "" & DataPicker.Text != "" & DescriptionTB.Text != "" & NameTB.Text != null & PriceTB.Text != null & KolvoTB.Text != null & DataPicker.Text != null & DescriptionTB.Text != null)
            {
                try
                {
                    var index = (Product_DG.SelectedItem as DataRowView).Row[0];
                    var price = (Product_DG.SelectedItem as DataRowView).Row[3];
                    var kolvo = (Product_DG.SelectedItem as DataRowView).Row[4];
                    var data = (Product_DG.SelectedItem as DataRowView).Row[5];
                    productTableAdapter.Delete((int)index, NameTB.Text, DescriptionTB.Text, (double)price, (int)kolvo, (DateTime)data);
                    Product_DG.ItemsSource = productTableAdapter.GetData();
                }
                catch (Exception)
                {
                    return;
                }
            }
        }
        private void ChangeButton_Click(object sender, RoutedEventArgs e)
        {
            if (NameTB.Text != "" & PriceTB.Text != "" & KolvoTB.Text != "" & DataPicker.Text != "" & DescriptionTB.Text != "" & NameTB.Text != null & PriceTB.Text != null & KolvoTB.Text != null & DataPicker.Text != null & DescriptionTB.Text != null)
            {
                try
                {
                    var index = (Product_DG.SelectedItem as DataRowView).Row[0];
                    var OriginalName = (Product_DG.SelectedItem as DataRowView).Row[1];
                    var OriginalDescription = (Product_DG.SelectedItem as DataRowView).Row[2];
                    var OriginalPrice = (Product_DG.SelectedItem as DataRowView).Row[3];
                    double.TryParse(PriceTB.Text, out double price);
                    var OriginalKolvo = (Product_DG.SelectedItem as DataRowView).Row[4];
                    int.TryParse(KolvoTB.Text, out int kolvo);
                    var OriginalIDATE = (Product_DG.SelectedItem as DataRowView).Row[5];
                    DateTime.TryParse(DataPicker.Text, out DateTime date);

                    bool HaveSameProduct = false;
                    if (OriginalName.ToString() != NameTB.Text)
                    {
                        foreach (var item in Product_DG.Items)
                        {
                            var row = Product_DG.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
                            if (row != null)
                            {
                                var cellcontent = Product_DG.Columns[1].GetCellContent(row);
                                if (cellcontent is TextBlock textblock)
                                {
                                    if (textblock.Text == NameTB.Text)
                                    {
                                        HaveSameProduct = true;
                                    }
                                }
                            }
                        }
                    }


                    if (OriginalName.ToString() != NameTB.Text | OriginalDescription.ToString() != DescriptionTB.Text | (double)OriginalPrice != price | (int)OriginalKolvo != kolvo | (DateTime)OriginalIDATE != date)
                    {
                        if (OriginalName.ToString() != NameTB.Text)
                        {
                            if (HaveSameProduct == true) { MessageBox.Show("Продукт с таким именем существует!"); return; }
                        }
                        productTableAdapter.Update(NameTB.Text, DescriptionTB.Text, price, kolvo, date, (int)index, OriginalName.ToString(), OriginalDescription.ToString(), (double)OriginalPrice, (int)OriginalKolvo, (DateTime)OriginalIDATE);
                        Product_DG.ItemsSource = productTableAdapter.GetData();
                    }
                }
                catch (Exception) { return; }
            }
        }
    }
}