StartWorkPage.xaml.cs 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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 Cashier
  19. {
  20. /// <summary>
  21. /// Interaction logic for StartWorkPage.xaml
  22. /// </summary>
  23. public partial class StartWorkPage : Page
  24. {
  25. public StartWorkPage()
  26. {
  27. InitializeComponent();
  28. }
  29. public async void ConnectToStore(string IDStore, string Message)
  30. {
  31. try
  32. {
  33. if (IDStore.Length == 1) IDStore= IDStore.Insert(0, "0");
  34. IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), Convert.ToInt32("102" + IDStore));
  35. Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  36. socket.Connect(iPEndPoint);
  37. byte[] data = Encoding.UTF8.GetBytes(Message);
  38. socket.Send(data);
  39. data = new byte[256];
  40. int byts = 0;
  41. StringBuilder builder = new StringBuilder();
  42. do
  43. {
  44. byts = socket.Receive(data, data.Length, 0);
  45. builder.Append(Encoding.UTF8.GetString(data, 0, byts));
  46. } while (socket.Available > 0);
  47. string response = builder.ToString();
  48. if (response.Contains("Добро пожаловать"))
  49. {
  50. string Json = response.Split('=')[1];
  51. Helper.ProductInStore = JsonConvert.DeserializeObject<List<RootDataOfProductInStore>>(Json);
  52. Helper.InformationMessage(response.Split('=')[0]);
  53. ManagerFrame.MainFrame.Navigate(new MenuPage());
  54. }
  55. else
  56. {
  57. Helper.ErrorMessage(response);
  58. }
  59. socket.Shutdown(SocketShutdown.Both);
  60. socket.Close();
  61. }
  62. catch (Exception)
  63. {
  64. Helper.ErrorMessage("Нет ответа от сервера");
  65. }
  66. }
  67. private void BtnConnect_Click(object sender, RoutedEventArgs e)
  68. {
  69. if (string.IsNullOrEmpty(TxtIDStore.Text) || TxtIDStore.Text.All(char.IsDigit) == false)
  70. {
  71. Helper.ErrorMessage("Не корректный ID");
  72. return;
  73. }
  74. if (string.IsNullOrEmpty(TxtNumberCashier.Text) || TxtNumberCashier.Text.All(char.IsDigit)== false)
  75. {
  76. Helper.ErrorMessage("Не корректный номер кассы");
  77. return;
  78. }
  79. if (string.IsNullOrEmpty(TxtCodeEmployee.Text) || TxtCodeEmployee.Text.All(char.IsDigit) == false)
  80. {
  81. Helper.ErrorMessage("Не корректный код сотрудника");
  82. return;
  83. }
  84. Helper.IDStore = Convert.ToInt32(TxtIDStore.Text);
  85. Helper.IDCashier = Convert.ToInt32(TxtNumberCashier.Text);
  86. Helper.NumberEmployee = TxtCodeEmployee.Text;
  87. string Message = $"Authorization - Code cashier={TxtNumberCashier.Text}; Code employee ={TxtCodeEmployee.Text}";
  88. ConnectToStore(TxtIDStore.Text, Message);
  89. }
  90. }
  91. }