123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Net;
- using System.Net.Sockets;
- 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;
- namespace StoreServer
- {
- /// <summary>
- /// Interaction logic for MonitoringCashierPage.xaml
- /// </summary>
- public partial class MonitoringCashierPage : Page
- {
- public List<WorkShift> WorkShiftOnCashier = new List<WorkShift>();
- public MonitoringCashierPage()
- {
- InitializeComponent();
- foreach (var item in Helper.FindStore.Cashier)
- {
- WorkShiftOnCashier.Add(new WorkShift
- {
- StartDateAndTimeWork = null,
- EndDateAndTimeWork = null,
- Cashier = item,
- EmployeeInStore = null
- });
- }
- ListCashier.ItemsSource = WorkShiftOnCashier;
- StartSocketServer();
- StartHttpServer();
- }
- public void StartWorkCashier(int CashierID, EmployeeInStore AuthEmployee)
- {
- var CurrentWorkShift = WorkShiftOnCashier.FirstOrDefault(x => x.Cashier.CashierID == CashierID);
- CurrentWorkShift.EmployeeInStore = AuthEmployee;
- ListCashier.ItemsSource = null;
- ListCashier.ItemsSource = WorkShiftOnCashier;
- }
- public void StartWorkShift(int CashierID)
- {
- var CurrentWorkShift = WorkShiftOnCashier.FirstOrDefault(x => x.Cashier.CashierID == CashierID);
- CurrentWorkShift.StartDateAndTimeWork = DateTime.Now;
- ListCashier.ItemsSource = null;
- ListCashier.ItemsSource = WorkShiftOnCashier;
- }
- public async void StartSocketServer()
- {
- string IDStore = Helper.FindStore.StoreID.ToString();
- if (IDStore.Length == 1) IDStore = IDStore.Insert(0, "0");
- IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), Convert.ToInt32("102" + IDStore));
- Socket Listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- Listener.Bind(iPEndPoint);
- Listener.Listen(10);
- while (true)
- {
- Socket SocketClient = await Listener.AcceptAsync();
- StringBuilder stringBuilder = new StringBuilder();
- byte[] data = new byte[256];
- int bytes = 0;
- do
- {
- bytes = SocketClient.Receive(data, data.Length,0);
- stringBuilder = stringBuilder.Append(Encoding.UTF8.GetString(data, 0, bytes));
- } while (SocketClient.Available >0);
- string Message = stringBuilder.ToString();
- if (Message.Contains("Authorization - Code cashier="))
- {
- int NumberCashier = Convert.ToInt32(Message.Split(';')[0].Split('=')[1]);
- var FindCashier = DB.db.Cashier.FirstOrDefault(x => x.IDStore == Helper.FindStore.StoreID && x.CashierID == NumberCashier);
- if (FindCashier == null)
- {
- byte[] buffer = Encoding.UTF8.GetBytes("Магазин не поддерживает кассу с таким номером");
- SocketClient.Send(buffer);
- SocketClient.Shutdown(SocketShutdown.Both);
- SocketClient.Close();
- }
- else
- {
- string CodeEmployee = Message.Split('=')[2];
- var FindEmployee = DB.db.EmployeeInStore.FirstOrDefault(x => x.Employee.Code == CodeEmployee && x.IDStore == Helper.FindStore.StoreID);
- if (FindEmployee == null)
- {
- byte[] buffer = Encoding.UTF8.GetBytes("Сотрудник не найден");
- SocketClient.Send(buffer);
- SocketClient.Shutdown(SocketShutdown.Both);
- SocketClient.Close();
- }
- else
- {
- StartWorkCashier(FindCashier.CashierID, FindEmployee);
- List<RootDataOfProductInStore> dataOfProductInStores = new List<RootDataOfProductInStore>();
- foreach (var item in Helper.FindStore.ProductInStore)
- {
- dataOfProductInStores.Add(new RootDataOfProductInStore
- {
- ProductInStoreID = item.ProductInStoreID,
- RemainsProduct = item.RemainsProduct,
- NameProduct = item.Product.NameProduct,
- Weight = item.Product.Weight,
- Packaging = item.Product.Packaging,
- PriceOfOne = item.Product.PriceOfOne,
- BarCode = item.Product.BarCode
- });
- }
- string Json = JsonConvert.SerializeObject(dataOfProductInStores);
- byte[] buffer = Encoding.UTF8.GetBytes("Добро пожаловать =" + Json);
- SocketClient.Send(buffer);
- SocketClient.Shutdown(SocketShutdown.Both);
- SocketClient.Close();
- }
- }
- }
- if (Message.Contains("Start work shift ="))
- {
- int CashierID = Convert.ToInt32(Message.Split('=')[1]);
- StartWorkShift(CashierID);
- var CurrentWorkShift = WorkShiftOnCashier.FirstOrDefault(x => x.Cashier.CashierID == CashierID);
- DB.db.WorkShift.Add(CurrentWorkShift);
- DB.db.SaveChanges();
- byte[] buffer = Encoding.UTF8.GetBytes(CurrentWorkShift.WorkShiftID.ToString());
- SocketClient.Send(buffer);
- SocketClient.Shutdown(SocketShutdown.Both);
- SocketClient.Close();
- }
- }
- }
- public async void StartHttpServer()
- {
- HttpListener listener = new HttpListener();
- listener.Prefixes.Add("http://127.0.0.2:" + Helper.FindStore.StoreID.ToString() + "/");
- listener.Start();
- while (true)
- {
- HttpListenerContext context = await listener.GetContextAsync();
- HttpListenerRequest request = context.Request;
- }
- }
- }
- }
|