Jelajahi Sumber

Сделал отчёты

gr672_pgv 4 tahun lalu
induk
melakukan
28a91d7ade
39 mengubah file dengan 637 tambahan dan 36 penghapusan
  1. TEMPAT SAMPAH
      .vs/StoreAllProject/v16/.suo
  2. 24 0
      Cashier/MainWindow.xaml.cs
  3. 2 1
      Cashier/MenuPage.xaml
  4. 18 11
      Cashier/MenuPage.xaml.cs
  5. 1 0
      Cashier/RootDataOfOrder.cs
  6. TEMPAT SAMPAH
      Cashier/bin/Debug/Cashier.exe
  7. TEMPAT SAMPAH
      Cashier/bin/Debug/Cashier.pdb
  8. TEMPAT SAMPAH
      Cashier/obj/Debug/Cashier.csprojAssemblyReference.cache
  9. TEMPAT SAMPAH
      Cashier/obj/Debug/Cashier.exe
  10. TEMPAT SAMPAH
      Cashier/obj/Debug/Cashier.g.resources
  11. TEMPAT SAMPAH
      Cashier/obj/Debug/Cashier.pdb
  12. 1 1
      Cashier/obj/Debug/Cashier_MarkupCompile.i.cache
  13. 4 0
      Cashier/obj/Debug/Cashier_MarkupCompile.i.lref
  14. TEMPAT SAMPAH
      Cashier/obj/Debug/DesignTimeResolveAssemblyReferences.cache
  15. TEMPAT SAMPAH
      Cashier/obj/Debug/MenuPage.baml
  16. 23 6
      Cashier/obj/Debug/MenuPage.g.cs
  17. 18 7
      Cashier/obj/Debug/MenuPage.g.i.cs
  18. 39 1
      StoreServer/MonitoringCashierPage.xaml
  19. 191 2
      StoreServer/MonitoringCashierPage.xaml.cs
  20. 37 0
      StoreServer/OrderPartial.cs
  21. 16 0
      StoreServer/RootDataOfOrder.cs
  22. 22 0
      StoreServer/RootDataOfProductInOrder.cs
  23. 41 0
      StoreServer/StoreServer.csproj
  24. TEMPAT SAMPAH
      StoreServer/bin/Debug/StoreServer.exe
  25. TEMPAT SAMPAH
      StoreServer/bin/Debug/StoreServer.pdb
  26. TEMPAT SAMPAH
      StoreServer/obj/Debug/DesignTimeResolveAssemblyReferences.cache
  27. TEMPAT SAMPAH
      StoreServer/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  28. TEMPAT SAMPAH
      StoreServer/obj/Debug/MonitoringCashierPage.baml
  29. 97 1
      StoreServer/obj/Debug/MonitoringCashierPage.g.cs
  30. 97 1
      StoreServer/obj/Debug/MonitoringCashierPage.g.i.cs
  31. 1 1
      StoreServer/obj/Debug/StoreServer.csproj.CoreCompileInputs.cache
  32. 1 0
      StoreServer/obj/Debug/StoreServer.csproj.FileListAbsolute.txt
  33. TEMPAT SAMPAH
      StoreServer/obj/Debug/StoreServer.csproj.ResolveComReference.cache
  34. TEMPAT SAMPAH
      StoreServer/obj/Debug/StoreServer.csprojAssemblyReference.cache
  35. TEMPAT SAMPAH
      StoreServer/obj/Debug/StoreServer.exe
  36. TEMPAT SAMPAH
      StoreServer/obj/Debug/StoreServer.g.resources
  37. TEMPAT SAMPAH
      StoreServer/obj/Debug/StoreServer.pdb
  38. 2 2
      StoreServer/obj/Debug/StoreServer_MarkupCompile.cache
  39. 2 2
      StoreServer/obj/Debug/StoreServer_MarkupCompile.i.cache

TEMPAT SAMPAH
.vs/StoreAllProject/v16/.suo


+ 24 - 0
Cashier/MainWindow.xaml.cs

@@ -44,6 +44,30 @@ namespace Cashier
 
         private void BtnEndWorkShift_Click(object sender, RoutedEventArgs e)
         {
+            EndWorkShift(Helper.IDStore.ToString(), $"End work shift ={Helper.IDCashier}");
+            ManagerFrame.MainFrame.GoBack();
+        }
+
+        public async void EndWorkShift(string IDStore, string Message)
+        {
+            try
+            {
+                if (IDStore.Length == 1) IDStore = IDStore.Insert(0, "0");
+                IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), Convert.ToInt32("102" + IDStore));
+                Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+                socket.Connect(iPEndPoint);
+                byte[] data = Encoding.UTF8.GetBytes(Message);
+                socket.Send(data);
+                Helper.WorkShiftID = null;
+                BtnEndWorkShift.IsEnabled = false;
+                BtnStartWorkShift.IsEnabled = true;
+                socket.Shutdown(SocketShutdown.Both);
+                socket.Close();
+            }
+            catch (Exception)
+            {
+                Helper.ErrorMessage("Нет ответа от сервера");
+            }
 
         }
 

+ 2 - 1
Cashier/MenuPage.xaml

@@ -65,7 +65,8 @@
                         </DataGrid>
                         <TextBlock Text="Общая стоимость" Grid.Row="1" VerticalAlignment="Center" Margin="5"></TextBlock>
                         <TextBlock x:Name="TxtTotalCost" Grid.Row="1" Grid.Column="1" VerticalAlignment="Center" Margin="5"></TextBlock>
