From caccb77fe00c02bf693cbfda0f609a783bf2ecb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=B0=E3=83=AC=E3=82=B4=E3=83=AA=E3=83=BC=20=2E?= Date: Fri, 3 Apr 2026 23:11:38 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0=D1=82?= =?UTF-8?q?=D1=8C=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D0=B5=D0=B9=20=D0=BA=D0=BB=D0=B8?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D0=BE=D0=B2=20=D0=B2=20=D0=BA=D0=BB=D0=B0?= =?UTF-8?q?=D1=81=D1=81=D0=B5=20AppointmentWindow.xaml.cs=20=D0=A0=D0=B5?= =?UTF-8?q?=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D1=81=D0=BC=D0=BE=D1=82=D1=80=20=D1=81=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D0=BA=D0=B0=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D0=B5=D0=B9?= =?UTF-8?q?=20=D1=83=20=D0=BA=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UP01Task2App/UP01Task2App/Models/Trainer.cs | 8 +++ .../UP01Task2App/Services/JsonService.cs | 39 ++++++++++++ .../UP01Task2App/Services/ValidationHelper.cs | 5 ++ .../Windows/AppointmentWindow.xaml | 14 ++--- .../Windows/AppointmentWindow.xaml.cs | 59 ++++++++++++++++++- .../UP01Task2App/Windows/ClientWindow.xaml | 4 +- .../UP01Task2App/Windows/ClientWindow.xaml.cs | 18 ++++++ 7 files changed, 137 insertions(+), 10 deletions(-) diff --git a/UP01Task2App/UP01Task2App/Models/Trainer.cs b/UP01Task2App/UP01Task2App/Models/Trainer.cs index a3fa35b..4f564a6 100644 --- a/UP01Task2App/UP01Task2App/Models/Trainer.cs +++ b/UP01Task2App/UP01Task2App/Models/Trainer.cs @@ -10,5 +10,13 @@ namespace UP01Task2App.Models public string Name { get; set; } public string Patronymic { get; set; } public string Speciality { get; set; } + + public string ShortName + { + get + { + return $"{Surmname} {Name[0]}.{Patronymic[0]}."; + } + } } } diff --git a/UP01Task2App/UP01Task2App/Services/JsonService.cs b/UP01Task2App/UP01Task2App/Services/JsonService.cs index f426a7e..7e49c9f 100644 --- a/UP01Task2App/UP01Task2App/Services/JsonService.cs +++ b/UP01Task2App/UP01Task2App/Services/JsonService.cs @@ -67,5 +67,44 @@ namespace UP01Task2App.Services public void SaveTrainerDataToJson(List trainersList) => SaveToJson(trainerPath, trainersList); public void SaveClientDataToJson(List clientsList) => SaveToJson(clientPath, clientsList); public void SaveRecordDataToJson(List recordsList) => SaveToJson(recordPath, recordsList); + +#if DEBUG + private void CreateTrainersJson() + { + Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); + + string text = File.ReadAllText("asd.txt", Encoding.GetEncoding(1251)); + + List trList = new(); + + foreach (var line in text.Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries)) + { + var parts = line.Split(' ', StringSplitOptions.RemoveEmptyEntries); + + trList.Add(new Trainer + { + Surmname = parts[0], + Name = parts[1], + Patronymic = parts[2], + Speciality = string.Join(" ", parts.Skip(3)) + }); + } + + var options = new JsonSerializerOptions + { + WriteIndented = true + }; + + string json = JsonSerializer.Serialize(trList, options); + + MessageBox.Show(json); + + string path = "data/trainers.json"; + + Directory.CreateDirectory(System.IO.Path.GetDirectoryName(path)!); + + File.WriteAllText(path, json, Encoding.UTF8); + } +#endif } } diff --git a/UP01Task2App/UP01Task2App/Services/ValidationHelper.cs b/UP01Task2App/UP01Task2App/Services/ValidationHelper.cs index a727289..26d3949 100644 --- a/UP01Task2App/UP01Task2App/Services/ValidationHelper.cs +++ b/UP01Task2App/UP01Task2App/Services/ValidationHelper.cs @@ -56,5 +56,10 @@ namespace UP01Task2App.Services if (!Regex.IsMatch(obj.Text.Trim(), pattern)) throw new ArgumentException($"Номер телефона в поле \"{fieldName}\" имеет неверный формат \nВерный формат: +79999999999 или 79999999999"); } + public static void ValidateNotNullComboBox(ComboBox obj, string fieldName) + { + if (obj.SelectedValue == null) + throw new ArgumentException($"Выберите значение в поле \"{fieldName}\""); + } } } \ No newline at end of file diff --git a/UP01Task2App/UP01Task2App/Windows/AppointmentWindow.xaml b/UP01Task2App/UP01Task2App/Windows/AppointmentWindow.xaml index ffd3a19..1b7558c 100644 --- a/UP01Task2App/UP01Task2App/Windows/AppointmentWindow.xaml +++ b/UP01Task2App/UP01Task2App/Windows/AppointmentWindow.xaml @@ -13,13 +13,14 @@ - + - @@ -27,10 +28,9 @@ Style="{StaticResource DatePickerStyle}"/>