Browse Source

Add Diagram

MoskalenkoSergey 6 months ago
parent
commit
6eb4123e9a

+ 7 - 0
PP_Ven_MosS/PP_Ven_MosS.csproj

@@ -172,6 +172,10 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="Pages\Diagram.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="Pages\MenuAdmin.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
@@ -203,6 +207,9 @@
     <Compile Include="Pages\CreateEvent.xaml.cs">
       <DependentUpon>CreateEvent.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Pages\Diagram.xaml.cs">
+      <DependentUpon>Diagram.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Pages\MenuAdmin.xaml.cs">
       <DependentUpon>MenuAdmin.xaml</DependentUpon>
     </Compile>

+ 2 - 1
PP_Ven_MosS/Pages/ApplicationsListAdmin.xaml.cs

@@ -85,7 +85,8 @@ namespace PP_Ven_MosS.Pages
             int id = Convert.ToInt32(cb.Uid);
             Applications applications = Classes.Database.entities.Applications.Where(x => x.Id_employee == UserID.userid).FirstOrDefault();
             applications.Id_status_app = 1;
-            user.Count_complete_app = user.Count_complete_app + 1;
+            User user = Classes.Database.entities.User.FirstOrDefault();
+            user.Count_complete_app++;
             Classes.Database.entities.SaveChanges();
             FrameClass.MainFrame.Navigate(new ApplicationsListAdmin());
         }

+ 12 - 10
PP_Ven_MosS/Pages/CreateEvent.xaml.cs

