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 { /// /// Interaction logic for MonitoringCashierPage.xaml /// public partial class MonitoringCashierPage : Page { public List WorkShiftOnCashier = new List(); 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; } } } }