85 lines
3.0 KiB
C#
85 lines
3.0 KiB
C#
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using Avalonia;
|
||
using Avalonia.Controls;
|
||
using Avalonia.Interactivity;
|
||
using Avalonia.Markup.Xaml;
|
||
using kursovaya.Models;
|
||
|
||
namespace kursovaya;
|
||
|
||
public partial class AddDiscipline : Window
|
||
{
|
||
List<Group> _groups = new List<Group>();
|
||
List<FormAttest> _formAttests = new List<FormAttest>();
|
||
List<Student> _students = new List<Student>();
|
||
Discipline _discipline = new Discipline();
|
||
Attestation _attestation = new Attestation();
|
||
CalculateGrade calculateGrade = new CalculateGrade();
|
||
public AddDiscipline()
|
||
{
|
||
InitializeComponent();
|
||
using var ctx = new DatabaseContext();
|
||
|
||
_groups = ctx.Groups.ToList();
|
||
_formAttests = ctx.FormAttests.ToList();
|
||
_students = ctx.Students.ToList();
|
||
|
||
ListBoxGroups.ItemsSource = _groups.Select(it => it.Id);
|
||
FormAttestComboBox.ItemsSource = _formAttests.Select(g => g.Name).ToList();
|
||
}
|
||
|
||
private void ButtonAdd_OnClick(object? sender, RoutedEventArgs e)
|
||
{
|
||
if (FormAttestComboBox.SelectedItem == null ||
|
||
ListBoxGroups.SelectedItems == null ||
|
||
ListBoxGroups.SelectedItems.Count == 0 ||
|
||
string.IsNullOrWhiteSpace(DisciplineNameTextBox?.Text))
|
||
{
|
||
ErrorMessage.Text = "Поля не должны быть пустыми!";
|
||
return;
|
||
}
|
||
|
||
var ctx = new DatabaseContext();
|
||
|
||
var disciplineName = DisciplineNameTextBox.Text;
|
||
var selectedGroupIds = ListBoxGroups.SelectedItems.Cast<int>();
|
||
var selectedFormAttestId = ctx.FormAttests.FirstOrDefault(f => f.Name == FormAttestComboBox.SelectedItem.ToString()).Id;
|
||
|
||
int lastDisciplineId = ctx.Disciplines.Max(u => u.Id);
|
||
|
||
_discipline = new Discipline(){ Id = lastDisciplineId + 1, Name = disciplineName, IdFormAttest = selectedFormAttestId };
|
||
ctx.Disciplines.Add(_discipline);
|
||
|
||
foreach (var groupId in selectedGroupIds)
|
||
{
|
||
_students = ctx.Students.Where(s => s.IdGroup == groupId).ToList();
|
||
foreach (var student in _students)
|
||
{
|
||
_attestation = new Attestation(){ IdUser = student.Id, IdDiscipline = lastDisciplineId+1, AttestFirst = 0, AttestSecond = 0, AttestThird = 0, Total = 0, Grade = calculateGrade.CalculateGradeMethod(0, selectedFormAttestId)};
|
||
ctx.Attestations.Add(_attestation);
|
||
}
|
||
}
|
||
|
||
var changes = ctx.SaveChanges();
|
||
|
||
if (changes > 0)
|
||
{
|
||
SuccessMessage.Text = "дисциплина успешно добавлена!";
|
||
if (ErrorMessage != null)
|
||
{
|
||
ErrorMessage.Text = "";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
ErrorMessage.Text = "Не удалось добавить дисциплину.";
|
||
SuccessMessage.Text = "";
|
||
}
|
||
}
|
||
|
||
private void ButtonBack_OnClick(object? sender, RoutedEventArgs e)
|
||
{
|
||
Close();
|
||
}
|
||
} |