@@ -41,29 +41,31 @@ namespace PP_Ven_MosS.Pages
         
         private void Save_Click(object sender, RoutedEventArgs e)
         {
-            
-
             Event events = new Event()
             {
                 Description_event = DescEv.Text,
                 Id_user = UserID.userid,
                 Id_events_type = CBTypeEv.SelectedIndex + 1,
-                Date_event = DateTime.Now,
+                Date_event = dob.SelectedDate.Value,
                 Id_status_event = 2,
                 Title_event = TitleEv.Text,
                 Id_people = CBPeople.SelectedIndex,
                 
             };
-            //Place_event plev = new Place_event() 
-            //{
-            //    id_place = CBPeople.SelectedIndex,
-            //    id_event = CBTypeEv.SelectedIndex,
-            //};
+            Place_event plev = new Place_event()
+            {
+                id_event = events.Id_event,
+                id_place = Convert.ToInt32(PlaceEv.Text),
+                
+            };
             switch (MessageBox.Show("Уверены в своем решении?", "Организация мероприятия", MessageBoxButton.YesNo))
             {
                 case MessageBoxResult.Yes:
-                    Classes.Database.entities.Event.Add(events);
-                    Database.entities.SaveChanges(); MessageBox.Show("Мероприятие успешно запланировано"); break;
+                    Database.entities.Event.Add(events);
+                    Database.entities.Place_event.Add(plev);
+                    Database.entities.SaveChanges(); 
+                    MessageBox.Show("Мероприятие успешно запланировано"); break;
+
                 case MessageBoxResult.No:
                     MessageBox.Show("Вы отказались от мероприятия");
                     break;

+ 23 - 0
PP_Ven_MosS/Pages/Diagram.xaml

@@ -0,0 +1,23 @@
+<Page x:Class="PP_Ven_MosS.Pages.Diagram"
+      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+      xmlns:local="clr-namespace:PP_Ven_MosS.Pages"
+      mc:Ignorable="d" 
+      d:DesignHeight="450" d:DesignWidth="800"
+      Title="Diagram">
+
+    <Grid>
+        <Grid.RowDefinitions>
+            <RowDefinition></RowDefinition>
+            <RowDefinition Height="50"></RowDefinition>
+        </Grid.RowDefinitions>
+        <StackPanel Name="dgm" HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal"></StackPanel>
+        <StackPanel Name="dgmu" HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal"></StackPanel>
+        <StackPanel Grid.Row="1"  HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal">
+            <Button Height="30" Content="Сохранить отчет" FontSize="20" Style="{StaticResource BtnSt}" Name="Save" Click="Button_Click" Margin="0,0,10,0"></Button>
+            <Button Height="30" Content="Выйти" FontSize="20" Style="{StaticResource BtnSt}" Name="Exit" Click="Exit_Click"></Button>
+        </StackPanel>
+    </Grid>
+</Page>

+ 95 - 0
PP_Ven_MosS/Pages/Diagram.xaml.cs

@@ -0,0 +1,95 @@
+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.Navigation;
+using System.Windows.Shapes;
+using PP_Ven_MosS.Classes;
+using PP_Ven_MosS.ModelBase;
+
+namespace PP_Ven_MosS.Pages
+{
+    /// <summary>
+    /// Логика взаимодействия для Diagram.xaml
+    /// </summary>
+    public partial class Diagram : Page
+    {
+        public Diagram()
+        {
+            InitializeComponent();
+            Sort();
+        }
+        //в разметку статически добавть фамилии вниз
+        async public void Sort()
+        {
+            User user = Database.entities.User.ToList().Where(x => x.Id_role == 2).FirstOrDefault();
+            List<Rectangle> rectangles = new List<Rectangle>(); ; //лист прямоугольников 
+            List<User> users = await Task.Run(() =>
+            {
+                return Database.entities.User.Where(x => x.Id_role == 2).ToList();
+            });
+            int[] mass = new int[users.Count];
+            //добавишь лист своих сотрудников
+            foreach (var usr in users) //цикл по количесво сотрудников для отрисовки
+            {
+                Rectangle newRectangle = new Rectangle();
+                newRectangle.Width = 100;
+                newRectangle.Height = Convert.ToInt32(usr.Count_complete_app) * 30; //высота - количество выполненных задачь * 10 примерно, иначе они у тебя крохотные будут
+                if (usr.Count_complete_app > 5)
+                {
+                    newRectangle.Fill = new SolidColorBrush(Colors.Green); //сделай проверку, тип если у сотрудника >5 задач - зеленый, 0 или 1 - красный, остальные - желтый, например
+                }
+                else if (usr.Count_complete_app < 2)
+                {
+                    newRectangle.Fill = new SolidColorBrush(Colors.Red);
+                }
+                else
+                {
+                    newRectangle.Fill = new SolidColorBrush(Colors.Blue);
+                }
+                newRectangle.Margin = new Thickness(20, 0, 0, 0);
+                newRectangle.VerticalAlignment = VerticalAlignment.Bottom;
+                dgm.Children.Add(newRectangle);
+                rectangles.Add(newRectangle);
+            }
+
+            foreach (var usr in users) //цикл по количесво сотрудников для отрисовки
+            {
+                TextBlock block = new TextBlock
+                {
+                    Text = usr.Surname,
+                    HorizontalAlignment = HorizontalAlignment.Center, 
+                    VerticalAlignment = VerticalAlignment.Bottom,
+                    Width = 100,
+                    Margin = new Thickness(20, 250, 0, 0)
+            };
+                dgmu.Children.Add(block);
+                //не разобралась, как делать текст внутри самого прямоугольника, но можно отрисовать в другой стекпанели
+                // тип Cont1.Children.Add(newRectangle);, где Cont1, это новая панель в разметки, которая находится над или под графиком 
+            }
+        }
+
+        private void Button_Click(object sender, RoutedEventArgs e)
+        {
+            System.Windows.Controls.PrintDialog printDialog = new PrintDialog();
+            if (printDialog.ShowDialog() == true)
+            {
+                printDialog.PrintVisual(dgm /*это x Name грида, который задается в разметке*/, "Отчет");
+                printDialog.PrintVisual(dgmu /*это x Name грида, который задается в разметке*/, "Сотрудник");
+            }
+        }
+
+        private void Exit_Click(object sender, RoutedEventArgs e)
+        {
+            FrameClass.MainFrame.Navigate(new MenuAdmin());
+        }
+    }
+}

+ 1 - 0
PP_Ven_MosS/Pages/MenuAdmin.xaml

@@ -30,6 +30,7 @@
             <Button Content="Пользователи" Style="{StaticResource BtnSt}" Name="Users" Click="Users_Click"></Button>
         </StackPanel>
         <StackPanel Grid.Row="1" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal">
+            <Button Content="Отчет" Width="100" Margin="0,0,10,0" Style="{StaticResource BtnSt}" Name="Otchet" Click="Otchet_Click"></Button>
             <TextBlock Text="Служебные записки" FontWeight="Bold" FontSize="20"></TextBlock>
         </StackPanel>
         <StackPanel Grid.Row="1" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal">

+ 5 - 0
PP_Ven_MosS/Pages/MenuAdmin.xaml.cs

@@ -89,6 +89,11 @@ namespace PP_Ven_MosS.Pages
         {
             FrameClass.MainFrame.Navigate(new Acount());
         }
+
+        private void Otchet_Click(object sender, RoutedEventArgs e)
+        {
+            FrameClass.MainFrame.Navigate(new Diagram());
+        }
     }
     public partial class MenuAdmin : Page
     {

+ 2 - 1
PP_Ven_MosS/Pages/ReportForEvent.xaml.cs

@@ -34,7 +34,8 @@ namespace PP_Ven_MosS.Pages
             DataContext = Id_Event;
             buffer = Id_Event;
             changeevent = Id_Event;
-            //Event eve = Database.entities.Event.FirstOrDefault(x => Id_Event = Uid);
+            int evid = int.Parse(Uid);
+            Event eve = Database.entities.Event.ToList().FirstOrDefault(x => x.Id_event == evid);
             txtTitleEv.Text = evnt.Title_event;
             txtDesc.Text = evnt.Description_event;