|
@@ -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();
|
|
|
+ }
|
|
|
}
|
|
|
}
|