Подправил чуть-чуть дезигн. Наврное, надо уже другое релизовывать.

This commit is contained in:
maksim 2024-11-27 01:21:37 +04:00
parent 74f1fda7c7
commit af01b18e80
8 changed files with 161 additions and 126 deletions

View File

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EmployeeManagmentDataModels.Enums
{
public enum GenderType
{
Мужчина,
Женщина
}
}

View File

@ -24,7 +24,6 @@
</Grid>
<ControlTemplate.Triggers>
<!-- Анимация цвета при наведении -->
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
@ -46,7 +45,6 @@
</Trigger.ExitActions>
</Trigger>
<!-- Плавная анимация сжатия и тени при нажатии -->
<Trigger Property="IsPressed" Value="True">
<Setter Property="RenderTransformOrigin" Value="0.5,0.5" />
<Setter Property="RenderTransform" TargetName="ButtonBorder">
@ -64,10 +62,10 @@
<Storyboard>
<DoubleAnimation Storyboard.TargetName="scaleTransform"
Storyboard.TargetProperty="ScaleX"
To="1.0" Duration="0:0:0.1" />
To="0.95" Duration="0:0:0.2" />
<DoubleAnimation Storyboard.TargetName="scaleTransform"
Storyboard.TargetProperty="ScaleY"
To="1.0" Duration="0:0:0.1" />
To="0.95" Duration="0:0:0.2" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
@ -76,10 +74,10 @@
<Storyboard>
<DoubleAnimation Storyboard.TargetName="scaleTransform"
Storyboard.TargetProperty="ScaleX"
To="0.95" Duration="0:0:0.2" />
To="1.0" Duration="0:0:0.2" />
<DoubleAnimation Storyboard.TargetName="scaleTransform"
Storyboard.TargetProperty="ScaleY"
To="0.95" Duration="0:0:0.2" />
To="1.0" Duration="0:0:0.2" />
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
@ -90,8 +88,7 @@
</Setter>
</Style>
<!-- Стиль для закругленного TextBox -->
<!-- Стиль для закругленного TextBox с подсветкой -->
<Style x:Key="RoundedTextBoxStyle" TargetType="TextBox">
<Setter Property="Template">
<Setter.Value>
@ -105,27 +102,14 @@
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Стиль для закругленного ComboBox -->
<Style x:Key="RoundedComboBoxStyle" TargetType="ComboBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBox">
<Border Background="White"
CornerRadius="15"
BorderBrush="Gray"
BorderThickness="1">
<Grid>
<ToggleButton Grid.Column="2" Focusable="False"
ClickMode="Press" />
<ContentPresenter />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<!-- Подсветка рамки при фокусе -->
<Trigger Property="IsFocused" Value="True">
<Setter Property="BorderBrush" Value="#004890"/>
<Setter Property="BorderThickness" Value="2"/>
</Trigger>
</Style.Triggers>
</Style>
</Application.Resources>
</Application>

View File

@ -3,6 +3,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Отдел кадров УлГТУ" Height="450" Width="800" Background="#0D2D4F"
MinWidth="400" MinHeight="300"
WindowStartupLocation="CenterScreen"
MaxWidth="{Binding Source={x:Static SystemParameters.PrimaryScreenWidth}}"
MaxHeight="{Binding Source={x:Static SystemParameters.PrimaryScreenHeight}}">

View File

