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.Controls.Primitives; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Markup; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace Детский_сад { /// /// Логика взаимодействия для ViewChildren.xaml /// public partial class ViewChildren : Page { Pagination Pagin = new Pagination(); List ChildList = new List(); bool StartForFilter = true; bool StartForSort = true; public ViewChildren() { InitializeComponent(); ChildList = Base.KE.Children.ToList(); lv.ItemsSource = ChildList; Pagin.CountPage = Base.KE.Children.ToList().Count; DataContext = Pagin; CbFilter.SelectedIndex = 0; CbSort.SelectedIndex = 0; } private void btnBack_Click(object sender, RoutedEventArgs e) { Base.mainFrame.Navigate(new Account()); } private void tbMather_Loaded(object sender, RoutedEventArgs e) { TextBlock tb = (TextBlock)sender; int id = Convert.ToInt32(tb.Uid); Kinships kinships = Base.KE.Kinships.FirstOrDefault(x => x.Id_child == id && x.Parents.Id_gender == 2); if (kinships != null) { tb.Text = "Мать: "; tb.Text += kinships.Parents.FullName; } else { tb.Visibility = Visibility.Collapsed; } } private void tbVather_Loaded(object sender, RoutedEventArgs e) { TextBlock tb = (TextBlock)sender; int id = Convert.ToInt32(tb.Uid); Kinships kinships = Base.KE.Kinships.FirstOrDefault(x => x.Id_child == id && x.Parents.Id_gender == 1); if (kinships != null) { tb.Text = "Отец: "; tb.Text += kinships.Parents.FullName; } else { tb.Visibility = Visibility.Collapsed; } } private void btnAdd_Click(object sender, RoutedEventArgs e) { Base.mainFrame.Navigate(new AddChild()); } private void btnDelete_Click(object sender, RoutedEventArgs e) { Button button = (Button)sender; int id = Convert.ToInt32(button.Uid); Children child = Base.KE.Children.FirstOrDefault(x => x.Id_child == id); List kinships = Base.KE.Kinships.Where(x => x.Id_child == id).ToList(); Base.KE.Children.Remove(child); Base.KE.SaveChanges(); foreach (Kinships item in kinships) { if (Base.KE.Kinships.Where(x => x.Id_parent == item.Id_parent).ToList().Count == 0) { Parents parent = Base.KE.Parents.FirstOrDefault(x => x.Id_parent == item.Id_parent); Base.KE.Parents.Remove(parent); } } Base.KE.SaveChanges(); MessageBox.Show("Ребёнок успешно удалён", "Дети", MessageBoxButton.OK, MessageBoxImage.Information); } private void lv_MouseDoubleClick(object sender, MouseButtonEventArgs e) { Children child = (Children)lv.SelectedItem; Base.mainFrame.Navigate(new AddChild(Base.KE.Children.FirstOrDefault(x => x.Id_child == child.Id_child))); } private void CbFilter_SelectionChanged(object sender, SelectionChangedEventArgs e) { Filter(); } private void TBoxFind_TextChanged(object sender, TextChangedEventArgs e) { Filter(); } private void ChBPhoto_Click(object sender, RoutedEventArgs e) { Filter(); } private void Filter() { ChildList.Clear(); switch (CbFilter.SelectedIndex) { case 1: ChildList = Base.KE.Children.Where(x => x.Surname.StartsWith(TBoxFind.Text)).ToList(); break; case 2: ChildList = Base.KE.Children.Where(x => x.Names.StartsWith(TBoxFind.Text)).ToList(); break; case 3: ChildList = Base.KE.Children.Where(x => x.Patronymic.StartsWith(TBoxFind.Text)).ToList(); break; case 4: foreach (Children item in Base.KE.Children) { if (item.Groups.Name_group.StartsWith(TBoxFind.Text)) { ChildList.Add(item); } } break; default: ChildList = Base.KE.Children.ToList(); break; } if ((bool)ChBPhoto.IsChecked) { ChildList = ChildList.Where(x => x.Photo != "\\Resources\\Заглушка.png").ToList(); } switch (CbSort.SelectedIndex) { case 1: ChildList.Sort((x, y) => x.Surname.CompareTo(y.Surname)); break; case 2: ChildList.Sort((x, y) => x.Names.CompareTo(y.Names)); break; case 3: ChildList.Sort((x, y) => x.Patronymic.CompareTo(y.Patronymic)); break; case 4: ChildList.Sort((x, y) => x.Surname.CompareTo(y.Surname)); ChildList.Reverse(); break; case 5: ChildList.Sort((x, y) => x.Names.CompareTo(y.Names)); ChildList.Reverse(); break; case 6: ChildList.Sort((x, y) => x.Patronymic.CompareTo(y.Patronymic)); ChildList.Reverse(); break; } lv.ItemsSource = ChildList; if (ChildList.Count != 0) { SetPagination(); } } private void GoPage_MouseDown(object sender, MouseButtonEventArgs e) { TextBlock tb = (TextBlock)sender; switch (tb.Uid) { case "first": Pagin.CurrentPage = 1; break; case "last": Pagin.CurrentPage = ChildList.Count; break; case "back": Pagin.CurrentPage--; break; case "next": Pagin.CurrentPage++; break; default: Pagin.CurrentPage = Convert.ToInt32(tb.Text); break; } lv.ItemsSource = ChildList.Skip(Pagin.CurrentPage * Pagin.CountPage - Pagin.CountPage).Take(Pagin.CountPage).ToList(); } private void tboxPageCount_TextChanged(object sender, TextChangedEventArgs e) { SetPagination(); } private void SetPagination() { try { Pagin.CountPage = Convert.ToInt32(tboxPageCount.Text); } catch { Pagin.CountPage = ChildList.Count; } Pagin.CountList = ChildList.Count; lv.ItemsSource = ChildList.Skip(0).Take(Pagin.CountPage).ToList(); if (!StartForFilter && !StartForSort) { Pagin.CurrentPage = 1; } if (!StartForFilter) { StartForSort = false; } StartForFilter = false; } } }