From fc2c07e7d0810642c08f7107d8ddff04d6a3cbff Mon Sep 17 00:00:00 2001 From: RomanKamen Date: Wed, 1 Apr 2026 14:02:09 +0500 Subject: [PATCH] ver 1.1 --- WpfApp1/WpfApp1/MainWindow.xaml.cs | 17 ++++- WpfApp1/WpfApp1/RecordWindow.xaml.cs | 56 +++++++++++----- WpfApp1/WpfApp1/ViewRecordsWindow.xaml | 35 ++++++++++ WpfApp1/WpfApp1/ViewRecordsWindow.xaml.cs | 81 +++++++++++++++++++++++ WpfApp1/WpfApp1/WpfApp1.csproj | 7 ++ 5 files changed, 179 insertions(+), 17 deletions(-) create mode 100644 WpfApp1/WpfApp1/ViewRecordsWindow.xaml create mode 100644 WpfApp1/WpfApp1/ViewRecordsWindow.xaml.cs diff --git a/WpfApp1/WpfApp1/MainWindow.xaml.cs b/WpfApp1/WpfApp1/MainWindow.xaml.cs index 48a1918..ab20c94 100644 --- a/WpfApp1/WpfApp1/MainWindow.xaml.cs +++ b/WpfApp1/WpfApp1/MainWindow.xaml.cs @@ -123,7 +123,6 @@ namespace WpfApp1 { if (_selectedClient == null) return; - // Адрес и Телефон _selectedClient.address = txtAddress.Text; _selectedClient.phoneNumber = txtPhone.Text; @@ -139,7 +138,6 @@ namespace WpfApp1 return; } - // Пример списка тренеров (обычно загружается из файла) List coaches = new List { new Coach { Surname="Ахматова В.А.", Speciality="Фитнес-ЙОГА" }, new Coach { Surname="Петров И.И.", Speciality="Силовой тренинг" } @@ -148,5 +146,20 @@ namespace WpfApp1 RecordWindow recordWin = new RecordWindow(_selectedClient, coaches); recordWin.ShowDialog(); } + + private void btnViewRecords_Click(object sender, RoutedEventArgs e) + { + if (ClientListBox.SelectedItem == null) + { + MessageBox.Show("Сначала выберите клиента в списке!", "Внимание", MessageBoxButton.OK, MessageBoxImage.Warning); + return; + } + + if (_selectedClient != null) + { + ViewRecordsWindow viewWin = new ViewRecordsWindow(_selectedClient); + viewWin.ShowDialog(); + } + } } } diff --git a/WpfApp1/WpfApp1/RecordWindow.xaml.cs b/WpfApp1/WpfApp1/RecordWindow.xaml.cs index f425189..5854676 100644 --- a/WpfApp1/WpfApp1/RecordWindow.xaml.cs +++ b/WpfApp1/WpfApp1/RecordWindow.xaml.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using System.IO; +using System.Text.Json; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; @@ -20,7 +22,7 @@ namespace WpfApp1 public partial class RecordWindow : Window { private Client _currentClient; - private List _allCoaches; // Список всех тренеров (загрузи его из файла или создай вручную) + private List _allCoaches; public RecordWindow(Client client, List coaches) { @@ -30,12 +32,10 @@ namespace WpfApp1 txtClientName.Text = $"{client.surname} {client.name}"; - // Заполняем специальности уникальными значениями cbSpeciality.ItemsSource = _allCoaches.Select(c => c.Speciality).Distinct().ToList(); dpDate.SelectedDate = DateTime.Now; } - // Фильтрация тренеров при выборе специальности private void cbSpeciality_SelectionChanged(object sender, SelectionChangedEventArgs e) { string selectedSpec = cbSpeciality.SelectedItem as string; @@ -44,25 +44,51 @@ namespace WpfApp1 private void btnSaveRecord_Click(object sender, RoutedEventArgs e) { - if (cbCoach.SelectedItem == null || dpDate.SelectedDate == null) + if (cbCoach.SelectedItem == null || dpDate.SelectedDate == null || string.IsNullOrWhiteSpace(txtTime.Text)) { - MessageBox.Show("Выберите тренера и дату!"); + MessageBox.Show("Заполните все поля записи!"); return; } - // Создаем объект записи - Entry newEntry = new Entry + try { - Client = _currentClient, - Coach = (Coach)cbCoach.SelectedItem, - DateEntry = dpDate.SelectedDate.Value, - TimeRecord = DateTime.Parse(txtTime.Text) // Упрощенно для примера - }; + // 1. Создаем новый экземпляр записи + Entry newEntry = new Entry + { + Client = _currentClient, + Coach = (Coach)cbCoach.SelectedItem, + DateEntry = dpDate.SelectedDate.Value, + TimeRecord = DateTime.Parse(txtTime.Text) + }; - // Тут добавь логику сохранения Entry в твой глобальный List или файл + + string filePath = "entries.json"; + List allEntries; - MessageBox.Show("Запись успешно создана!"); - this.Close(); // Возврат на главную форму + if (File.Exists(filePath)) + { + string existingJson = File.ReadAllText(filePath); + allEntries = JsonSerializer.Deserialize>(existingJson) ?? new List(); + } + else + { + allEntries = new List(); + } + + allEntries.Add(newEntry); + + + string updatedJson = JsonSerializer.Serialize(allEntries, new JsonSerializerOptions { WriteIndented = true }); + File.WriteAllText(filePath, updatedJson); + + MessageBox.Show("Запись успешно создана и сохранена!"); + this.DialogResult = true; + this.Close(); + } + catch (Exception ex) + { + MessageBox.Show($"Ошибка при сохранении: {ex.Message}"); + } } } } diff --git a/WpfApp1/WpfApp1/ViewRecordsWindow.xaml b/WpfApp1/WpfApp1/ViewRecordsWindow.xaml new file mode 100644 index 0000000..78357a1 --- /dev/null +++ b/WpfApp1/WpfApp1/ViewRecordsWindow.xaml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + +