using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Collections.ObjectModel; 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; using System.Windows.Threading; namespace Cashier { /// /// Interaction logic for MenuPage.xaml /// public partial class MenuPage : Page { ObservableCollection ProductInOrder = new ObservableCollection(); public MenuPage() { InitializeComponent(); List TypeOfPayment = new List(); TypeOfPayment.Add("Наличные"); TypeOfPayment.Add("Карта"); CmbTypeOfPayment.ItemsSource = TypeOfPayment; TabCashier.SelectedIndex = 1; BtnPayment.IsEnabled = Helper.WorkShiftID is null ? false : true; ProductInStoreList.ItemsSource = Helper.ProductInStore; ProductInOrderList.ItemsSource = ProductInOrder; DispatcherTimer timer = new DispatcherTimer(); timer.Interval = new TimeSpan(0, 0, 1); timer.Tick += Timer_Tick; timer.Start(); } private void Timer_Tick(object sender, EventArgs e) { BtnPayment.IsEnabled = Helper.WorkShiftID is null ? false : true; } private void TxtSearch_TextChanged(object sender, TextChangedEventArgs e) { ProductInStoreList.ItemsSource = Helper.ProductInStore.Where(x => x.NameProduct.Contains(TxtSearch.Text)).ToList(); } private void BtnDeleteInOrder_Click(object sender, RoutedEventArgs e) { var CurrentProduct = (sender as Button).DataContext as RootDataOfProductInOrder; ProductInOrder.Remove(CurrentProduct); TotalCost(); } public void TotalCost() { decimal TotalCost = 0; foreach (var item in ProductInOrder) { TotalCost += item.ProductInStore.PriceOfOne * item.AmountProduct; } TxtTotalCost.Text = TotalCost.ToString("F2") + " руб."; } private void BtnAddInOrder_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(TxtProductCode.Text) || TxtProductCode.Text.All(char.IsDigit) == false) { Helper.ErrorMessage("Не корректный номер продукта"); return; } if (string.IsNullOrEmpty(TxtAmountProduct.Text) || TxtAmountProduct.Text.All(char.IsDigit) == false) { Helper.ErrorMessage("Не корректное количество"); return; } var CurrentProduct = Helper.ProductInStore.FirstOrDefault(x => x.BarCode == TxtProductCode.Text); if (CurrentProduct == null) { Helper.ErrorMessage("Продукт не найден"); return; } RootDataOfProductInOrder dataOfProductInOrder = new RootDataOfProductInOrder() { ProductInStore = CurrentProduct, AmountProduct = Convert.ToInt32(TxtAmountProduct.Text) }; ProductInOrder.Add(dataOfProductInOrder); TotalCost(); } public void Print() { PrintDialog printDialog = new PrintDialog(); TextBlock DataOfOrder = new TextBlock(); string Text = ""; } public async void PostDataOfOrder() { RootDataOfOrder rootDataOfOrder = new RootDataOfOrder() { Date = DateTime.Now, IDWorkShift = Helper.WorkShiftID.Value, IDPaymentMetod = CmbTypeOfPayment.SelectedIndex + 1, ProductInOrders = ProductInOrder.ToList() }; string Message = "Data of Order =" + JsonConvert.SerializeObject(rootDataOfOrder); string IDStore = Helper.IDStore.ToString(); if (IDStore.Length == 1) IDStore = IDStore.Insert(0, "0"); IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), Convert.ToInt32("102" + IDStore)); Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); await socket.ConnectAsync(iPEndPoint); byte[] data = Encoding.UTF8.GetBytes(Message); socket.Send(data); } private void BtnCreateOrder_Click(object sender, RoutedEventArgs e) { if (ProductInOrder.Count == 0) { return; } PostDataOfOrder(); ProductInOrder.Clear(); } } }