-                        <Button x:Name="BtnCreateOrder" Grid.Row="2" Grid.ColumnSpan="2" Height="30" Margin="100,15,100,15" Click="BtnCreateOrder_Click">Оплатить</Button>
+                        <ComboBox Grid.Row="2" Height="30" Margin="5" Name="CmbTypeOfPayment" SelectedIndex="0"></ComboBox>
+                        <Button x:Name="BtnCreateOrder" Grid.Row="2" Grid.Column="1" Height="30" Margin="10" Click="BtnCreateOrder_Click">Оплатить</Button>
                     </Grid>
                 </Grid>
             </TabItem>

+ 18 - 11
Cashier/MenuPage.xaml.cs

@@ -30,6 +30,10 @@ namespace Cashier
         public MenuPage()
         {
             InitializeComponent();
+            List<string> TypeOfPayment = new List<string>();
+            TypeOfPayment.Add("Наличные");
+            TypeOfPayment.Add("Карта");
+            CmbTypeOfPayment.ItemsSource = TypeOfPayment;
             TabCashier.SelectedIndex = 1;
             BtnPayment.IsEnabled = Helper.WorkShiftID is null ? false : true;
             ProductInStoreList.ItemsSource = Helper.ProductInStore;
@@ -94,12 +98,20 @@ namespace Cashier
             TotalCost();
         }
 
+        public void Print()
+        {
+            PrintDialog printDialog = new PrintDialog();
+            TextBlock DataOfOrder = new TextBlock();
+            string Text = "";
+        }
+
         public async void PostDataOfOrder()
         {
             RootDataOfOrder rootDataOfOrder = new RootDataOfOrder()
             {
                 Date = DateTime.Now,
                 IDWorkShift = Helper.WorkShiftID.Value,
+                IDPaymentMetod = CmbTypeOfPayment.SelectedIndex + 1,
                 ProductInOrders = ProductInOrder.ToList()
             };
             string Message = "Data of Order =" + JsonConvert.SerializeObject(rootDataOfOrder);
@@ -110,20 +122,15 @@ namespace Cashier
             await socket.ConnectAsync(iPEndPoint);
             byte[] data = Encoding.UTF8.GetBytes(Message);
             socket.Send(data);
-            StringBuilder builder = new StringBuilder();
-            data = new byte[256];
-            int bytes = 0;
-            do
-            {
-                bytes = socket.Receive(data);
-                builder.Append(Encoding.UTF8.GetString(data, 0, bytes));
-            } while (socket.Available >0);
-            string response = builder.ToString();
         }
-
         private void BtnCreateOrder_Click(object sender, RoutedEventArgs e)
         {
-
+            if (ProductInOrder.Count == 0)
+            {
+                return;
+            }
+            PostDataOfOrder();
+            ProductInOrder.Clear();
         }
     }
 }

+ 1 - 0
Cashier/RootDataOfOrder.cs

@@ -10,6 +10,7 @@ namespace Cashier
     {
         public DateTime Date { get; set; }
         public int IDWorkShift { get; set; }
+        public int IDPaymentMetod { get; set; }
         public List<RootDataOfProductInOrder> ProductInOrders { get; set; }
     }
 }

TEMPAT SAMPAH
Cashier/bin/Debug/Cashier.exe


TEMPAT SAMPAH
Cashier/bin/Debug/Cashier.pdb


TEMPAT SAMPAH
Cashier/obj/Debug/Cashier.csprojAssemblyReference.cache


TEMPAT SAMPAH
Cashier/obj/Debug/Cashier.exe


TEMPAT SAMPAH
Cashier/obj/Debug/Cashier.g.resources


TEMPAT SAMPAH
Cashier/obj/Debug/Cashier.pdb


+ 1 - 1
Cashier/obj/Debug/Cashier_MarkupCompile.i.cache

@@ -16,5 +16,5 @@ C:\Users\gr672_pgv\source\repos\StoreAllProject\Cashier\App.xaml
 14-708277382
 EnabledCashierWindow.xaml;MainWindow.xaml;MenuPage.xaml;StartWorkPage.xaml;
 
-False
+True
 

+ 4 - 0
Cashier/obj/Debug/Cashier_MarkupCompile.i.lref

@@ -0,0 +1,4 @@
+
+
+FC:\Users\gr672_pgv\source\repos\StoreAllProject\Cashier\MenuPage.xaml;;
+

TEMPAT SAMPAH
Cashier/obj/Debug/DesignTimeResolveAssemblyReferences.cache


TEMPAT SAMPAH
Cashier/obj/Debug/MenuPage.baml


+ 23 - 6
Cashier/obj/Debug/MenuPage.g.cs