@ -22,6 +22,18 @@ namespace EmployeeManagmentView
private void OpenPhysicalPersonManagementWindow(object sender, RoutedEventArgs e)
{
foreach (Window window in Application.Current.Windows)
{
if (window is PhysicalPersonManagementWindow)
{
// Если окно уже открыто, активируем его и ставим на передний план
window.Activate();
window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
window.Topmost = true; // Ставим окно на передний план
window.Topmost = false; // Сразу снимаем флаг, чтобы окно не оставалось всегда наверху
return;
}
}
var physicalPersonWindow = new PhysicalPersonManagementWindow(_phisicalPersonLogic);
physicalPersonWindow.Show();

View File

@ -2,7 +2,7 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Добавление физического лица"
Height="600" Width="400"
Height="600" Width="600"
ResizeMode="NoResize"
WindowStartupLocation="CenterScreen"
Background="#0D2D4F">
@ -15,62 +15,103 @@
Foreground="#FFFFFF"
Margin="0,20,0,0" />
<!-- Стек элементов для ввода данных -->
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10">
<!-- Сетка для ввода данных в два столбца -->
<Grid Margin="0,60">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<!-- Поле для имени -->
<StackPanel Grid.Row="0" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10">
<Label Content="Имя" Foreground="White" HorizontalAlignment="Center"/>
<TextBox x:Name="NameTextBox"
Width="250" Height="40"
Style="{StaticResource RoundedTextBoxStyle}"
Margin="0,10"
ToolTip="Введите имя" />
Margin="0,5"
ToolTip="Введите имя" HorizontalAlignment="Center"/>
</StackPanel>
<!-- Поле для фамилии -->
<StackPanel Grid.Row="0" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10">
<Label Content="Фамилия" Foreground="White" HorizontalAlignment="Center"/>
<TextBox x:Name="SurnameTextBox"
Width="250" Height="40"
Style="{StaticResource RoundedTextBoxStyle}"
Margin="0,10"
ToolTip="Введите фамилию" />
Margin="0,5"
ToolTip="Введите фамилию" HorizontalAlignment="Center"/>
</StackPanel>
<!-- Поле для отчества -->
<StackPanel Grid.Row="1" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10">
<Label Content="Отчество" Foreground="White" HorizontalAlignment="Center"/>
<TextBox x:Name="PatronomicTextBox"
Width="250" Height="40"
Style="{StaticResource RoundedTextBoxStyle}"
Margin="0,10"
ToolTip="Введите отчество" />
Margin="0,5"
ToolTip="Введите отчество" HorizontalAlignment="Center"/>
</StackPanel>
<!-- Поле для выбора даты рождения -->
<StackPanel Grid.Row="1" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10">
<Label Content="Дата рождения" Foreground="White" HorizontalAlignment="Center"/>
<DatePicker x:Name="BirthdayPicker"
Width="250" Height="40"
Margin="0,10"
ToolTip="Выберите дату рождения" />
Margin="0,5"
ToolTip="Выберите дату рождения" HorizontalAlignment="Center"/>
</StackPanel>
<!-- Поле для выбора пола -->
<TextBox x:Name="GenderTextBox"
<StackPanel Grid.Row="2" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10">
<Label Content="Пол" Foreground="White" HorizontalAlignment="Center"/>
<ComboBox x:Name="GenderComboBox"
Width="250" Height="40"
Style="{StaticResource RoundedTextBoxStyle}"
Margin="0,10"
ToolTip="Введите пол" />
Margin="0,5"
ToolTip="Выберите пол"
Background="White" HorizontalAlignment="Center">
<ComboBoxItem Content="Мужчина"/>
<ComboBoxItem Content="Женщина"/>
</ComboBox>
</StackPanel>
<!-- Поле для адреса -->
<StackPanel Grid.Row="2" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10">
<Label Content="Адрес" Foreground="White" HorizontalAlignment="Center"/>
<TextBox x:Name="AddressTextBox"
Width="250" Height="40"
Style="{StaticResource RoundedTextBoxStyle}"
Margin="0,10"
ToolTip="Введите адрес" />
Margin="0,5"
ToolTip="Введите адрес" HorizontalAlignment="Center"/>
</StackPanel>
<!-- Поле для телефона -->
<StackPanel Grid.Row="3" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10">
<Label Content="Телефон" Foreground="White" HorizontalAlignment="Center"/>
<TextBox x:Name="TelephoneTextBox"
Width="250" Height="40"
Style="{StaticResource RoundedTextBoxStyle}"
Margin="0,10"
ToolTip="Введите номер телефона" />
Margin="0,5"
ToolTip="Введите номер телефона" HorizontalAlignment="Center"/>
</StackPanel>
<!-- Кнопка для добавления физического лица -->
<Button Content="Добавить физическое лицо"
<Button Grid.Row="4" Grid.ColumnSpan="2" Content="Добавить физическое лицо"
Width="250" Height="40"
Margin="0,10"
Style="{StaticResource RoundedButtonStyle}"
Click="SaveButton_Click"/>
</StackPanel>
Click="SaveButton_Click"
Background="#004890" Foreground="#FFFFFF" HorizontalAlignment="Center"/>
</Grid>
</Grid>
</Window>

View File

@ -1,28 +1,13 @@
using EmployeeManagmentBusinessLogic.BusinessLogic;
using EmployeeManagmentContracts.BusinessLogicContracts;
using EmployeeManagmentContracts.BusinessLogicContracts;
using EmployeeManagmentContracts.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace EmployeeManagmentView.PhysicalPerson
{
/// <summary>
/// Логика взаимодействия для AddPhysicalPersonWindow.xaml
/// </summary>
public partial class AddPhysicalPersonWindow : Window
{
private readonly IPhisicalPersonLogic _phisicalPersonLogic;
private static AddPhysicalPersonWindow _instance;
public AddPhysicalPersonWindow(IPhisicalPersonLogic phisicalPersonLogic)
{
@ -34,30 +19,24 @@ namespace EmployeeManagmentView.PhysicalPerson
{
try
{
// Создаем модель и заполняем её значениями из элементов интерфейса
var model = new PhisicalPersonViewModel
{
Name = NameTextBox.Text,
Surname = SurnameTextBox.Text,
Patronymic = PatronomicTextBox.Text,
Birthday = BirthdayPicker.SelectedDate.Value.ToUniversalTime(), // Проверка на null не нужна, так как поле обязательное
Gender = GenderTextBox.Text,
Birthday = BirthdayPicker.SelectedDate.Value.ToUniversalTime(),
Gender = GenderComboBox.Text,
Address = AddressTextBox.Text,
Telephone = TelephoneTextBox.Text
};
// Вызываем метод Insert из бизнес-логики для добавления данных в базу
_phisicalPersonLogic.Insert(model);
// Показываем сообщение об успешном добавлении
MessageBox.Show("Данные успешно сохранены!");
// Закрываем окно
this.Close();
}
catch (Exception ex)
{
// В случае ошибки показываем сообщение об ошибке
MessageBox.Show($"Ошибка: {ex.Message}");
}
}

View File

@ -2,7 +2,7 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Управление физическими лицами"
Height="300" Width="400"
Height="400" Width="400"
ResizeMode="NoResize"
WindowStartupLocation="CenterScreen"
Background="#0D2D4F">
@ -20,6 +20,7 @@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
<Button Content="Удаление физического лица"
Width="250" Height="40"
Margin="0,0,0,10"
Background="#004890" Foreground="#FFFFFF"
Style="{StaticResource RoundedButtonStyle}" />
<!-- Кнопка "Добавление физического лица" -->
@ -27,18 +28,21 @@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Width="250" Height="40"
Margin="0,0,0,10"
Style="{StaticResource RoundedButtonStyle}"
Background="#004890" Foreground="#FFFFFF"
Click="OpenAddPhysicalPersonWindow"/>
<!-- Кнопка "Редактирование физического лица" -->
<Button Content="Редактирование физического лица"
Width="250" Height="40"
Margin="0,0,0,10"
Style="{StaticResource RoundedButtonStyle}" />
Style="{StaticResource RoundedButtonStyle}"
Background="#004890" Foreground="#FFFFFF"/>
<!-- Кнопка "Просмотр физических лиц" -->
<Button Content="Просмотр физических лиц"
Width="250" Height="40"
Style="{StaticResource RoundedButtonStyle}" />
Style="{StaticResource RoundedButtonStyle}"
Background="#004890" Foreground="#FFFFFF"/>
</StackPanel>
</Grid>
</Window>

View File

@ -1,28 +1,12 @@
using EmployeeManagmentContracts.BusinessLogicContracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace EmployeeManagmentView.PhysicalPerson
{
/// <summary>
/// Логика взаимодействия для PhysicalPersonManagementWindow.xaml
/// </summary>
public partial class PhysicalPersonManagementWindow : Window
{
private readonly IPhisicalPersonLogic _phisicalPersonLogic;
// Constructor with Dependency Injection
public PhysicalPersonManagementWindow(IPhisicalPersonLogic phisicalPersonLogic)
{
_phisicalPersonLogic = phisicalPersonLogic;
@ -31,8 +15,24 @@ namespace EmployeeManagmentView.PhysicalPerson
private void OpenAddPhysicalPersonWindow(object sender, RoutedEventArgs e)
{
// Проверяем, если окно уже открыто
foreach (Window window in Application.Current.Windows)
{
if (window is AddPhysicalPersonWindow)
{
// Если окно уже открыто, активируем его и ставим на передний план
window.Activate();
window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
window.Topmost = true; // Ставим окно на передний план
window.Topmost = false; // Сразу снимаем флаг, чтобы окно не оставалось всегда наверху
return;
}
}
// Если окно не найдено, открываем новое
var physicalPersonWindow = new AddPhysicalPersonWindow(_phisicalPersonLogic);
physicalPersonWindow.Show();
}
}
}