This commit is contained in:
2026-04-03 20:18:20 +05:00
parent 4ba3e2d29e
commit 493d1fd8a7
4 changed files with 89 additions and 2 deletions

View File

@@ -13,6 +13,7 @@ namespace UP01Task2App.Models
public string Adress { get; set; } public string Adress { get; set; }
public string PhoneNumber { get; set; } public string PhoneNumber { get; set; }
public int SubscriptionNumber { get; set; } public int SubscriptionNumber { get; set; }
public string Gender { get; set; }
public override string ToString() public override string ToString()
{ {

View File

@@ -1,6 +1,8 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
namespace UP01Task2App.Services namespace UP01Task2App.Services
@@ -25,6 +27,11 @@ namespace UP01Task2App.Services
if (obj.SelectedDate > DateTime.Now) if (obj.SelectedDate > DateTime.Now)
throw new ArgumentException($"В поле \"{fieldName}\" выбранная дата не может быть в будущем"); 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) public static void ValidateNotNullDatePicker(DatePicker obj, string fieldName)
{ {
if (obj.SelectedDate == null) if (obj.SelectedDate == null)
@@ -35,5 +42,19 @@ namespace UP01Task2App.Services
if (!int.TryParse(obj.Text, out int _)) if (!int.TryParse(obj.Text, out int _))
throw new ArgumentException($"Введенное число в \"{fieldName}\" слишком большое или маленькое"); 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");
}
} }
} }

View File

@@ -48,7 +48,8 @@
<TextBlock Text="Список клиентов" FontSize="18" Margin="0,0,0,10"/> <TextBlock Text="Список клиентов" FontSize="18" Margin="0,0,0,10"/>
<ListBox ItemsSource="{Binding ClientsUI}" <ListBox ItemsSource="{Binding ClientsUI}"
Height="250"/> Name="ClientsListBox"
Height="250" SelectionChanged="ListBox_SelectionChanged"/>
<StackPanel Orientation="Horizontal" <StackPanel Orientation="Horizontal"
Margin="10"> Margin="10">
@@ -59,7 +60,8 @@
<Button Content="Изменить клиента" <Button Content="Изменить клиента"
Style="{StaticResource ButtonStyle}" Style="{StaticResource ButtonStyle}"
Margin="10"/> ToolTip="Изменить можно только адрес и номер телефона клиента"
Margin="10" Click="Button_Click_1"/>
</StackPanel> </StackPanel>
<StackPanel> <StackPanel>

View File

@@ -55,13 +55,18 @@ namespace UP01Task2App.Windows
try try
{ {
ValidationHelper.ValidateNotNullTextBox(SurnameTextBox, "Фамилия"); ValidationHelper.ValidateNotNullTextBox(SurnameTextBox, "Фамилия");
ValidationHelper.ValidateCorrectlyFullName(SurnameTextBox, "Фамилия");
ValidationHelper.ValidateNotNullTextBox(NameTextBox, "Имя"); ValidationHelper.ValidateNotNullTextBox(NameTextBox, "Имя");
ValidationHelper.ValidateCorrectlyFullName(NameTextBox, "Имя");
ValidationHelper.ValidateNotNullTextBox(PatronymicTextBox, "Отчество"); ValidationHelper.ValidateNotNullTextBox(PatronymicTextBox, "Отчество");
ValidationHelper.ValidateCorrectlyFullName(PatronymicTextBox, "Отчество");
ValidationHelper.ValidateNotNullDatePicker(BirthDateDatePicker, "Дата рождения"); ValidationHelper.ValidateNotNullDatePicker(BirthDateDatePicker, "Дата рождения");
ValidationHelper.ValidateDateNotInFutureTextBox(BirthDateDatePicker, "Дата рождения"); ValidationHelper.ValidateDateNotInFutureTextBox(BirthDateDatePicker, "Дата рождения");
ValidationHelper.CheckBirthdate(BirthDateDatePicker);
ValidationHelper.ValidateNotNullTextBox(AdressTextBox, "Фактический адрес"); ValidationHelper.ValidateNotNullTextBox(AdressTextBox, "Фактический адрес");
ValidationHelper.ValidateNotNullTextBox(PhoneNumberTextBox, "Телефон"); ValidationHelper.ValidateNotNullTextBox(PhoneNumberTextBox, "Телефон");
ValidationHelper.ValidateNumTextBox(PhoneNumberTextBox, "Телефон"); ValidationHelper.ValidateNumTextBox(PhoneNumberTextBox, "Телефон");
ValidationHelper.ValidatePhoneNumber(PhoneNumberTextBox, "Телефон");
ValidationHelper.ValidateNotNullTextBox(SubscriptionMumberTextBox, "Номер абонемента"); ValidationHelper.ValidateNotNullTextBox(SubscriptionMumberTextBox, "Номер абонемента");
ValidationHelper.ValidateNumTextBox(SubscriptionMumberTextBox, "Номер абонемента"); ValidationHelper.ValidateNumTextBox(SubscriptionMumberTextBox, "Номер абонемента");
ValidationHelper.ValidateIntRangeTextBox(SubscriptionMumberTextBox, "Номер абонемента"); ValidationHelper.ValidateIntRangeTextBox(SubscriptionMumberTextBox, "Номер абонемента");
@@ -108,5 +113,63 @@ namespace UP01Task2App.Windows
UpdateClientUI(); 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;
}
}
} }
} }