MonitoringCashierPage.xaml.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Net;
  6. using System.Net.Sockets;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows;
  10. using System.Windows.Controls;
  11. using System.Windows.Data;
  12. using System.Windows.Documents;
  13. using System.Windows.Input;
  14. using System.Windows.Media;
  15. using System.Windows.Media.Imaging;
  16. using System.Windows.Navigation;
  17. using System.Windows.Shapes;
  18. namespace StoreServer
  19. {
  20. /// <summary>
  21. /// Interaction logic for MonitoringCashierPage.xaml
  22. /// </summary>
  23. public partial class MonitoringCashierPage : Page
  24. {
  25. public List<WorkShift> WorkShiftOnCashier = new List<WorkShift>();
  26. public MonitoringCashierPage()
  27. {
  28. InitializeComponent();
  29. foreach (var item in Helper.FindStore.Cashier)
  30. {
  31. WorkShiftOnCashier.Add(new WorkShift
  32. {
  33. StartDateAndTimeWork = null,
  34. EndDateAndTimeWork = null,
  35. Cashier = item,
  36. EmployeeInStore = null
  37. });
  38. }
  39. ListCashier.ItemsSource = WorkShiftOnCashier;
  40. StartSocketServer();
  41. StartHttpServer();
  42. }
  43. public void StartWorkCashier(int CashierID, EmployeeInStore AuthEmployee)
  44. {
  45. var CurrentWorkShift = WorkShiftOnCashier.FirstOrDefault(x => x.Cashier.CashierID == CashierID);
  46. CurrentWorkShift.StartDateAndTimeWork = DateTime.Now;
  47. CurrentWorkShift.EmployeeInStore = AuthEmployee;
  48. ListCashier.ItemsSource = null;
  49. ListCashier.ItemsSource = WorkShiftOnCashier;
  50. }
  51. public async void StartSocketServer()
  52. {
  53. string IDStore = Helper.FindStore.StoreID.ToString();
  54. IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), Convert.ToInt32("102" + IDStore));
  55. Socket Listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  56. Listener.Bind(iPEndPoint);
  57. Listener.Listen(10);
  58. while (true)
  59. {
  60. Socket SocketClient = await Listener.AcceptAsync();
  61. StringBuilder stringBuilder = new StringBuilder();
  62. byte[] data = new byte[256];
  63. int bytes = 0;
  64. do
  65. {
  66. bytes = SocketClient.Receive(data, data.Length,0);
  67. stringBuilder = stringBuilder.Append(Encoding.UTF8.GetString(data, 0, bytes));
  68. } while (SocketClient.Available >0);
  69. string Message = stringBuilder.ToString();
  70. if (Message.Contains("Code cashier="))
  71. {
  72. int NumberCashier = Convert.ToInt32(Message.Split(';')[0].Split('=')[1]);
  73. var FindCashier = DB.db.Cashier.FirstOrDefault(x => x.IDStore == Helper.FindStore.StoreID && x.CashierID == NumberCashier);
  74. if (FindCashier == null)
  75. {
  76. byte[] buffer = Encoding.UTF8.GetBytes("Магазин не поддерживает кассу с таким номером");
  77. SocketClient.Send(buffer);
  78. SocketClient.Shutdown(SocketShutdown.Both);
  79. SocketClient.Close();
  80. }
  81. else
  82. {
  83. string CodeEmployee = Message.Split('=')[2];
  84. var FindEmployee = DB.db.EmployeeInStore.FirstOrDefault(x => x.Employee.Code == CodeEmployee && x.IDStore == Helper.FindStore.StoreID);
  85. if (FindEmployee == null)
  86. {
  87. byte[] buffer = Encoding.UTF8.GetBytes("Сотрудник не найден");
  88. SocketClient.Send(buffer);
  89. SocketClient.Shutdown(SocketShutdown.Both);
  90. SocketClient.Close();
  91. }
  92. else
  93. {
  94. StartWorkCashier(FindCashier.CashierID, FindEmployee);
  95. byte[] buffer = Encoding.UTF8.GetBytes("Добро пожаловать");
  96. SocketClient.Send(buffer);
  97. SocketClient.Shutdown(SocketShutdown.Both);
  98. SocketClient.Close();
  99. }
  100. }
  101. }
  102. }
  103. }
  104. public async void StartHttpServer()
  105. {
  106. HttpListener listener = new HttpListener();
  107. listener.Prefixes.Add("http://127.0.0.2:" + Helper.FindStore.StoreID.ToString() + "/");
  108. listener.Start();
  109. while (true)
  110. {
  111. HttpListenerContext context = await listener.GetContextAsync();
  112. HttpListenerRequest request = context.Request;
  113. }
  114. }
  115. }
  116. }