MenuPage.xaml.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Collections.ObjectModel;
  5. using System.Linq;
  6. using System.Net;
  7. using System.Net.Sockets;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows;
  11. using System.Windows.Controls;
  12. using System.Windows.Data;
  13. using System.Windows.Documents;
  14. using System.Windows.Input;
  15. using System.Windows.Media;
  16. using System.Windows.Media.Imaging;
  17. using System.Windows.Navigation;
  18. using System.Windows.Shapes;
  19. using System.Windows.Threading;
  20. namespace Cashier
  21. {
  22. /// <summary>
  23. /// Interaction logic for MenuPage.xaml
  24. /// </summary>
  25. public partial class MenuPage : Page
  26. {
  27. ObservableCollection<RootDataOfProductInOrder> ProductInOrder = new ObservableCollection<RootDataOfProductInOrder>();
  28. public MenuPage()
  29. {
  30. InitializeComponent();
  31. TabCashier.SelectedIndex = 1;
  32. BtnPayment.IsEnabled = Helper.WorkShiftID is null ? false : true;
  33. ProductInStoreList.ItemsSource = Helper.ProductInStore;
  34. ProductInOrderList.ItemsSource = ProductInOrder;
  35. DispatcherTimer timer = new DispatcherTimer();
  36. timer.Interval = new TimeSpan(0, 0, 1);
  37. timer.Tick += Timer_Tick;
  38. timer.Start();
  39. }
  40. private void Timer_Tick(object sender, EventArgs e)
  41. {
  42. BtnPayment.IsEnabled = Helper.WorkShiftID is null ? false : true;
  43. }
  44. private void TxtSearch_TextChanged(object sender, TextChangedEventArgs e)
  45. {
  46. ProductInStoreList.ItemsSource = Helper.ProductInStore.Where(x => x.NameProduct.Contains(TxtSearch.Text)).ToList();
  47. }
  48. private void BtnDeleteInOrder_Click(object sender, RoutedEventArgs e)
  49. {
  50. var CurrentProduct = (sender as Button).DataContext as RootDataOfProductInOrder;
  51. ProductInOrder.Remove(CurrentProduct);
  52. TotalCost();
  53. }
  54. public void TotalCost()
  55. {
  56. decimal TotalCost = 0;
  57. foreach (var item in ProductInOrder)
  58. {
  59. TotalCost += item.ProductInStore.PriceOfOne * item.AmountProduct;
  60. }
  61. TxtTotalCost.Text = TotalCost.ToString("F2") + " руб.";
  62. }
  63. private void BtnAddInOrder_Click(object sender, RoutedEventArgs e)
  64. {
  65. if (string.IsNullOrEmpty(TxtProductCode.Text) || TxtProductCode.Text.All(char.IsDigit) == false)
  66. {
  67. Helper.ErrorMessage("Не корректный номер продукта");
  68. return;
  69. }
  70. if (string.IsNullOrEmpty(TxtAmountProduct.Text) || TxtAmountProduct.Text.All(char.IsDigit) == false)
  71. {
  72. Helper.ErrorMessage("Не корректное количество");
  73. return;
  74. }
  75. var CurrentProduct = Helper.ProductInStore.FirstOrDefault(x => x.BarCode == TxtProductCode.Text);
  76. if (CurrentProduct == null)
  77. {
  78. Helper.ErrorMessage("Продукт не найден");
  79. return;
  80. }
  81. RootDataOfProductInOrder dataOfProductInOrder = new RootDataOfProductInOrder()
  82. {
  83. ProductInStore = CurrentProduct,
  84. AmountProduct = Convert.ToInt32(TxtAmountProduct.Text)
  85. };
  86. ProductInOrder.Add(dataOfProductInOrder);
  87. TotalCost();
  88. }
  89. public async void PostDataOfOrder()
  90. {
  91. RootDataOfOrder rootDataOfOrder = new RootDataOfOrder()
  92. {
  93. Date = DateTime.Now,
  94. IDWorkShift = Helper.WorkShiftID.Value,
  95. ProductInOrders = ProductInOrder.ToList()
  96. };
  97. string Message = "Data of Order =" + JsonConvert.SerializeObject(rootDataOfOrder);
  98. string IDStore = Helper.IDStore.ToString();
  99. if (IDStore.Length == 1) IDStore = IDStore.Insert(0, "0");
  100. IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), Convert.ToInt32("102" + IDStore));
  101. Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  102. await socket.ConnectAsync(iPEndPoint);
  103. byte[] data = Encoding.UTF8.GetBytes(Message);
  104. socket.Send(data);
  105. StringBuilder builder = new StringBuilder();
  106. data = new byte[256];
  107. int bytes = 0;
  108. do
  109. {
  110. bytes = socket.Receive(data);
  111. builder.Append(Encoding.UTF8.GetString(data, 0, bytes));
  112. } while (socket.Available >0);
  113. string response = builder.ToString();
  114. }
  115. private void BtnCreateOrder_Click(object sender, RoutedEventArgs e)
  116. {
  117. }
  118. }
  119. }