diff --git a/UP01Task2App/UP01Task2App/Models/Client.cs b/UP01Task2App/UP01Task2App/Models/Client.cs
index 81ad5ed..aaeaf9f 100644
--- a/UP01Task2App/UP01Task2App/Models/Client.cs
+++ b/UP01Task2App/UP01Task2App/Models/Client.cs
@@ -13,6 +13,7 @@ namespace UP01Task2App.Models
public string Adress { get; set; }
public string PhoneNumber { get; set; }
public int SubscriptionNumber { get; set; }
+ public string Gender { get; set; }
public override string ToString()
{
diff --git a/UP01Task2App/UP01Task2App/Services/ValidationHelper.cs b/UP01Task2App/UP01Task2App/Services/ValidationHelper.cs
index dba71c7..a727289 100644
--- a/UP01Task2App/UP01Task2App/Services/ValidationHelper.cs
+++ b/UP01Task2App/UP01Task2App/Services/ValidationHelper.cs
@@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;
using System.Text;
+using System.Text.RegularExpressions;
+using System.Windows;
using System.Windows.Controls;
namespace UP01Task2App.Services
@@ -25,6 +27,11 @@ namespace UP01Task2App.Services
if (obj.SelectedDate > DateTime.Now)
throw new ArgumentException($"В поле \"{fieldName}\" выбранная дата не может быть в будущем");
}
+ public static void CheckBirthdate(DatePicker obj)
+ {
+ if (obj.SelectedDate > DateTime.Today.AddYears(-14))
+ throw new ArgumentException($"клиент не может быть младше 14 лет");
+ }
public static void ValidateNotNullDatePicker(DatePicker obj, string fieldName)
{
if (obj.SelectedDate == null)
@@ -35,5 +42,19 @@ namespace UP01Task2App.Services
if (!int.TryParse(obj.Text, out int _))
throw new ArgumentException($"Введенное число в \"{fieldName}\" слишком большое или маленькое");
}
+ public static void ValidateCorrectlyFullName(TextBox obj, string fieldName)
+ {
+ string pattern = @"^[А-ЯЁ][а-яё]+$";
+
+ if (!Regex.IsMatch(obj.Text.Trim(), pattern))
+ throw new ArgumentException($"Надпись в поле \"{fieldName}\" имеет неверный формат \nВерный формат: Фамилия");
+ }
+ public static void ValidatePhoneNumber(TextBox obj, string fieldName)
+ {
+ string pattern = @"^(7|8)\d{10}$";
+
+ if (!Regex.IsMatch(obj.Text.Trim(), pattern))
+ throw new ArgumentException($"Номер телефона в поле \"{fieldName}\" имеет неверный формат \nВерный формат: +79999999999 или 79999999999");
+ }
}
}
\ No newline at end of file
diff --git a/UP01Task2App/UP01Task2App/Windows/ClientWindow.xaml b/UP01Task2App/UP01Task2App/Windows/ClientWindow.xaml
index 41d504c..6cdf076 100644
--- a/UP01Task2App/UP01Task2App/Windows/ClientWindow.xaml
+++ b/UP01Task2App/UP01Task2App/Windows/ClientWindow.xaml
@@ -48,7 +48,8 @@
+ Name="ClientsListBox"
+ Height="250" SelectionChanged="ListBox_SelectionChanged"/>
@@ -59,7 +60,8 @@
+ ToolTip="Изменить можно только адрес и номер телефона клиента"
+ Margin="10" Click="Button_Click_1"/>
diff --git a/UP01Task2App/UP01Task2App/Windows/ClientWindow.xaml.cs b/UP01Task2App/UP01Task2App/Windows/ClientWindow.xaml.cs
index 3733bfd..ee62107 100644
--- a/UP01Task2App/UP01Task2App/Windows/ClientWindow.xaml.cs
+++ b/UP01Task2App/UP01Task2App/Windows/ClientWindow.xaml.cs
@@ -55,13 +55,18 @@ namespace UP01Task2App.Windows
try
{
ValidationHelper.ValidateNotNullTextBox(SurnameTextBox, "Фамилия");
+ ValidationHelper.ValidateCorrectlyFullName(SurnameTextBox, "Фамилия");
ValidationHelper.ValidateNotNullTextBox(NameTextBox, "Имя");
+ ValidationHelper.ValidateCorrectlyFullName(NameTextBox, "Имя");
ValidationHelper.ValidateNotNullTextBox(PatronymicTextBox, "Отчество");
+ ValidationHelper.ValidateCorrectlyFullName(PatronymicTextBox, "Отчество");
ValidationHelper.ValidateNotNullDatePicker(BirthDateDatePicker, "Дата рождения");
ValidationHelper.ValidateDateNotInFutureTextBox(BirthDateDatePicker, "Дата рождения");
+ ValidationHelper.CheckBirthdate(BirthDateDatePicker);
ValidationHelper.ValidateNotNullTextBox(AdressTextBox, "Фактический адрес");
ValidationHelper.ValidateNotNullTextBox(PhoneNumberTextBox, "Телефон");
ValidationHelper.ValidateNumTextBox(PhoneNumberTextBox, "Телефон");
+ ValidationHelper.ValidatePhoneNumber(PhoneNumberTextBox, "Телефон");
ValidationHelper.ValidateNotNullTextBox(SubscriptionMumberTextBox, "Номер абонемента");
ValidationHelper.ValidateNumTextBox(SubscriptionMumberTextBox, "Номер абонемента");
ValidationHelper.ValidateIntRangeTextBox(SubscriptionMumberTextBox, "Номер абонемента");
@@ -108,5 +113,63 @@ namespace UP01Task2App.Windows
UpdateClientUI();
}
}
+
+ private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ try
+ {
+ if (ClientsUI[ClientsListBox.SelectedIndex] == null)
+ return;
+
+ var client = ClientsUI[ClientsListBox.SelectedIndex];
+
+ if (client != null)
+ {
+ SurnameTextBox.Text = client.Surname;
+ NameTextBox.Text = client.Name;
+ PatronymicTextBox.Text = client.Patronymic;
+ BirthDateDatePicker.SelectedDate = client.BirthDate;
+ AdressTextBox.Text = client.Adress;
+ PhoneNumberTextBox.Text = client.PhoneNumber;
+ SubscriptionMumberTextBox.Text = client.SubscriptionNumber.ToString();
+ }
+ }
+ catch { }
+ }
+
+ private void Button_Click_1(object sender, RoutedEventArgs e)
+ {
+ try
+ {
+ if (ClientsListBox.SelectedIndex == -1)
+ {
+ MessageBox.Show("Выберите клиента перед изменением");
+ return;
+ }
+
+ ValidationHelper.ValidateNotNullTextBox(AdressTextBox, "Фактический адрес");
+ ValidationHelper.ValidateNotNullTextBox(PhoneNumberTextBox, "Телефон");
+ ValidationHelper.ValidateNumTextBox(PhoneNumberTextBox, "Телефон");
+ ValidationHelper.ValidatePhoneNumber(PhoneNumberTextBox, "Телефон");
+
+ ClientsUI[ClientsListBox.SelectedIndex].PhoneNumber = PhoneNumberTextBox.Text;
+ ClientsUI[ClientsListBox.SelectedIndex].Adress = AdressTextBox.Text;
+
+ try
+ {
+ Json.SaveClientDataToJson(ClientsList);
+ MessageBox.Show("Данные сохранены");
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message);
+ return;
+ }
+ }
}
}