diff --git a/UP01Task2App/UP01Task2App/Models/Client.cs b/UP01Task2App/UP01Task2App/Models/Client.cs index aaeaf9f..2b8f8ae 100644 --- a/UP01Task2App/UP01Task2App/Models/Client.cs +++ b/UP01Task2App/UP01Task2App/Models/Client.cs @@ -15,6 +15,14 @@ namespace UP01Task2App.Models public int SubscriptionNumber { get; set; } public string Gender { get; set; } + public string ShortName + { + get + { + return $"{Surname} {Name[0]}.{Patronymic[0]}."; + } + } + public override string ToString() { return Surname + " " + Name + " " + Patronymic; diff --git a/UP01Task2App/UP01Task2App/Models/Record.cs b/UP01Task2App/UP01Task2App/Models/Record.cs index 51625b8..af97aad 100644 --- a/UP01Task2App/UP01Task2App/Models/Record.cs +++ b/UP01Task2App/UP01Task2App/Models/Record.cs @@ -8,7 +8,15 @@ namespace UP01Task2App.Models { public Client Client { get; set; } public Trainer Trainer { get; set; } - DateOnly RecordDate { set; get; } - TimeOnly RecordTime { set; get; } + public DateOnly RecordDate { set; get; } + public TimeOnly RecordTime { set; get; } + + public string RecordInfo + { + get + { + return RecordDate.ToString() + " в " + RecordTime.ToString() + ", " + Trainer.Speciality + ", " + Trainer.ShortName; + } + } } } diff --git a/UP01Task2App/UP01Task2App/Services/JsonService.cs b/UP01Task2App/UP01Task2App/Services/JsonService.cs index 7e49c9f..6efdbc8 100644 --- a/UP01Task2App/UP01Task2App/Services/JsonService.cs +++ b/UP01Task2App/UP01Task2App/Services/JsonService.cs @@ -69,7 +69,7 @@ namespace UP01Task2App.Services public void SaveRecordDataToJson(List recordsList) => SaveToJson(recordPath, recordsList); #if DEBUG - private void CreateTrainersJson() + public void CreateTrainersJson() { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); diff --git a/UP01Task2App/UP01Task2App/Services/ValidationHelper.cs b/UP01Task2App/UP01Task2App/Services/ValidationHelper.cs index 26d3949..7a60a82 100644 --- a/UP01Task2App/UP01Task2App/Services/ValidationHelper.cs +++ b/UP01Task2App/UP01Task2App/Services/ValidationHelper.cs @@ -4,6 +4,7 @@ using System.Text; using System.Text.RegularExpressions; using System.Windows; using System.Windows.Controls; +using UP01Task2App.Models; namespace UP01Task2App.Services { @@ -27,6 +28,11 @@ namespace UP01Task2App.Services if (obj.SelectedDate > DateTime.Now) throw new ArgumentException($"В поле \"{fieldName}\" выбранная дата не может быть в будущем"); } + public static void ValidateDateNotInThePastTextBox(DatePicker obj, string fieldName) + { + if (obj.SelectedDate < DateTime.Now.Date) + throw new ArgumentException($"В поле \"{fieldName}\" выбранная дата не может быть в прошлом"); + } public static void CheckBirthdate(DatePicker obj) { if (obj.SelectedDate > DateTime.Today.AddYears(-14)) @@ -49,6 +55,13 @@ namespace UP01Task2App.Services if (!Regex.IsMatch(obj.Text.Trim(), pattern)) throw new ArgumentException($"Надпись в поле \"{fieldName}\" имеет неверный формат \nВерный формат: Фамилия"); } + public static void ValidateTime(TextBox obj) + { + string pattern = @"^([01]\d|2[0-3]):[0-5]\d$"; + + if (!Regex.IsMatch(obj.Text.Trim(), pattern)) + throw new ArgumentException($"Время введено в неверном формате, верный формат: hh:mm"); + } public static void ValidatePhoneNumber(TextBox obj, string fieldName) { string pattern = @"^(7|8)\d{10}$"; @@ -61,5 +74,22 @@ namespace UP01Task2App.Services if (obj.SelectedValue == null) throw new ArgumentException($"Выберите значение в поле \"{fieldName}\""); } + public static void ValidateEightDigitLenght(TextBox obj, string fieldName) + { + if (obj.Text.Trim().Length != 8) + throw new ArgumentException($"Допустимая длинна значения поля \"{fieldName}\" 8 символов"); + } + public static void ValibateClientIdentity(List ClientsList, TextBox obj) + { + int subscriptionNumber = int.Parse(obj.Text); + + if (ClientsList.Where(a => a.SubscriptionNumber == subscriptionNumber) != null) + throw new ArgumentException($"Клииент с таким номером абонемента уже существует"); + } + public static void ValidateTimeNotInPast(TimeOnly time) + { + if (time < TimeOnly.FromDateTime(DateTime.Now)) + throw new ArgumentException($"Время не может быть в прошлом"); + } } } \ No newline at end of file diff --git a/UP01Task2App/UP01Task2App/Windows/AppointmentWindow.xaml b/UP01Task2App/UP01Task2App/Windows/AppointmentWindow.xaml index 1b7558c..e8dc040 100644 --- a/UP01Task2App/UP01Task2App/Windows/AppointmentWindow.xaml +++ b/UP01Task2App/UP01Task2App/Windows/AppointmentWindow.xaml @@ -10,7 +10,7 @@ - + - + + +