123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- 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.StartDateAndTimeWork = DateTime.Now;
- CurrentWorkShift.EmployeeInStore = AuthEmployee;
- ListCashier.ItemsSource = null;
- ListCashier.ItemsSource = WorkShiftOnCashier;
- }
- public async void StartSocketServer()
- {
- string IDStore = Helper.FindStore.StoreID.ToString();
- 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("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);
- byte[] buffer = Encoding.UTF8.GetBytes("Добро пожаловать");
- 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;
- }
- }
- }
- }
|