using System; using System.Collections.Generic; using System.Linq; using Avalonia; using Avalonia.Controls; using Avalonia.Interactivity; using Avalonia.Markup.Xaml; using demko_term.Models; namespace demko_term; public partial class AcceptStatementWindow : Window { public List AcceptApplicantList { get; } public List AcceptSpecialtyList { get; } public AcceptStatementWindow() { using var context = new DemoCourseworkContext(); InitializeComponent(); AcceptApplicantList = context.Applicants.Select(a => a.Code.ToString()).ToList(); AcceptApplicantComboBox.ItemsSource = AcceptApplicantList; AcceptSpecialtyList = context.Specialties.Select(s => s.Code).ToList(); AcceptSpecialtyListBox.ItemsSource = AcceptSpecialtyList; } private void AcceptStatementButton_OnClick(object? sender, RoutedEventArgs e) { using var context = new DemoCourseworkContext(); if (AcceptApplicantComboBox.SelectedItem == null || AcceptSpecialtyListBox.SelectedItems == null) { return; } string selectedApplicantCodeStr = AcceptApplicantComboBox.SelectedItem.ToString()!; var applicant = context.Applicants.FirstOrDefault(a => a.Code.ToString() == selectedApplicantCodeStr); if (applicant == null) { return; } int? points = null; if (int.TryParse(PointsTextBox.Text, out int parsedPoints)) { points = parsedPoints; } foreach (var selectedSpecialtyCode in AcceptSpecialtyListBox.SelectedItems.Cast()) { var specialty = context.Specialties.FirstOrDefault(s => s.Code == selectedSpecialtyCode); if (specialty == null) continue; string personalNumber = $"{specialty.Code}-{applicant.Code}"; var statement = new Statement { PersonalNumber = personalNumber, SubmissionDate = DateOnly.FromDateTime(DateTime.Now), SubmissionTime = TimeOnly.FromDateTime(DateTime.Now), ApplicantCode = applicant.Id, ApplicantSpeciality = specialty.Id, Passport = PassportCheckBox.IsChecked, Diploma = DiplomaCheckBox.IsChecked, Points = points }; context.Statements.Add(statement); } context.SaveChanges(); } private void CreateApplicantWindowButton_OnClick(object? sender, RoutedEventArgs e) { CreateApplicantWindow ordersWindow = new CreateApplicantWindow(); ordersWindow.ShowDialog(this); } }