MenuPage.xaml.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  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. List<string> TypeOfPayment = new List<string>();
  32. TypeOfPayment.Add("Наличные");
  33. TypeOfPayment.Add("Карта");
  34. CmbTypeOfPayment.ItemsSource = TypeOfPayment;
  35. TabCashier.SelectedIndex = 1;
  36. BtnPayment.IsEnabled = Helper.WorkShiftID is null ? false : true;
  37. ProductInStoreList.ItemsSource = Helper.ProductInStore;
  38. ProductInOrderList.ItemsSource = ProductInOrder;
  39. DispatcherTimer timer = new DispatcherTimer();
  40. timer.Interval = new TimeSpan(0, 0, 1);
  41. timer.Tick += Timer_Tick;
  42. timer.Start();
  43. }
  44. private void Timer_Tick(object sender, EventArgs e)
  45. {
  46. BtnPayment.IsEnabled = Helper.WorkShiftID is null ? false : true;
  47. }
  48. private void TxtSearch_TextChanged(object sender, TextChangedEventArgs e)
  49. {
  50. ProductInStoreList.ItemsSource = Helper.ProductInStore.Where(x => x.NameProduct.Contains(TxtSearch.Text)).ToList();
  51. }
  52. private void BtnDeleteInOrder_Click(object sender, RoutedEventArgs e)
  53. {
  54. var CurrentProduct = (sender as Button).DataContext as RootDataOfProductInOrder;
  55. ProductInOrder.Remove(CurrentProduct);
  56. TotalCost();
  57. }
  58. public void TotalCost()
  59. {
  60. decimal TotalCost = 0;
  61. foreach (var item in ProductInOrder)
  62. {
  63. TotalCost += item.ProductInStore.PriceOfOne * item.AmountProduct;
  64. }
  65. TxtTotalCost.Text = TotalCost.ToString("F2") + " руб.";
  66. }
  67. private void BtnAddInOrder_Click(object sender, RoutedEventArgs e)
  68. {
  69. if (string.IsNullOrEmpty(TxtProductCode.Text) || TxtProductCode.Text.All(char.IsDigit) == false)
  70. {
  71. Helper.ErrorMessage("Не корректный номер продукта");
  72. return;
  73. }
  74. if (string.IsNullOrEmpty(TxtAmountProduct.Text) || TxtAmountProduct.Text.All(char.IsDigit) == false)
  75. {
  76. Helper.ErrorMessage("Не корректное количество");
  77. return;
  78. }
  79. var CurrentProduct = Helper.ProductInStore.FirstOrDefault(x => x.BarCode == TxtProductCode.Text);
  80. if (CurrentProduct == null)
  81. {
  82. Helper.ErrorMessage("Продукт не найден");
  83. return;
  84. }
  85. RootDataOfProductInOrder dataOfProductInOrder = new RootDataOfProductInOrder()
  86. {
  87. ProductInStore = CurrentProduct,
  88. AmountProduct = Convert.ToInt32(TxtAmountProduct.Text)
  89. };
  90. ProductInOrder.Add(dataOfProductInOrder);
  91. TotalCost();
  92. }
  93. public void Print()
  94. {
  95. PrintDialog printDialog = new PrintDialog();
  96. TextBlock DataOfOrder = new TextBlock();
  97. string Text = "";
  98. }
  99. public async void PostDataOfOrder()
  100. {
  101. RootDataOfOrder rootDataOfOrder = new RootDataOfOrder()
  102. {
  103. Date = DateTime.Now,
  104. IDWorkShift = Helper.WorkShiftID.Value,
  105. IDPaymentMetod = CmbTypeOfPayment.SelectedIndex + 1,
  106. ProductInOrders = ProductInOrder.ToList()
  107. };
  108. string Message = "Data of Order =" + JsonConvert.SerializeObject(rootDataOfOrder);
  109. string IDStore = Helper.IDStore.ToString();
  110. if (IDStore.Length == 1) IDStore = IDStore.Insert(0, "0");
  111. IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), Convert.ToInt32("102" + IDStore));
  112. Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  113. await socket.ConnectAsync(iPEndPoint);
  114. byte[] data = Encoding.UTF8.GetBytes(Message);
  115. socket.Send(data);
  116. }
  117. private void BtnCreateOrder_Click(object sender, RoutedEventArgs e)
  118. {
  119. if (ProductInOrder.Count == 0)
  120. {
  121. return;
  122. }
  123. PostDataOfOrder();
  124. ProductInOrder.Clear();
  125. }
  126. }
  127. }