kursovaya/AdminWindow.axaml.cs
2025-06-09 23:05:33 +03:00

110 lines
3.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using kursovaya.Models;
using kursovaya.ModelsLocal;
namespace kursovaya;
public partial class AdminWindow : Window
{
List<Discipline> Disciplines = new List<Discipline>();
List<Group> Groups = new List<Group>();
List<Teacher> Teachers = new List<Teacher>();
public List<DisciplineGroupTeacher> dataSourceDisciplineGroupTeachers = new List<DisciplineGroupTeacher>();
public ObservableCollection<DisciplineGroupTeacher> DisciplineGroupTeachers = new ObservableCollection<DisciplineGroupTeacher>();
public AdminWindow()
{
InitializeComponent();
var ctx = new DatabaseContext();
Disciplines = ctx.Disciplines.ToList();
Groups = ctx.Groups.ToList();
Teachers = ctx.Teachers.ToList();
var disciplineTeachers = ctx.DisciplineTeachers.ToList();
foreach (DisciplineTeacher disciplineTeacher in disciplineTeachers)
{
var teacher = ctx.Teachers.FirstOrDefault(t => t.Id == disciplineTeacher.IdTeacher);
var discipline = ctx.Disciplines.FirstOrDefault(d => d.Id == disciplineTeacher.IdDiscipline);
var groups = ctx.Groups.Where(g => ctx.Attestations.Any(at => ctx.Students.Any(s => s.Id == at.IdUser && s.IdGroup == g.Id) && at.IdDiscipline == discipline.Id));
foreach (Group group in groups)
{
dataSourceDisciplineGroupTeachers.Add(new DisciplineGroupTeacher(){Teacher = teacher, Discipline = discipline, Group = group});
}
}
DisplayAll();
MultComboBox.ItemsSource = DisciplineGroupTeachers.Select(dg => dg.NameComboBox).ToList();
FlatGrid.ItemsSource = DisciplineGroupTeachers;
}
public void DisplayAll()
{
var ctx = new DatabaseContext();
var temp = dataSourceDisciplineGroupTeachers;
DisciplineGroupTeachers.Clear();
foreach (var item in temp)
{
DisciplineGroupTeachers.Add(item);
}
}
public void Display()
{
if (MultComboBox.SelectionBoxItem != null)
{
var selectedDiscGroupTeacher = DisciplineGroupTeachers.FirstOrDefault(dg => dg.NameComboBox == MultComboBox.SelectedItem.ToString());
var filteredData = DisciplineGroupTeachers.Where(dg => dg.Discipline.Name == selectedDiscGroupTeacher.Discipline.Name && dg.Group.Id == selectedDiscGroupTeacher.Group.Id && dg.Teacher.Fio == selectedDiscGroupTeacher.Teacher.Fio).ToList();
FlatGrid.ItemsSource = filteredData;
}
}
private void ButtonBack_OnClick(object? sender, RoutedEventArgs e)
{
Close();
}
private void ButtonCheck_OnClick(object? sender, RoutedEventArgs e)
{
Display();
}
private void ButtonCheckGroups_OnClick(object? sender, RoutedEventArgs e)
{
GroupsFromAdminWindow groupsFromAdminWindow = new GroupsFromAdminWindow();
groupsFromAdminWindow.ShowDialog(this);
}
private void ButtonCheckStudents_OnClick(object? sender, RoutedEventArgs e)
{
StudentsFromAdminWindow studentsFromAdminWindow = new StudentsFromAdminWindow();
studentsFromAdminWindow.ShowDialog(this);
}
private async void ButtonCheckTeachers_OnClick(object? sender, RoutedEventArgs e)
{
TeachersFromAdminWindow teachersFromAdminWindow = new TeachersFromAdminWindow();
var result = await teachersFromAdminWindow.ShowDialog<List<DisciplineGroupTeacher>>(this);
dataSourceDisciplineGroupTeachers.AddRange(result);
DisplayAll();
}
private void ButtonCheckDiscipline_OnClick(object? sender, RoutedEventArgs e)
{
AddDiscipline addDiscipline = new AddDiscipline();
addDiscipline.ShowDialog(this);
}
}