Parcourir la source

Изменение структуры форм добавление авторизации

Данилов Денис il y a 1 an
Parent
commit
1f85066476

+ 0 - 2
esoft/Class/TaskFill.cs

@@ -41,7 +41,6 @@ namespace esoft.Class
                 List<TaskFill> taskFills = new List<TaskFill>();
                 for (int i = 0; i < tasks.Count; i++)
                 {
-                    //Создание Списка Задач с удобными для DataGrid полями
                     taskFills.Add(new TaskFill
                     {
                         ID = tasks[i].ID,
@@ -101,7 +100,6 @@ namespace esoft.Class
                 List<TaskFill> taskFills = new List<TaskFill>();
                 for (int i = 0; i < tasks.Count; i++)
                 {
-                    //Создание Списка Задач с удобными для DataGrid полями
                     taskFills.Add(new TaskFill
                     {
                         ID = tasks[i].ID,

+ 1 - 1
esoft/MainWindow.xaml.cs

@@ -30,7 +30,7 @@ namespace esoft
             PreviewKeyDown += (s, e) => { if (e.Key == Key.F12) Application.Current.MainWindow.WindowState = WindowState.Maximized; };
 
             //Открытие страницы LoginPage при запуске программы
-            FrameMain.Navigate(new Pages.TaskLists());
+            FrameMain.Navigate(new Pages.LoginPage());
         }
 
         private void btnBack_Click(object sender, RoutedEventArgs e)

+ 17 - 5
esoft/Pages/AddEditServicePage.xaml

@@ -69,27 +69,39 @@
 
                     <Separator Height="10" Background="{x:Null}" />
 
-                    <StackPanel Orientation="Horizontal" Width="480" HorizontalAlignment = "Left">
+                    <StackPanel Orientation="Horizontal" Width="700" HorizontalAlignment = "Left">
                         <Separator Width="20" Background="{x:Null}"/>
                         <TextBlock Style="{StaticResource BlockCommon}" Text="Cтатус:" FontSize="20"></TextBlock>
                         <Separator Width="5" Background="{x:Null}" />
                         <ComboBox Name="cbStatus" Width="184" Height="20" DisplayMemberPath="Name"/>
 
-                        <Separator Width="20" Background="{x:Null}" />
+                        <Separator Width="20" Background="{x:Null}"/>
 
                         <TextBlock Style="{StaticResource BlockCommon}" Text="Сложность:" FontSize="20"></TextBlock>
-                        <Separator Width="5" Background="{x:Null}" />
+                        <Separator Width="5" Background="{x:Null}"/>
                         <xctk:IntegerUpDown x:Name="IUDComplexityTask" Width="71" Height="20"/>
+
+                        <Separator Width="25" Background="{x:Null}"/>
+                        
+                        <StackPanel Orientation="Horizontal" Width="200">
+                            <TextBlock Style="{StaticResource BlockCommon}" Text="Дата выполнения:" FontSize="20"></TextBlock>
+                        </StackPanel>
+
                     </StackPanel>
 
-                    <Separator Height="10" Background="{x:Null}" />
 
 
-                    <StackPanel Orientation="Horizontal" Width="480" HorizontalAlignment = "Left">
+
+                    <StackPanel Orientation="Horizontal" Width="700" HorizontalAlignment = "Left">
                         <Separator Width="20" Background="{x:Null}"/>
                         <TextBlock Style="{StaticResource BlockCommon}" Text="Время выполнение задачи:" FontSize="20"></TextBlock>
                         <Separator Width="20" Background="{x:Null}" />
                         <xctk:IntegerUpDown x:Name="IUDTimeTask" Width="182" Height="20"/>
+                        <Separator Width="25" Background="{x:Null}" />
+                        <StackPanel Orientation="Horizontal" Width="200">
+                            <DatePicker Name="DPickerDateCompleted" Background="White" Height="25" FontSize="14" Width="190" IsEnabled="False" />
+                        </StackPanel>
+                        
                     </StackPanel>
 
                     <Separator Height="10" Background="{x:Null}" />

+ 10 - 0
esoft/Pages/AddEditServicePage.xaml.cs

@@ -48,6 +48,7 @@ namespace esoft.Pages
                 TBoxDescription.Text = selectedTask.Description;
                 DPickerDateCreate.SelectedDate = selectedTask.CreateDateTime;
                 DPickerDateDeadLine.SelectedDate = selectedTask.Deadline;
+                DPickerDateCompleted.SelectedDate = selectedTask.CompletedDateTime;
             }
 
             var usersExecutor = actualContext.Users.Where(user => actualContext.Executor.Any(ex => ex.ID == user.ID)).ToList();
@@ -104,6 +105,15 @@ namespace esoft.Pages
                         existingTask.CreateDateTime = createDate;
                         existingTask.Deadline = deadline.Date;
 
+                        if (status == "выполнена")
+                        {
+                            existingTask.CompletedDateTime = DateTime.Today;
+                        }
+                        else
+                        {
+                            existingTask.CompletedDateTime = null;
+                        }
+
                         context.SaveChanges();
 
                         MessageBoxResult result = MessageBox.Show("Задача успешно изменена!", "Успех", MessageBoxButton.OK, MessageBoxImage.Information);

+ 11 - 4
esoft/Pages/LoginPage.xaml

@@ -12,13 +12,18 @@
 
         <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Width="500" Height="250" Background="White">
 
-
-                <Separator Height="50" Background="{x:Null}"/>
+            <Separator Height="50" Background="{x:Null}"/>
 
             <StackPanel Orientation="Horizontal" Width="415">
                 <TextBlock Style="{StaticResource BlockCommon}" Text="Логин:" FontSize="30" FontWeight="Bold"/>
                 <Separator Width="31" Background="{x:Null}"/>
-                <TextBox x:Name="TBoxLogin" Width="270" Height="30" FontSize="25"/>
+                <TextBox x:Name="TBoxLogin" Width="270" Height="30" FontSize="25" BorderBrush="Gray">
+                    <TextBox.Resources>
+                        <Style TargetType="{x:Type Border}">
+                            <Setter Property="CornerRadius" Value="12"/>
+                        </Style>
+                    </TextBox.Resources>
+                </TextBox>
             </StackPanel>
 
             <Separator Height="10" Background="{x:Null}"/>
@@ -26,7 +31,9 @@
             <StackPanel Orientation="Horizontal" Width="415">
                 <TextBlock Style="{StaticResource BlockCommon}" Text="Пароль:" FontSize="30" FontWeight="Bold"/>
                 <Separator Width="10" Background="{x:Null}"/>
-                <PasswordBox x:Name="PBoxPassword"  Width="270" Height="30" FontSize="25"/>
+                <Border CornerRadius="12" BorderBrush="Gray" BorderThickness="1" Width="270" Height="30">
+                    <PasswordBox x:Name="PBoxPassword" Width="250" Height="28" FontSize="25" BorderBrush="{x:Null}"/>
+                </Border>
             </StackPanel>
 
             <Separator Height="15" Background="{x:Null}"/>

+ 22 - 1
esoft/Pages/LoginPage.xaml.cs

@@ -1,4 +1,5 @@
-using System;
+using esoft.Entities;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
@@ -27,7 +28,27 @@ namespace esoft.Pages
 
         private void BtnLogin_Click(object sender, RoutedEventArgs e)
         {
+            // Получение логина и пароля из текстовых полей
+            string username = TBoxLogin.Text;
+            string password = PBoxPassword.Password;
 
+            using (var context = new esoftEntities())
+            {
+                // Поиск пользователя по введенному логину
+                var user = context.User.FirstOrDefault(u => u.Login == username);
+
+                if (user != null && user.Password == password)
+                {
+
+                    // Перенаправление пользователя на страницу с задачами
+                    NavigationService.Navigate(new Pages.TaskLists());
+                }
+                else
+                {
+                    // Ошибка авторизации
+                    MessageBox.Show("Ошибка авторизации. Пожалуйста, проверьте логин и пароль.");
+                }
+            }
         }
     }
 }

+ 54 - 6
esoft/Pages/TaskLists.xaml

@@ -15,11 +15,46 @@
         </Grid.RowDefinitions>
 
         <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Height="50" Margin="0,0,0,-13">
-            <ComboBox Margin="5" Width="200" Height="25" Name="cbManager" DisplayMemberPath="" FontSize="16" SelectionChanged="cbManager_SelectionChanged" />
-            <ComboBox Margin="5" Width="200" Height="25" Name="cbExecutor" DisplayMemberPath="" FontSize="16" SelectionChanged="cbExecutor_SelectionChanged"/>
-            <ComboBox Margin="5" Width="200" Height="25" Name="cbStatus" FontSize="16" DisplayMemberPath="Name" SelectionChanged="cbStatus_SelectionChanged"/>
-            <TextBox Margin="5" Width="200" Height="25" Name="Search" FontSize="16" TextChanged="Search_TextChanged"/>
-            <Button Height="25" Name="btnClearFilter" Content="Очистка фильтра" Width="200" Margin ="5" FontSize="16" Click="btnClearFilter_Click"/>
+            <ComboBox Margin="5" Width="200" Height="25" Name="cbManager" DisplayMemberPath="" FontSize="16" SelectionChanged="cbManager_SelectionChanged">
+                <ComboBox.ToolTip>
+                    <ToolTip>
+                        Отбор по менеджеру
+                    </ToolTip>
+                </ComboBox.ToolTip>
+            </ComboBox>
+            <ComboBox Margin="5" Width="200" Height="25" Name="cbExecutor" DisplayMemberPath="" FontSize="16" SelectionChanged="cbExecutor_SelectionChanged">
+                <ComboBox.ToolTip>
+                    <ToolTip>
+                        Отбор по исполнителю
+                    </ToolTip>
+                </ComboBox.ToolTip>
+            </ComboBox>
+            <ComboBox Margin="5" Width="200" Height="25" Name="cbStatus" FontSize="16" DisplayMemberPath="Name" SelectionChanged="cbStatus_SelectionChanged">
+                <ComboBox.ToolTip>
+                    <ToolTip>
+                        Отбор по статусу
+                    </ToolTip>
+                </ComboBox.ToolTip>
+            </ComboBox>
+            <TextBox Margin="5" Width="200" Height="25" Name="Search" FontSize="16" TextChanged="Search_TextChanged">
+                <TextBox.Resources>
+                    <Style TargetType="{x:Type Border}">
+                        <Setter Property="CornerRadius" Value="12"/>
+                    </Style>
+                </TextBox.Resources>
+                <TextBox.ToolTip>
+                    <ToolTip>
+                        Поиск по наименованию
+                    </ToolTip>
+                </TextBox.ToolTip>
+            </TextBox>
+            <Button Height="25" Name="btnClearFilter" Content="Очистка фильтра" Width="200" Margin ="5" FontSize="16" Click="btnClearFilter_Click" Style="{StaticResource  StandartButtons}">
+                <Button.Resources>
+                    <Style TargetType="Border">
+                        <Setter Property="CornerRadius" Value="10"/>
+                    </Style>
+                </Button.Resources>
+            </Button>
         </StackPanel>
 
         <StackPanel Background="#e6e6e6" Margin="0,15,0,0" Grid.Row="1">
@@ -35,12 +70,25 @@
                 <Style TargetType="ListViewItem">
                     <Setter Property="Margin" Value="0,0,0,10"/>
                     <Setter Property="Width" Value="1870"/>
-                    <Setter Property="Background" Value="#99d3ff"/>
                     <Style.Resources>
                         <Style TargetType="Border">
                             <Setter Property="CornerRadius" Value="30"/>
                         </Style>
                     </Style.Resources>
+                    <Style.Triggers>
+                        <DataTrigger Binding="{Binding Status}" Value="запланирована">
+                            <Setter Property="Background" Value="#73bbff"/>
+                        </DataTrigger>
+                        <DataTrigger Binding="{Binding Status}" Value="исполняется">
+                            <Setter Property="Background" Value="#ffef5e"/>
+                        </DataTrigger>
+                        <DataTrigger Binding="{Binding Status}" Value="выполнена">
+                            <Setter Property="Background" Value="#76cc6e"/>
+                        </DataTrigger>
+                        <DataTrigger Binding="{Binding Status}" Value="отменена">
+                            <Setter Property="Background" Value="#cc6e6e"/>
+                        </DataTrigger>
+                    </Style.Triggers>
                 </Style>
             </ListView.ItemContainerStyle>
 

+ 14 - 0
esoft/Pages/TaskLists.xaml.cs

@@ -31,6 +31,20 @@ namespace esoft.Pages
             InitializeComponent();
             LViewTask.ItemsSource = Class.TaskFill.TaskFills();
             FillForm();
+            LoadAndSortTasks();
+        }
+
+        private void LoadAndSortTasks()
+        {
+            taskContext = Class.TaskFill.TaskFills();
+
+            if (taskContext.Any())
+            {
+                // Сортируем задачи по убыванию даты создания
+                taskContext = taskContext.OrderByDescending(task => task.CreateDateTime).ToList();
+            }
+
+            LViewTask.ItemsSource = taskContext;
         }
 
         private void FillForm()