@@ -1,4 +1,4 @@
-#pragma checksum "..\..\MenuPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "63A468099F4CE4187EDFB1C5E2B0E2897FF5A13E93B8255C1D08371964B75D81"
+#pragma checksum "..\..\MenuPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "4937DF4E11AACA8A4FFFE138438A8CF625D59B2F3CD3851E49FA10BDC442E2D8"
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
@@ -99,13 +99,21 @@ namespace Cashier {
         
         #line 68 "..\..\MenuPage.xaml"
         [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.ComboBox CmbTypeOfPayment;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 69 "..\..\MenuPage.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
         internal System.Windows.Controls.Button BtnCreateOrder;
         
         #line default
         #line hidden
         
         
-        #line 84 "..\..\MenuPage.xaml"
+        #line 85 "..\..\MenuPage.xaml"
         [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
         internal System.Windows.Controls.TextBox TxtSearch;
         
@@ -113,7 +121,7 @@ namespace Cashier {
         #line hidden
         
         
-        #line 86 "..\..\MenuPage.xaml"
+        #line 87 "..\..\MenuPage.xaml"
         [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
         internal System.Windows.Controls.ListView ProductInStoreList;
         
@@ -178,18 +186,27 @@ namespace Cashier {
             this.TxtTotalCost = ((System.Windows.Controls.TextBlock)(target));
             return;
             case 9:
-            this.BtnCreateOrder = ((System.Windows.Controls.Button)(target));
+            this.CmbTypeOfPayment = ((System.Windows.Controls.ComboBox)(target));
             return;
             case 10:
+            this.BtnCreateOrder = ((System.Windows.Controls.Button)(target));
+            
+            #line 69 "..\..\MenuPage.xaml"
+            this.BtnCreateOrder.Click += new System.Windows.RoutedEventHandler(this.BtnCreateOrder_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 11:
             this.TxtSearch = ((System.Windows.Controls.TextBox)(target));
             
-            #line 84 "..\..\MenuPage.xaml"
+            #line 85 "..\..\MenuPage.xaml"
             this.TxtSearch.TextChanged += new System.Windows.Controls.TextChangedEventHandler(this.TxtSearch_TextChanged);
             
             #line default
             #line hidden
             return;
-            case 11:
+            case 12:
             this.ProductInStoreList = ((System.Windows.Controls.ListView)(target));
             return;
             }

+ 18 - 7
Cashier/obj/Debug/MenuPage.g.i.cs

@@ -1,4 +1,4 @@
-#pragma checksum "..\..\MenuPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "204F61AB256193FD698DCA97BEAB66709DB5DBCB8FB8D04589133C2FA73E685B"
+#pragma checksum "..\..\MenuPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "4937DF4E11AACA8A4FFFE138438A8CF625D59B2F3CD3851E49FA10BDC442E2D8"
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
@@ -99,13 +99,21 @@ namespace Cashier {
         
         #line 68 "..\..\MenuPage.xaml"
         [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.ComboBox CmbTypeOfPayment;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 69 "..\..\MenuPage.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
         internal System.Windows.Controls.Button BtnCreateOrder;
         
         #line default
         #line hidden
         
         
-        #line 84 "..\..\MenuPage.xaml"
+        #line 85 "..\..\MenuPage.xaml"
         [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
         internal System.Windows.Controls.TextBox TxtSearch;
         
@@ -113,7 +121,7 @@ namespace Cashier {
         #line hidden
         
         
-        #line 86 "..\..\MenuPage.xaml"
+        #line 87 "..\..\MenuPage.xaml"
         [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
         internal System.Windows.Controls.ListView ProductInStoreList;
         
@@ -178,24 +186,27 @@ namespace Cashier {
             this.TxtTotalCost = ((System.Windows.Controls.TextBlock)(target));
             return;
             case 9:
+            this.CmbTypeOfPayment = ((System.Windows.Controls.ComboBox)(target));
+            return;
+            case 10:
             this.BtnCreateOrder = ((System.Windows.Controls.Button)(target));
             
-            #line 68 "..\..\MenuPage.xaml"
+            #line 69 "..\..\MenuPage.xaml"
             this.BtnCreateOrder.Click += new System.Windows.RoutedEventHandler(this.BtnCreateOrder_Click);
             
             #line default
             #line hidden
             return;
-            case 10:
+            case 11:
             this.TxtSearch = ((System.Windows.Controls.TextBox)(target));
             
-            #line 84 "..\..\MenuPage.xaml"
+            #line 85 "..\..\MenuPage.xaml"
             this.TxtSearch.TextChanged += new System.Windows.Controls.TextChangedEventHandler(this.TxtSearch_TextChanged);
             
             #line default
             #line hidden
             return;
-            case 11:
+            case 12:
             this.ProductInStoreList = ((System.Windows.Controls.ListView)(target));
             return;
             }

+ 39 - 1
StoreServer/MonitoringCashierPage.xaml

@@ -26,7 +26,45 @@
             </TabItem>
             <TabItem Header="Отчёты">
                 <Grid>
-                    
+                    <Grid.RowDefinitions>
+                        <RowDefinition Height="50"/>
+                        <RowDefinition/>
+                        <RowDefinition Height="50"/>
+                    </Grid.RowDefinitions>
+                    <Grid>
+                        <Grid.ColumnDefinitions>
+                            <ColumnDefinition Width="Auto"/>
+                            <ColumnDefinition/>
+                            <ColumnDefinition Width="Auto"/>
+                            <ColumnDefinition/>
+                            <ColumnDefinition Width="Auto"/>
+                            <ColumnDefinition/>
+                        </Grid.ColumnDefinitions>
+                        <TextBlock VerticalAlignment="Center" Margin="5">Касса</TextBlock>
+                        <ComboBox Grid.Column="1" Margin="10,5,10,5" Name="CmbCasier" DisplayMemberPath="NumberCasier" SelectedIndex="0" SelectionChanged="CmbCasier_SelectionChanged"></ComboBox>
+                        <TextBlock VerticalAlignment="Center" Grid.Column="2" Margin="5">Начало</TextBlock>
+                        <DatePicker Name="DaPStartDate" Grid.Column="3" VerticalAlignment="Center" Margin="5" SelectedDateChanged="DaPStartDate_SelectedDateChanged"></DatePicker>
+                        <TextBlock VerticalAlignment="Center" Grid.Column="4" Margin="5">Конец</TextBlock>
+                        <DatePicker Name="DaPEndDate" Grid.Column="5" VerticalAlignment="Center" Margin="5" SelectedDateChanged="DaPEndDate_SelectedDateChanged"></DatePicker>
+                    </Grid>
+                    <DataGrid Grid.Row="1" x:Name="OrderList" AutoGenerateColumns="False" IsReadOnly="True" CanUserAddRows="False" CanUserDeleteRows="False">
+                        <DataGrid.Columns>
+                            <DataGridTextColumn Header="Касса" Binding="{Binding WorkShift.Cashier.CashierID}"></DataGridTextColumn>
+                            <DataGridTextColumn Header="Сотрудник" Binding="{Binding WorkShift.EmployeeInStore.Employee.FullName}"></DataGridTextColumn>
+                            <DataGridTextColumn Header="Номер заказа" Binding="{Binding OrderID}"></DataGridTextColumn>
+                            <DataGridTextColumn Header="Дата" Binding="{Binding Date, StringFormat={}{0:dd.MM.yyyy}}"></DataGridTextColumn>
+                            <DataGridTextColumn Header="Продукты" Binding="{Binding ProductInOrderString}"></DataGridTextColumn>
+                            <DataGridTextColumn Header="Стоимость" Binding="{Binding CostOfOrder}"></DataGridTextColumn>
+                        </DataGrid.Columns>
+                    </DataGrid>
+                    <Grid Grid.Row="2">
+                        <Grid.ColumnDefinitions>
+                            <ColumnDefinition/>
+                            <ColumnDefinition/>
+                        </Grid.ColumnDefinitions>
+                        <Button x:Name="BtnInToPDF" Click="BtnInToPDF_Click" Margin="100,10,100,10">В PDF</Button>
+                        <Button x:Name="BtnInToCSV" Grid.Column="1" Click="BtnInToCSV_Click" Margin="100,10,100,10">В CSV</Button>
+                    </Grid>
                 </Grid>
             </TabItem>
         </TabControl>

+ 191 - 2
StoreServer/MonitoringCashierPage.xaml.cs

@@ -1,4 +1,5 @@
-using Newtonsoft.Json;
+using Microsoft.Win32;
+using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -15,7 +16,8 @@ using System.Windows.Media;
 using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
-
+using Excel = Microsoft.Office.Interop.Excel;
+using Word = Microsoft.Office.Interop.Word;
 namespace StoreServer
 {
     /// <summary>
@@ -27,6 +29,7 @@ namespace StoreServer
         public MonitoringCashierPage()
         {
             InitializeComponent();
+            List<StringFormatCasier> cashier = new List<StringFormatCasier>();
             foreach (var item in Helper.FindStore.Cashier)
             {
                 WorkShiftOnCashier.Add(new WorkShift
@@ -36,12 +39,44 @@ namespace StoreServer
                     Cashier = item,
                     EmployeeInStore = null
                 });
+                cashier.Add(new StringFormatCasier { NumberCasier = "№" + item.CashierID.ToString(), Number = item.CashierID });
             }
+            cashier.Insert(0, new StringFormatCasier { NumberCasier = "Все кассы", Number = 0 });
+            CmbCasier.ItemsSource = cashier;
+            DaPStartDate.SelectedDate = DateTime.Now;
+            DaPEndDate.SelectedDate = DateTime.Now.AddDays(30);
             ListCashier.ItemsSource = WorkShiftOnCashier;
             StartSocketServer();
             StartHttpServer();
+            ShowData();
         }
 
+        public void ShowData()
+        {
+            if (DaPStartDate.SelectedDate == null || DaPEndDate.SelectedDate == null)
+            {
+                return;
+            }
+            if (CmbCasier.SelectedIndex == 0)
+            {
+                OrderList.ItemsSource = DB.db.Order.Where(x => x.Date >= DaPStartDate.SelectedDate
+                && x.Date <= DaPEndDate.SelectedDate).ToList();
+                return;
+            }
+            int NumberCasier = (CmbCasier.SelectedItem as StringFormatCasier).Number;
+            OrderList.ItemsSource = DB.db.Order.Where(x => x.Date >= DaPStartDate.SelectedDate
+            && x.Date <= DaPEndDate.SelectedDate
+            && x.WorkShift.Cashier.CashierID == NumberCasier).ToList();
+
+        }
+
+        public class StringFormatCasier
+        {
+            public string NumberCasier { get; set; }
+            public int Number { get; set; }
+        }
+
+
         public void StartWorkCashier(int CashierID, EmployeeInStore AuthEmployee)
         {
             var CurrentWorkShift = WorkShiftOnCashier.FirstOrDefault(x => x.Cashier.CashierID == CashierID);
@@ -53,11 +88,32 @@ namespace StoreServer
         public void StartWorkShift(int CashierID)
         {
             var CurrentWorkShift = WorkShiftOnCashier.FirstOrDefault(x => x.Cashier.CashierID == CashierID);
+            if (CurrentWorkShift.EndDateAndTimeWork != null)
+            {
+                var NewWorkShift = new WorkShift()
+                {
+                    StartDateAndTimeWork = null,
+                    EndDateAndTimeWork = null,
+                    Cashier = CurrentWorkShift.Cashier,
+                    EmployeeInStore = CurrentWorkShift.EmployeeInStore
+                };
+                WorkShiftOnCashier.Remove(CurrentWorkShift);
+                WorkShiftOnCashier.Add(NewWorkShift);
+            }
             CurrentWorkShift.StartDateAndTimeWork = DateTime.Now;
             ListCashier.ItemsSource = null;
             ListCashier.ItemsSource = WorkShiftOnCashier;
         }
 
+        public void EndWorkShift(int CashierID)
+        {
+            var CurrentWorkShift = WorkShiftOnCashier.FirstOrDefault(x => x.Cashier.CashierID == CashierID);
+            CurrentWorkShift.EndDateAndTimeWork = DateTime.Now;
+            ListCashier.ItemsSource = null;
+            ListCashier.ItemsSource = WorkShiftOnCashier;
+        }
+
+
         public async void StartSocketServer()
         {
             string IDStore = Helper.FindStore.StoreID.ToString();
@@ -137,6 +193,53 @@ namespace StoreServer
                     SocketClient.Shutdown(SocketShutdown.Both);
                     SocketClient.Close();
                 }
+                if (Message.Contains("End work shift ="))
+                {
+                    int CashierID = Convert.ToInt32(Message.Split('=')[1]);
+                    EndWorkShift(CashierID);
+                    var CurrentWorkShift = WorkShiftOnCashier.FirstOrDefault(x => x.Cashier.CashierID == CashierID);
+                    var FindWorkShift =  DB.db.WorkShift.Find(CurrentWorkShift.WorkShiftID);
+                    FindWorkShift.EndDateAndTimeWork = CurrentWorkShift.EndDateAndTimeWork;
+                    DB.db.SaveChanges();
+                    byte[] buffer = Encoding.UTF8.GetBytes(CurrentWorkShift.WorkShiftID.ToString());
+                    SocketClient.Send(buffer);
+                    SocketClient.Shutdown(SocketShutdown.Both);
+                    SocketClient.Close();
+                }
+                if (Message.Contains("Data of Order ="))
+                {
+                    string JsonDataOfOrder = Message.Split('=')[1];
+                    var PostOrder = JsonConvert.DeserializeObject<RootDataOfOrder>(JsonDataOfOrder);
+                    Order NewOrder = new Order
+                    {
+                        Date = PostOrder.Date,
+                        IDWorkShift = PostOrder.IDWorkShift,
+                        State = true,
+                        
+                    };
+                    DB.db.Order.Add(NewOrder);
+                    DB.db.SaveChanges();
+                    List<ProductInOrder> productInOrders = new List<ProductInOrder>();
+                    foreach (var item in PostOrder.ProductInOrders)
+                    {
+                        productInOrders.Add(new ProductInOrder
+                        {
+                            AmountProduct = item.AmountProduct,
+                            IDOrder = NewOrder.OrderID,
+                            IDProduct = item.ProductInStore.ProductInStoreID
+                        });
+                    }
+                    DB.db.ProductInOrder.AddRange(productInOrders);
+                    DB.db.SaveChanges();
+                    foreach (var item in productInOrders)
+                    {
+                        var ProductInStore = DB.db.ProductInStore.Find(item.IDProduct);
+                        ProductInStore.RemainsProduct = ProductInStore.RemainsProduct - item.AmountProduct;
+                        DB.db.SaveChanges();
+                    }
+                    SocketClient.Shutdown(SocketShutdown.Both);
+                    SocketClient.Close();
+                }
             }
         } 
 
@@ -151,5 +254,91 @@ namespace StoreServer
                 HttpListenerRequest request = context.Request;
             }
         }
+
+
+        private void BtnInToPDF_Click(object sender, RoutedEventArgs e)
+        {
+            if ((OrderList.ItemsSource as List<Order>).Count == 0)
+            {
+                return;
+            }
+            SaveFileDialog saveFileDialog = new SaveFileDialog();
+            saveFileDialog.FileName = "PDFreport";
+            saveFileDialog.Filter = "PDF document |*.pdf";
+            if (saveFileDialog.ShowDialog() == true)
+            {
+                ToPDFText(saveFileDialog.FileName);
+            }
+        }
+
+        public void ToPDFTable()
+        {
+            Word.Application app = new Word.Application();
+            Word.Document doc = app.Documents.Add();
+        }
+
+        public void ToPDFText(string Path)
+        {
+            Word.Application app = new Word.Application();
+            Word.Document doc = app.Documents.Add();
+            Word.Paragraph paragraph = doc.Paragraphs.Add();
+            List<Order> Orders = OrderList.ItemsSource as List<Order>;
+            string Data = $"Отчётный период: c {DaPStartDate.SelectedDate.Value.ToString("dd.MM.yyyy")} по {DaPEndDate.SelectedDate.Value.ToString("dd.MM.yyyy")}\n\n";
+            foreach (var item in Orders)
+            {
+                Data += $"Касса №: {item.WorkShift.Cashier.CashierID}\n" +
+                    $"Кассир: {item.WorkShift.EmployeeInStore.Employee.FullName}\n" +
+                    $"Номер заказа: {item.OrderID}\n" +
+                    $"Дата: {item.Date.ToString("dd.MM.yyyy")}\n" +
+                    $"Продукт: {item.ProductInOrderString}" +
+                    $"Стоимость: {item.CostOfOrder}\n\n";
+            }
+            paragraph.Range.Text = Data;
+            doc.SaveAs2(Path, Word.WdSaveFormat.wdFormatPDF);
+        }
+
+        public void ToCSV(string Path)
+        {
+            Excel.Application app = new Excel.Application();
+            Excel.Workbook workbook = app.Workbooks.Add();
+            Excel.Worksheet worksheet = workbook.Worksheets.Add();
+            OrderList.SelectAllCells();
+            OrderList.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
+            ApplicationCommands.Copy.Execute(null, OrderList);
+            worksheet.Paste();
+            workbook.SaveAs(Path);
+            workbook.Close();
+            app.Quit();
+        }
+
+        private void BtnInToCSV_Click(object sender, RoutedEventArgs e)
+        {
+            if ((OrderList.ItemsSource as List<Order>).Count == 0)
+            {
+                return;
+            }
+            SaveFileDialog saveFileDialog = new SaveFileDialog();
+            saveFileDialog.FileName = "CSVreport";
+            saveFileDialog.Filter = "CSV document |*.csv";
+            if (saveFileDialog.ShowDialog()==true)
+            {
+                ToCSV(saveFileDialog.FileName);
+            }
+        }
+
+        private void CmbCasier_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            ShowData();
+        }
+
+        private void DaPStartDate_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
+        {
+            ShowData();
+        }
+
+        private void DaPEndDate_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
+        {
+            ShowData();
+        }
     }
 }

+ 37 - 0
StoreServer/OrderPartial.cs

@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StoreServer
+{
+    partial class Order
+    {
+        public string ProductInOrderString
+        {
+            get
+            {
+                string Product = "";
+                foreach (var item in ProductInOrder)
+                {
+                    Product += $"{item.ProductInStore.Product.NameProduct} {item.AmountProduct.ToString("F2")} руб. * {item.AmountProduct}\n";
+                }
+                return Product;
+            }
+        }
+
+        public decimal CostOfOrder
+        {
+            get
+            {
+                decimal Cost = 0;
+                foreach (var item in ProductInOrder)
+                {
+                    Cost += item.ProductInStore.Product.PriceOfOne * item.AmountProduct;
+                }
+                return Cost;
+            }
+        }
+    }
+}

+ 16 - 0
StoreServer/RootDataOfOrder.cs

@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StoreServer
+{
+    class RootDataOfOrder
+    {
+        public DateTime Date { get; set; }
+        public int IDWorkShift { get; set; }
+        public int IDPaymentMetod { get; set; }
+        public List<RootDataOfProductInOrder> ProductInOrders { get; set; }
+    }
+}

+ 22 - 0
StoreServer/RootDataOfProductInOrder.cs

@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StoreServer
+{
+    class RootDataOfProductInOrder
+    {
+        public RootDataOfProductInStore ProductInStore { get; set; }
+        public int AmountProduct { get; set; }
+
+        public decimal Cost {
+            get
+            {
+                return ProductInStore.PriceOfOne * AmountProduct;
+            }
+
+        }
+    }
+}

+ 41 - 0
StoreServer/StoreServer.csproj

@@ -100,6 +100,7 @@
     <Compile Include="Order.cs">
       <DependentUpon>ModelStore.tt</DependentUpon>
     </Compile>
+    <Compile Include="OrderPartial.cs" />
     <Compile Include="PaymentMetod.cs">
       <DependentUpon>ModelStore.tt</DependentUpon>
     </Compile>
@@ -115,6 +116,8 @@
     <Compile Include="ProductInStore.cs">
       <DependentUpon>ModelStore.tt</DependentUpon>
     </Compile>
+    <Compile Include="RootDataOfOrder.cs" />
+    <Compile Include="RootDataOfProductInOrder.cs" />
     <Compile Include="RootDataOfProductInStore.cs" />
     <Compile Include="StartWorkPage.xaml.cs">
       <DependentUpon>StartWorkPage.xaml</DependentUpon>
@@ -197,5 +200,43 @@
   <ItemGroup>
     <Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" />
   </ItemGroup>
+  <ItemGroup>
+    <COMReference Include="Microsoft.Office.Core">
+      <Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
+      <VersionMajor>2</VersionMajor>
+      <VersionMinor>7</VersionMinor>
+      <Lcid>0</Lcid>
+      <WrapperTool>primary</WrapperTool>
+      <Isolated>False</Isolated>
+      <EmbedInteropTypes>True</EmbedInteropTypes>
+    </COMReference>
+    <COMReference Include="Microsoft.Office.Interop.Excel">
+      <Guid>{00020813-0000-0000-C000-000000000046}</Guid>
+      <VersionMajor>1</VersionMajor>
+      <VersionMinor>8</VersionMinor>
+      <Lcid>0</Lcid>
+      <WrapperTool>primary</WrapperTool>
+      <Isolated>False</Isolated>
+      <EmbedInteropTypes>True</EmbedInteropTypes>
+    </COMReference>
+    <COMReference Include="Microsoft.Office.Interop.Word">
+      <Guid>{00020905-0000-0000-C000-000000000046}</Guid>
+      <VersionMajor>8</VersionMajor>
+      <VersionMinor>6</VersionMinor>
+      <Lcid>0</Lcid>
+      <WrapperTool>primary</WrapperTool>
+      <Isolated>False</Isolated>
+      <EmbedInteropTypes>True</EmbedInteropTypes>
+    </COMReference>
+    <COMReference Include="VBIDE">
+      <Guid>{0002E157-0000-0000-C000-000000000046}</Guid>
+      <VersionMajor>5</VersionMajor>
+      <VersionMinor>3</VersionMinor>
+      <Lcid>0</Lcid>
+      <WrapperTool>primary</WrapperTool>
+      <Isolated>False</Isolated>
+      <EmbedInteropTypes>True</EmbedInteropTypes>
+    </COMReference>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 </Project>

TEMPAT SAMPAH
StoreServer/bin/Debug/StoreServer.exe


TEMPAT SAMPAH
StoreServer/bin/Debug/StoreServer.pdb


TEMPAT SAMPAH
StoreServer/obj/Debug/DesignTimeResolveAssemblyReferences.cache


TEMPAT SAMPAH
StoreServer/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


TEMPAT SAMPAH
StoreServer/obj/Debug/MonitoringCashierPage.baml


+ 97 - 1
StoreServer/obj/Debug/MonitoringCashierPage.g.cs

@@ -1,4 +1,4 @@
-#pragma checksum "..\..\MonitoringCashierPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "54BC7F19BFF825FEB6719E7C759D341B9F94A25A24B8F965DA1A74C5BDB51D50"
+#pragma checksum "..\..\MonitoringCashierPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "5721D6C6D4EB46A5CF14CDBC962773B6ADE4CEAA8C105D7139DE004C0F6B850E"
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
@@ -48,6 +48,54 @@ namespace StoreServer {
         #line default
         #line hidden
         
+        
+        #line 44 "..\..\MonitoringCashierPage.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.ComboBox CmbCasier;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 46 "..\..\MonitoringCashierPage.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.DatePicker DaPStartDate;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 48 "..\..\MonitoringCashierPage.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.DatePicker DaPEndDate;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 50 "..\..\MonitoringCashierPage.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.DataGrid OrderList;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 65 "..\..\MonitoringCashierPage.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Button BtnInToPDF;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 66 "..\..\MonitoringCashierPage.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Button BtnInToCSV;
+        
+        #line default
+        #line hidden
+        
         private bool _contentLoaded;
         
         /// <summary>
@@ -81,6 +129,54 @@ namespace StoreServer {
             case 1:
             this.ListCashier = ((System.Windows.Controls.DataGrid)(target));
             return;
+            case 2:
+            this.CmbCasier = ((System.Windows.Controls.ComboBox)(target));
+            
+            #line 44 "..\..\MonitoringCashierPage.xaml"
+            this.CmbCasier.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.CmbCasier_SelectionChanged);
+            
+            #line default
+            #line hidden
+            return;
+            case 3:
+            this.DaPStartDate = ((System.Windows.Controls.DatePicker)(target));
+            
+            #line 46 "..\..\MonitoringCashierPage.xaml"
+            this.DaPStartDate.SelectedDateChanged += new System.EventHandler<System.Windows.Controls.SelectionChangedEventArgs>(this.DaPStartDate_SelectedDateChanged);
+            
+            #line default
+            #line hidden
+            return;
+            case 4:
+            this.DaPEndDate = ((System.Windows.Controls.DatePicker)(target));
+            
+            #line 48 "..\..\MonitoringCashierPage.xaml"
+            this.DaPEndDate.SelectedDateChanged += new System.EventHandler<System.Windows.Controls.SelectionChangedEventArgs>(this.DaPEndDate_SelectedDateChanged);
+            
+            #line default
+            #line hidden
+            return;
+            case 5:
+            this.OrderList = ((System.Windows.Controls.DataGrid)(target));
+            return;
+            case 6:
+            this.BtnInToPDF = ((System.Windows.Controls.Button)(target));
+            
+            #line 65 "..\..\MonitoringCashierPage.xaml"
+            this.BtnInToPDF.Click += new System.Windows.RoutedEventHandler(this.BtnInToPDF_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 7:
+            this.BtnInToCSV = ((System.Windows.Controls.Button)(target));
+            
+            #line 66 "..\..\MonitoringCashierPage.xaml"
+            this.BtnInToCSV.Click += new System.Windows.RoutedEventHandler(this.BtnInToCSV_Click);
+            
+            #line default
+            #line hidden
+            return;
             }
             this._contentLoaded = true;
         }

+ 97 - 1
StoreServer/obj/Debug/MonitoringCashierPage.g.i.cs

@@ -1,4 +1,4 @@
-#pragma checksum "..\..\MonitoringCashierPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "54BC7F19BFF825FEB6719E7C759D341B9F94A25A24B8F965DA1A74C5BDB51D50"
+#pragma checksum "..\..\MonitoringCashierPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "5721D6C6D4EB46A5CF14CDBC962773B6ADE4CEAA8C105D7139DE004C0F6B850E"
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
@@ -48,6 +48,54 @@ namespace StoreServer {
         #line default
         #line hidden
         
+        
+        #line 44 "..\..\MonitoringCashierPage.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.ComboBox CmbCasier;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 46 "..\..\MonitoringCashierPage.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.DatePicker DaPStartDate;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 48 "..\..\MonitoringCashierPage.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.DatePicker DaPEndDate;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 50 "..\..\MonitoringCashierPage.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.DataGrid OrderList;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 65 "..\..\MonitoringCashierPage.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Button BtnInToPDF;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 66 "..\..\MonitoringCashierPage.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Button BtnInToCSV;
+        
+        #line default
+        #line hidden
+        
         private bool _contentLoaded;
         
         /// <summary>
@@ -81,6 +129,54 @@ namespace StoreServer {
             case 1:
             this.ListCashier = ((System.Windows.Controls.DataGrid)(target));
             return;
+            case 2:
+            this.CmbCasier = ((System.Windows.Controls.ComboBox)(target));
+            
+            #line 44 "..\..\MonitoringCashierPage.xaml"
+            this.CmbCasier.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.CmbCasier_SelectionChanged);
+            
+            #line default
+            #line hidden
+            return;
+            case 3:
+            this.DaPStartDate = ((System.Windows.Controls.DatePicker)(target));
+            
+            #line 46 "..\..\MonitoringCashierPage.xaml"
+            this.DaPStartDate.SelectedDateChanged += new System.EventHandler<System.Windows.Controls.SelectionChangedEventArgs>(this.DaPStartDate_SelectedDateChanged);
+            
+            #line default
+            #line hidden
+            return;
+            case 4:
+            this.DaPEndDate = ((System.Windows.Controls.DatePicker)(target));
+            
+            #line 48 "..\..\MonitoringCashierPage.xaml"
+            this.DaPEndDate.SelectedDateChanged += new System.EventHandler<System.Windows.Controls.SelectionChangedEventArgs>(this.DaPEndDate_SelectedDateChanged);
+            
+            #line default
+            #line hidden
+            return;
+            case 5:
+            this.OrderList = ((System.Windows.Controls.DataGrid)(target));
+            return;
+            case 6:
+            this.BtnInToPDF = ((System.Windows.Controls.Button)(target));
+            
+            #line 65 "..\..\MonitoringCashierPage.xaml"
+            this.BtnInToPDF.Click += new System.Windows.RoutedEventHandler(this.BtnInToPDF_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 7:
+            this.BtnInToCSV = ((System.Windows.Controls.Button)(target));
+            
+            #line 66 "..\..\MonitoringCashierPage.xaml"
+            this.BtnInToCSV.Click += new System.Windows.RoutedEventHandler(this.BtnInToCSV_Click);
+            
+            #line default
+            #line hidden
+            return;
             }
             this._contentLoaded = true;
         }

+ 1 - 1
StoreServer/obj/Debug/StoreServer.csproj.CoreCompileInputs.cache

@@ -1 +1 @@
-9fc82effdaee8cec17d6646aa837f70288735117
+df6e8174c1fc7ee46e58c9cafe5aaa34a3067116

+ 1 - 0
StoreServer/obj/Debug/StoreServer.csproj.FileListAbsolute.txt

@@ -26,3 +26,4 @@ C:\Users\gr672_pgv\source\repos\StoreAllProject\StoreServer\bin\Debug\EntityFram
 C:\Users\gr672_pgv\source\repos\StoreAllProject\StoreServer\bin\Debug\EntityFramework.xml
 C:\Users\gr672_pgv\source\repos\StoreAllProject\StoreServer\bin\Debug\EntityFramework.SqlServer.xml
 C:\Users\gr672_pgv\source\repos\StoreAllProject\StoreServer\obj\Debug\StoreServer_Content.g.cs
+C:\Users\gr672_pgv\source\repos\StoreAllProject\StoreServer\obj\Debug\StoreServer.csproj.ResolveComReference.cache

TEMPAT SAMPAH
StoreServer/obj/Debug/StoreServer.csproj.ResolveComReference.cache


TEMPAT SAMPAH
StoreServer/obj/Debug/StoreServer.csprojAssemblyReference.cache


TEMPAT SAMPAH
StoreServer/obj/Debug/StoreServer.exe


TEMPAT SAMPAH
StoreServer/obj/Debug/StoreServer.g.resources


TEMPAT SAMPAH
StoreServer/obj/Debug/StoreServer.pdb


+ 2 - 2
StoreServer/obj/Debug/StoreServer_MarkupCompile.cache

@@ -12,8 +12,8 @@ DEBUG;TRACE
 C:\Users\gr672_pgv\source\repos\StoreAllProject\StoreServer\App.xaml
 31785628841
 2484076859
-27692683996
-19-1590967236
+30-542523035
+23397261849
 MainWindow.xaml;MonitoringCashierPage.xaml;StartWorkPage.xaml;
 
 False

+ 2 - 2
StoreServer/obj/Debug/StoreServer_MarkupCompile.i.cache

@@ -12,8 +12,8 @@ DEBUG;TRACE
 C:\Users\gr672_pgv\source\repos\StoreAllProject\StoreServer\App.xaml
 31785628841
 2484076859
-28-149675371
-19-1590967236
+31-1384882402
+23397261849
 MainWindow.xaml;MonitoringCashierPage.xaml;StartWorkPage.xaml;
 
 True