diff --git a/AddTeacher.axaml.cs b/AddTeacher.axaml.cs index 03e0560..6c19413 100644 --- a/AddTeacher.axaml.cs +++ b/AddTeacher.axaml.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Linq; using Avalonia; @@ -5,6 +6,7 @@ using Avalonia.Controls; using Avalonia.Interactivity; using Avalonia.Markup.Xaml; using kursovaya.Models; +using kursovaya.ModelsLocal; namespace kursovaya; @@ -14,6 +16,7 @@ public partial class AddTeacher : Window Teacher _teacher = new Teacher(); List _teachers = new List(); + List _disciplineGroupTeachers = new List(); public AddTeacher() { InitializeComponent(); @@ -54,9 +57,40 @@ public partial class AddTeacher : Window foreach (var item in selectedItems) { + var studentsId = ctx.Attestations.Where(it => it.IdDiscipline == item.Discipline.Id).Select(it => it.IdUser).ToList(); + foreach (var id in studentsId) + { + var groupId = ctx.Students + .Where(s => s.Id == id) + .Select(s => s.IdGroup) + .FirstOrDefault(); + + var group = ctx.Groups.FirstOrDefault(g => g.Id == groupId); + + bool alreadyExists = _disciplineGroupTeachers.Any(dgt => + dgt.Group.Id == group.Id && + dgt.Discipline.Id == item.Discipline.Id && + dgt.Teacher.Id == _teacher.Id); + + if (!alreadyExists) + { + _disciplineGroupTeachers.Add(new DisciplineGroupTeacher() + { + Group = group, + Teacher = _teacher, + Discipline = item.Discipline + }); + } + } + var disc_teach = new DisciplineTeacher() { IdDiscipline = item.Discipline.Id, IdTeacher = lastTeacherId+1 }; ctx.DisciplineTeachers.Add(disc_teach); } + + foreach (var item in _disciplineGroupTeachers) + { + Console.WriteLine($"Discipline: {item.Discipline.Name} Teacher: {item.Teacher.Fio} Group: {item.Group.Id}"); + } var changes = ctx.SaveChanges(); @@ -77,7 +111,9 @@ public partial class AddTeacher : Window private void ButtonBack_OnClick(object? sender, RoutedEventArgs e) { - Close(_teachers); + Result res = new Result(){Teachers = _teachers, DisciplineGroupTeachers = _disciplineGroupTeachers}; + + Close(res); } public class DisciplinePresenter() diff --git a/AdminWindow.axaml.cs b/AdminWindow.axaml.cs index ff50e9a..dfca7e3 100644 --- a/AdminWindow.axaml.cs +++ b/AdminWindow.axaml.cs @@ -7,6 +7,7 @@ using Avalonia.Controls; using Avalonia.Interactivity; using Avalonia.Markup.Xaml; using kursovaya.Models; +using kursovaya.ModelsLocal; namespace kursovaya; @@ -15,7 +16,9 @@ public partial class AdminWindow : Window List Disciplines = new List(); List Groups = new List(); List Teachers = new List(); - ObservableCollection DisciplineGroupTeachers = new ObservableCollection(); + + public List dataSourceDisciplineGroupTeachers = new List(); + public ObservableCollection DisciplineGroupTeachers = new ObservableCollection(); public AdminWindow() { InitializeComponent(); @@ -35,38 +38,25 @@ public partial class AdminWindow : Window 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) { - DisciplineGroupTeachers.Add(new DisciplineGroupTeacher(){Teacher = teacher, Discipline = discipline, Group = group}); + dataSourceDisciplineGroupTeachers.Add(new DisciplineGroupTeacher(){Teacher = teacher, Discipline = discipline, Group = group}); } } + DisplayAll(); + MultComboBox.ItemsSource = DisciplineGroupTeachers.Select(dg => dg.NameComboBox).ToList(); FlatGrid.ItemsSource = DisciplineGroupTeachers; - } - - public class DisciplineGroupTeacher() + + public void DisplayAll() { - public Group Group { get; set; } - public Discipline Discipline { get; set; } - public Teacher Teacher { get; set; } - public string DisciplineName + var ctx = new DatabaseContext(); + var temp = dataSourceDisciplineGroupTeachers; + DisciplineGroupTeachers.Clear(); + + foreach (var item in temp) { - get => Discipline.Name; - } - public int GroupId - { - get => Group.Id; - } - public string TeacherFio - { - get => Teacher.Fio; - } - public string NameComboBox - { - get - { - return $"{Discipline.Name} - {Group.Id} - {Teacher.Fio}"; - } + DisciplineGroupTeachers.Add(item); } } @@ -104,15 +94,11 @@ public partial class AdminWindow : Window private async void ButtonCheckTeachers_OnClick(object? sender, RoutedEventArgs e) { - // TeachersFromAdminWindow teachersFromAdminWindow = new TeachersFromAdminWindow(); - // teachersFromAdminWindow.ShowDialog(this); - TeachersFromAdminWindow teachersFromAdminWindow = new TeachersFromAdminWindow(); - var result = await teachersFromAdminWindow.ShowDialog(this); - if (result == true) - { - Display(); - } + var result = await teachersFromAdminWindow.ShowDialog>(this); + + dataSourceDisciplineGroupTeachers.AddRange(result); + DisplayAll(); } private void ButtonCheckDiscipline_OnClick(object? sender, RoutedEventArgs e) diff --git a/ModelsLocal/DisciplineGroupTeacher.cs b/ModelsLocal/DisciplineGroupTeacher.cs new file mode 100644 index 0000000..a6b217b --- /dev/null +++ b/ModelsLocal/DisciplineGroupTeacher.cs @@ -0,0 +1,30 @@ +using kursovaya.Models; + +namespace kursovaya.ModelsLocal; + +public class DisciplineGroupTeacher() +{ + public Group Group { get; set; } + public Discipline Discipline { get; set; } + public Teacher Teacher { get; set; } + + public string DisciplineName + { + get => Discipline.Name; + } + + public int GroupId + { + get => Group.Id; + } + + public string TeacherFio + { + get => Teacher.Fio; + } + + public string NameComboBox + { + get { return $"{Discipline.Name} - {Group.Id} - {Teacher.Fio}"; } + } +} \ No newline at end of file diff --git a/ModelsLocal/Result.cs b/ModelsLocal/Result.cs new file mode 100644 index 0000000..c1d8799 --- /dev/null +++ b/ModelsLocal/Result.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; +using kursovaya.Models; + +namespace kursovaya.ModelsLocal; + +public class Result() +{ + public List Teachers { get; set; } + public List DisciplineGroupTeachers { get; set; } +} \ No newline at end of file diff --git a/TeachersFromAdminWindow.axaml.cs b/TeachersFromAdminWindow.axaml.cs index 6f525d9..d81f04e 100644 --- a/TeachersFromAdminWindow.axaml.cs +++ b/TeachersFromAdminWindow.axaml.cs @@ -6,6 +6,7 @@ using Avalonia.Controls; using Avalonia.Interactivity; using Avalonia.Markup.Xaml; using kursovaya.Models; +using kursovaya.ModelsLocal; namespace kursovaya; @@ -13,7 +14,7 @@ public partial class TeachersFromAdminWindow : Window { public List dataSourceTeachers = new List(); public ObservableCollection Teachers = new ObservableCollection(); - List _addedTeachers = new List(); + Result result = new Result(); public TeachersFromAdminWindow() { InitializeComponent(); @@ -27,14 +28,7 @@ public partial class TeachersFromAdminWindow : Window private void ButtonBack_OnClick(object? sender, RoutedEventArgs e) { - if (_addedTeachers == null || _addedTeachers.Count == 0) - { - Close(true); - } - else - { - Close(false); - } + Close(result.DisciplineGroupTeachers); } public void DisplayTeachers() @@ -52,12 +46,12 @@ public partial class TeachersFromAdminWindow : Window private async void ButtonAddTeacher_OnClick(object? sender, RoutedEventArgs e) { AddTeacher addTeacher = new AddTeacher(); - _addedTeachers = await addTeacher.ShowDialog>(this); - if (_addedTeachers == null || _addedTeachers.Count == 0) + result = await addTeacher.ShowDialog(this); + if (result.Teachers == null || result.Teachers.Count == 0) { return; } - dataSourceTeachers.AddRange(_addedTeachers); + dataSourceTeachers.AddRange(result.Teachers); DisplayTeachers(); } } \ No newline at end of file diff --git a/bin/Debug/net8.0/kursovaya.dll b/bin/Debug/net8.0/kursovaya.dll index 51ce0b9..a1cb6fa 100644 Binary files a/bin/Debug/net8.0/kursovaya.dll and b/bin/Debug/net8.0/kursovaya.dll differ diff --git a/bin/Debug/net8.0/kursovaya.pdb b/bin/Debug/net8.0/kursovaya.pdb index db0977a..de98d43 100644 Binary files a/bin/Debug/net8.0/kursovaya.pdb and b/bin/Debug/net8.0/kursovaya.pdb differ diff --git a/obj/Debug/net8.0/Avalonia/Resources.Inputs.cache b/obj/Debug/net8.0/Avalonia/Resources.Inputs.cache index a230185..4c38b1a 100644 --- a/obj/Debug/net8.0/Avalonia/Resources.Inputs.cache +++ b/obj/Debug/net8.0/Avalonia/Resources.Inputs.cache @@ -1 +1 @@ -f0de6e47f368c7d2b430389bae7c7fda5f65514e38af332e1f0fd91696366f73 +4a653792709c12e18c09bc6f0460d9f61d1fd7d180a73a62ac47c42063efe969 diff --git a/obj/Debug/net8.0/Avalonia/kursovaya.dll b/obj/Debug/net8.0/Avalonia/kursovaya.dll index 51ce0b9..a1cb6fa 100644 Binary files a/obj/Debug/net8.0/Avalonia/kursovaya.dll and b/obj/Debug/net8.0/Avalonia/kursovaya.dll differ diff --git a/obj/Debug/net8.0/Avalonia/kursovaya.pdb b/obj/Debug/net8.0/Avalonia/kursovaya.pdb index db0977a..de98d43 100644 Binary files a/obj/Debug/net8.0/Avalonia/kursovaya.pdb and b/obj/Debug/net8.0/Avalonia/kursovaya.pdb differ diff --git a/obj/Debug/net8.0/Avalonia/resources b/obj/Debug/net8.0/Avalonia/resources index 505bf81..05123d8 100644 Binary files a/obj/Debug/net8.0/Avalonia/resources and b/obj/Debug/net8.0/Avalonia/resources differ diff --git a/obj/Debug/net8.0/kursovaya.AssemblyInfo.cs b/obj/Debug/net8.0/kursovaya.AssemblyInfo.cs index b067083..7ab186c 100644 --- a/obj/Debug/net8.0/kursovaya.AssemblyInfo.cs +++ b/obj/Debug/net8.0/kursovaya.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("kursovaya")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c5083481c68ef5cc39a2cfcc445063f2773e3a9f")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d7abb5ffd689ebecb45a3eaa84e87dfd90e6d9f7")] [assembly: System.Reflection.AssemblyProductAttribute("kursovaya")] [assembly: System.Reflection.AssemblyTitleAttribute("kursovaya")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/obj/Debug/net8.0/kursovaya.AssemblyInfoInputs.cache b/obj/Debug/net8.0/kursovaya.AssemblyInfoInputs.cache index 0841054..bedfe59 100644 --- a/obj/Debug/net8.0/kursovaya.AssemblyInfoInputs.cache +++ b/obj/Debug/net8.0/kursovaya.AssemblyInfoInputs.cache @@ -1 +1 @@ -63629f52d026f6c617a2e1d2be3f8b814551f6d1d0a2981d0c3782f8ad0ba5ad +56b533d6bc40151d11e8da76022af04036771e41ff8ddd0fbff74168ace28e08 diff --git a/obj/Debug/net8.0/kursovaya.csproj.CoreCompileInputs.cache b/obj/Debug/net8.0/kursovaya.csproj.CoreCompileInputs.cache index c702731..32cdfee 100644 --- a/obj/Debug/net8.0/kursovaya.csproj.CoreCompileInputs.cache +++ b/obj/Debug/net8.0/kursovaya.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -71f8c7885cc41c61509dddd287b6e947d22d2d15c24d98b288e9f7c66559ec2e +c5932addac0a6bc3a167df371d96f37e6eca09a500d93ddafd26cb087e00fdef diff --git a/obj/Debug/net8.0/kursovaya.dll b/obj/Debug/net8.0/kursovaya.dll index cbc1116..d4701cf 100644 Binary files a/obj/Debug/net8.0/kursovaya.dll and b/obj/Debug/net8.0/kursovaya.dll differ diff --git a/obj/Debug/net8.0/kursovaya.pdb b/obj/Debug/net8.0/kursovaya.pdb index bc68048..9392706 100644 Binary files a/obj/Debug/net8.0/kursovaya.pdb and b/obj/Debug/net8.0/kursovaya.pdb differ diff --git a/obj/Debug/net8.0/ref/kursovaya.dll b/obj/Debug/net8.0/ref/kursovaya.dll index 1d790ae..95a46eb 100644 Binary files a/obj/Debug/net8.0/ref/kursovaya.dll and b/obj/Debug/net8.0/ref/kursovaya.dll differ diff --git a/obj/Debug/net8.0/refint/Avalonia/kursovaya.dll b/obj/Debug/net8.0/refint/Avalonia/kursovaya.dll index 1d790ae..95a46eb 100644 Binary files a/obj/Debug/net8.0/refint/Avalonia/kursovaya.dll and b/obj/Debug/net8.0/refint/Avalonia/kursovaya.dll differ diff --git a/obj/Debug/net8.0/refint/kursovaya.dll b/obj/Debug/net8.0/refint/kursovaya.dll index 8db2287..76471aa 100644 Binary files a/obj/Debug/net8.0/refint/kursovaya.dll and b/obj/Debug/net8.0/refint/kursovaya.dll differ