CourseProject1125/CourseProject1125/Views/LibrarianWindow.axaml

213 lines
20 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:CourseProject1125.ViewModels"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="1100" d:DesignHeight="650"
x:Class="CourseProject1125.Views.LibrarianWindow"
x:DataType="vm:LibrarianWindowViewModel"
Title="Панель библиотекаря - Библиотека"
Width="1100" Height="650"
WindowStartupLocation="CenterScreen"
Background="White">
<Grid ColumnDefinitions="240, *">
<Border Grid.Column="0" Background="LightGray" BorderBrush="Gray" BorderThickness="0,0,1,0" Padding="15">
<Grid RowDefinitions="Auto, *, Auto">
<StackPanel Grid.Row="0" Margin="0,10,0,30">
<TextBlock Text="БИБЛИОТЕКА" Foreground="Black" FontSize="20" FontWeight="Bold" HorizontalAlignment="Center" LetterSpacing="1"/>
<TextBlock Text="Панель библиотекаря" Foreground="Black" FontSize="11" HorizontalAlignment="Center"/>
<TextBlock Name="TxtLibrarianName" Text="{Binding LibrarianName}" Foreground="Black" FontSize="12" FontWeight="SemiBold" HorizontalAlignment="Center" Margin="0,10,0,0"/>
</StackPanel>
<StackPanel Grid.Row="1">
<Button Name="BtnTabIssue" Content=" Выдача книг" Command="{Binding ShowTabCommand}" CommandParameter="Issue" Background="{Binding IssueTabBackground}" Foreground="{Binding IssueTabForeground}" HorizontalAlignment="Stretch" Height="40" FontWeight="SemiBold" CornerRadius="6" HorizontalContentAlignment="Left" Padding="15,0,0,0"/>
<Button Name="BtnTabReturns" Content=" Возврат книг" Command="{Binding ShowTabCommand}" CommandParameter="Returns" Background="{Binding ReturnsTabBackground}" Foreground="{Binding ReturnsTabForeground}" HorizontalAlignment="Stretch" Height="40" FontWeight="SemiBold" CornerRadius="6" HorizontalContentAlignment="Left" Padding="15,0,0,0"/>
<Button Name="BtnTabRegister" Content=" Регистрация читателей" Command="{Binding ShowTabCommand}" CommandParameter="Register" Background="{Binding RegisterTabBackground}" Foreground="{Binding RegisterTabForeground}" HorizontalAlignment="Stretch" Height="40" FontWeight="SemiBold" CornerRadius="6" HorizontalContentAlignment="Left" Padding="15,0,0,0"/>
<Button Name="BtnTabFines" Content=" Штрафы" Command="{Binding ShowTabCommand}" CommandParameter="Fines" Background="{Binding FinesTabBackground}" Foreground="{Binding FinesTabForeground}" HorizontalAlignment="Stretch" Height="40" FontWeight="SemiBold" CornerRadius="6" HorizontalContentAlignment="Left" Padding="15,0,0,0"/>
<Button Name="BtnTabReservations" Content=" Бронирования" Command="{Binding ShowTabCommand}" CommandParameter="Reservations" Background="{Binding ReservationsTabBackground}" Foreground="{Binding ReservationsTabForeground}" HorizontalAlignment="Stretch" Height="40" FontWeight="SemiBold" CornerRadius="6" HorizontalContentAlignment="Left" Padding="15,0,0,0"/>
</StackPanel>
<Button Grid.Row="3" Content=" Выйти из системы" Command="{Binding LogoutCommand}" HorizontalAlignment="Stretch" Height="40" Background="Red" Foreground="White" FontWeight="Bold" CornerRadius="6" HorizontalContentAlignment="Center"/>
</Grid>
</Border>
<Grid Grid.Column="1" RowDefinitions="Auto, *">
<Border Grid.Row="0" Background="LightGray" Height="60" Padding="20,0" BorderBrush="Gray" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="*, Auto">
<TextBlock Name="TxtActiveTabHeader" Text="{Binding ActiveTabHeader}" Foreground="Black" FontSize="18" FontWeight="Bold" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" Text="Роль: Библиотекарь" Foreground="Black" FontSize="12" VerticalAlignment="Center"/>
</Grid>
</Border>
<Grid Grid.Row="1" Margin="20">
<Grid Name="GridIssue" ColumnDefinitions="450, *" IsVisible="{Binding IsIssueVisible}">
<Border Grid.Column="0" Background="White" CornerRadius="8" Padding="20" BorderBrush="LightGray" BorderThickness="1" VerticalAlignment="Top">
<StackPanel>
<TextBlock Text="Выдача книги читателю" Foreground="Black" FontSize="16" FontWeight="Bold" Margin="0,0,0,5"/>
<StackPanel Margin="0,0,0,10">
<TextBlock Text="Поиск и выбор книги" Foreground="Black" FontSize="12" Margin="0,0,0,4"/>
<TextBox Name="TxtSearchCopy" Text="{Binding SearchCopyText, Mode=TwoWay}" Watermark="Введите название, инв. номер или автора..." Height="36" CornerRadius="4"/>
<ListBox Name="LbIssueCopies" ItemsSource="{Binding FilteredCopies}" SelectedItem="{Binding SelectedAvailableCopy, Mode=TwoWay}" Height="120" Margin="0,4,0,0" CornerRadius="4" Background="White" BorderBrush="LightGray" BorderThickness="1">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="4">
<TextBlock Text="{Binding BookId.Title}" Foreground="Black" FontSize="13" FontWeight="Bold"/>
<TextBlock Text="{Binding Inventory_number}" Foreground="Black" FontSize="11"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
<StackPanel Margin="0,0,0,10">
<TextBlock Text="Поиск и выбор читателя" Foreground="Black" FontSize="12" Margin="0,0,0,4"/>
<TextBox Name="TxtSearchReader" Text="{Binding SearchReaderText, Mode=TwoWay}" Watermark="Введите ФИО или логин читателя..." Height="36" CornerRadius="4"/>
<ListBox Name="LbIssueReaders" ItemsSource="{Binding FilteredReaders}" SelectedItem="{Binding SelectedReader, Mode=TwoWay}" Height="120" Margin="0,4,0,0" CornerRadius="4" Background="White" BorderBrush="LightGray" BorderThickness="1">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="4">
<TextBlock Text="{Binding Full_name}" Foreground="Black" FontSize="13" FontWeight="Bold"/>
<TextBlock Text="{Binding Login}" Foreground="Black" FontSize="11"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
<StackPanel>
<TextBlock Text="Срок возврата" Foreground="Black" FontSize="12"/>
<CalendarDatePicker Name="DpIssueDueDate" SelectedDate="{Binding IssueDueDate, Mode=TwoWay}" HorizontalAlignment="Stretch" Height="36" CornerRadius="4"/>
</StackPanel>
<Button Content=" Оформить выдачу" Command="{Binding IssueBookCommand}" Background="Green" Foreground="White" HorizontalAlignment="Stretch" Height="40" FontWeight="Bold" CornerRadius="4" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="0,10,0,0"/>
<TextBlock Name="TxtIssueStatus" Text="{Binding IssueStatus}" Foreground="{Binding IssueStatusColor}" FontSize="13" TextWrapping="Wrap" HorizontalAlignment="Center"/>
</StackPanel>
</Border>
<Border Grid.Column="1" Background="White" CornerRadius="8" Padding="20" BorderBrush="LightGray" BorderThickness="1">
<StackPanel>
<TextBlock Text="Памятка библиотекаря" Foreground="Black" FontSize="15" FontWeight="Bold"/>
<TextBlock Text="1. Книга выдается только зарегистрированным читателям." Foreground="Black" TextWrapping="Wrap"/>
<TextBlock Text="2. Рекомендуемый срок выдачи — 14 дней." Foreground="Black" TextWrapping="Wrap"/>
<TextBlock Text="3. При просрочке сдачи книги система автоматически начислит штраф в размере 15 руб. за каждый день задержки при возврате." Foreground="Black" TextWrapping="Wrap"/>
</StackPanel>
</Border>
</Grid>
<Grid Name="GridReturns" RowDefinitions="*, Auto" IsVisible="{Binding IsReturnsVisible}">
<Grid Grid.Row="0" ColumnDefinitions="*, 320">
<DataGrid Name="DgActiveLoans" Grid.Column="0" ItemsSource="{Binding ActiveLoansList}" SelectedItem="{Binding SelectedActiveLoan, Mode=TwoWay}" AutoGenerateColumns="False" IsReadOnly="True" GridLinesVisibility="All" BorderThickness="1" BorderBrush="LightGray" Background="White">
<DataGrid.Columns>
<DataGridTextColumn Header="Инв. номер" Binding="{Binding CopyId.Inventory_number}" Width="120"/>
<DataGridTextColumn Header="Книга" Binding="{Binding CopyId.BookId.Title}" Width="2*"/>
<DataGridTextColumn Header="Читатель" Binding="{Binding ReaderId.Full_name}" Width="1.5*"/>
<DataGridTextColumn Header="Дата выдачи" Binding="{Binding Issue_date, StringFormat={}{0:dd.MM.yyyy}}" Width="110"/>
<DataGridTextColumn Header="Срок сдачи" Binding="{Binding Due_date, StringFormat={}{0:dd.MM.yyyy}}" Width="110"/>
<DataGridTextColumn Header="Статус" Binding="{Binding StatusText}" Width="120"/>
</DataGrid.Columns>
</DataGrid>
<Border Grid.Column="1" Background="White" CornerRadius="8" Padding="15" BorderBrush="LightGray" BorderThickness="1" VerticalAlignment="Top">
<StackPanel>
<TextBlock Text="Приём возврата" Foreground="Black" FontSize="15" FontWeight="Bold"/>
<TextBlock Name="TxtReturnDetails" Text="{Binding ReturnDetails}" Foreground="Black" TextWrapping="Wrap" FontSize="13"/>
<Button Name="BtnReturnBook" Content=" Принять возврат" Command="{Binding ReturnBookCommand}" IsEnabled="{Binding IsReturnEnabled}" Background="Blue" Foreground="White" HorizontalAlignment="Stretch" Height="40" FontWeight="Bold" CornerRadius="4" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<TextBlock Name="TxtReturnStatus" Text="{Binding ReturnStatus}" Foreground="{Binding ReturnStatusColor}" FontSize="13" TextWrapping="Wrap" HorizontalAlignment="Center" FontWeight="SemiBold"/>
</StackPanel>
</Border>
</Grid>
</Grid>
<Grid Name="GridRegister" ColumnDefinitions="450, *" IsVisible="{Binding IsRegisterVisible}">
<Border Grid.Column="0" Background="White" CornerRadius="8" Padding="20" BorderBrush="LightGray" BorderThickness="1" VerticalAlignment="Top">
<StackPanel>
<TextBlock Text="Регистрация нового читателя" Foreground="Black" FontSize="16" FontWeight="Bold" Margin="0,0,0,5"/>
<StackPanel>
<TextBlock Text="ФИО читателя" Foreground="Black" FontSize="12"/>
<TextBox Name="TxtRegFullName" Text="{Binding RegFullName, Mode=TwoWay}" Height="34" CornerRadius="4"/>
</StackPanel>
<StackPanel>
<TextBlock Text="Email" Foreground="Black" FontSize="12"/>
<TextBox Name="TxtRegEmail" Text="{Binding RegEmail, Mode=TwoWay}" Height="34" CornerRadius="4"/>
</StackPanel>
<StackPanel>
<TextBlock Text="Телефон" Foreground="Black" FontSize="12"/>
<TextBox Name="TxtRegPhone" Text="{Binding RegPhone, Mode=TwoWay}" Height="34" CornerRadius="4"/>
</StackPanel>
<StackPanel>
<TextBlock Text="Логин для входа" Foreground="Black" FontSize="12"/>
<TextBox Name="TxtRegLogin" Text="{Binding RegLogin, Mode=TwoWay}" Height="34" CornerRadius="4"/>
</StackPanel>
<StackPanel>
<TextBlock Text="Пароль" Foreground="Black" FontSize="12"/>
<TextBox Name="TxtRegPass" Text="{Binding RegPass, Mode=TwoWay}" Height="34" CornerRadius="4"/>
</StackPanel>
<Button Content=" Зарегистрировать" Command="{Binding RegisterReaderCommand}" Background="Green" Foreground="White" HorizontalAlignment="Stretch" Height="38" FontWeight="Bold" CornerRadius="4" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="0,10,0,0"/>
<TextBlock Name="TxtRegStatus" Text="{Binding RegStatus}" Foreground="{Binding RegStatusColor}" FontSize="13" HorizontalAlignment="Center"/>
</StackPanel>
</Border>
</Grid>
<Grid Name="GridFines" ColumnDefinitions="*, 320" IsVisible="{Binding IsFinesVisible}">
<DataGrid Name="DgFines" Grid.Column="0" ItemsSource="{Binding FinesList}" SelectedItem="{Binding SelectedFine, Mode=TwoWay}" AutoGenerateColumns="False" IsReadOnly="True" GridLinesVisibility="All" BorderThickness="1" BorderBrush="LightGray" Background="White">
<DataGrid.Columns>
<DataGridTextColumn Header="Читатель" Binding="{Binding LoanId.ReaderId.Full_name}" Width="1.5*"/>
<DataGridTextColumn Header="Книга" Binding="{Binding LoanId.CopyId.BookId.Title}" Width="2*"/>
<DataGridTextColumn Header="Сумма" Binding="{Binding Amount}" Width="90"/>
<DataGridTextColumn Header="Статус" Binding="{Binding StatusText}" Width="100"/>
<DataGridTextColumn Header="Дата выписки" Binding="{Binding Created_at, StringFormat={}{0:dd.MM.yyyy}}" Width="110"/>
</DataGrid.Columns>
</DataGrid>
<Border Grid.Column="1" Background="White" CornerRadius="8" Padding="15" BorderBrush="LightGray" BorderThickness="1" VerticalAlignment="Top">
<StackPanel>
<TextBlock Text="Управление штрафами" Foreground="Black" FontSize="15" FontWeight="Bold"/>
<TextBlock Name="TxtFineDetails" Text="{Binding FineDetails}" Foreground="Black" TextWrapping="Wrap" FontSize="13"/>
<Button Name="BtnPayFine" Content=" Отметить как оплаченный" Command="{Binding PayFineCommand}" IsEnabled="{Binding IsPayFineEnabled}" Background="Green" Foreground="White" HorizontalAlignment="Stretch" Height="40" FontWeight="Bold" CornerRadius="4" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<TextBlock Name="TxtFineStatus" Text="{Binding FineStatus}" Foreground="{Binding FineStatusColor}" FontSize="13" TextWrapping="Wrap" HorizontalAlignment="Center"/>
</StackPanel>
</Border>
</Grid>
<Grid Name="GridReservations" RowDefinitions="*, Auto" IsVisible="{Binding IsReservationsVisible}">
<Grid Grid.Row="0" ColumnDefinitions="*, 320">
<DataGrid Name="DgReservations" Grid.Column="0" ItemsSource="{Binding ReservationsList}" SelectedItem="{Binding SelectedReservation, Mode=TwoWay}" AutoGenerateColumns="False" IsReadOnly="True" GridLinesVisibility="All" BorderThickness="1" BorderBrush="LightGray" Background="White">
<DataGrid.Columns>
<DataGridTextColumn Header="Книга" Binding="{Binding BookId.Title}" Width="2*"/>
<DataGridTextColumn Header="Читатель" Binding="{Binding ReaderId.Full_name}" Width="1.5*"/>
<DataGridTextColumn Header="Дата брони" Binding="{Binding Reservation_date, StringFormat={}{0:dd.MM.yyyy}}" Width="110"/>
<DataGridTextColumn Header="Истекает" Binding="{Binding Expiry_date, StringFormat={}{0:dd.MM.yyyy}}" Width="110"/>
<DataGridTextColumn Header="Активна" Binding="{Binding is_active}" Width="90"/>
</DataGrid.Columns>
</DataGrid>
<Border Grid.Column="1" Background="White" CornerRadius="8" Padding="15" BorderBrush="LightGray" BorderThickness="1" VerticalAlignment="Top">
<StackPanel>
<TextBlock Text="Детали бронирования" Foreground="Black" FontSize="15" FontWeight="Bold"/>
<TextBlock Name="TxtReservationDetails" Text="{Binding ReservationDetails}" Foreground="Black" TextWrapping="Wrap" FontSize="13"/>
<Button Name="BtnCancelReservation" Content=" Отменить бронь" Command="{Binding CancelReservationCommand}" IsEnabled="{Binding IsCancelReservationEnabled}" Background="Red" Foreground="White" HorizontalAlignment="Stretch" Height="40" FontWeight="Bold" CornerRadius="4" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<TextBlock Name="TxtReservationStatus" Text="{Binding ReservationStatus}" Foreground="{Binding ReservationStatusColor}" FontSize="13" TextWrapping="Wrap" HorizontalAlignment="Center"/>
</StackPanel>
</Border>
</Grid>
</Grid>
</Grid>
</Grid>
</Grid>
</Window>