using OOO_WriteAndClear.DBModels; using OOO_WriteAndClear.EventBus; using OOO_WriteAndClear.EventBus.Signals; using OOO_WriteAndClear.MVP.Models.OrderFormerer; using OOO_WriteAndClear.MVP.MVPInterfaces; using OOO_WriteAndClear.MVP.Presenters; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; 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.Shapes; namespace OOO_WriteAndClear.MVP.Views { /// /// Логика взаимодействия для OrderCartWindow.xaml /// public partial class OrderCartWindow : Window, IOrderCartWindowContract.IView { public OrderCartWindow() { _presenter = new OrderCartWindowPresenter(this); InitializeComponent(); LoadPickupPoints(); } public OrderCartWindow(OrderFormerer orderFormerer) { _presenter = new OrderCartWindowPresenter(this); InitializeComponent(); SetCurrentOrderFormerer(orderFormerer); LoadPickupPoints(); } #region Свойства для установки данных на экран public string OrderCostWithoutDiscount { get => _orderCostWithoutDiscount; set { _orderCostWithoutDiscount = value; Dispatcher.Invoke(new Action(() => { OrderCostWithoutDiscountField.Text = _orderCostWithoutDiscount; })); } } public string OrderDiscount { get => _orderDiscount; set { _orderDiscount = value; Dispatcher.Invoke(new Action(() => { OrderDiscountField.Text = _orderDiscount; })); } } public string OrderCostWithDiscount { get => _orderCostWithDiscount; set { _orderCostWithDiscount = value; Dispatcher.Invoke(new Action(() => { OrderCostWithDiscountField.Text = _orderCostWithDiscount; })); } } public ICollection OrderList { set { Dispatcher.Invoke(new Action(() => { DisplayingOrderList.Items.Refresh(); DisplayingOrderList.ItemsSource = value; })); } } #endregion #region Обработчики событий окна /// /// Нажатие по кнопке добавления единицы продукта /// /// Кнопка добавления /// параметры события private void AddProductUnitInOrder_ButtonClick(object sender, RoutedEventArgs e) { string article = ((Button)sender).Uid; Task.Run(() => { _presenter.AddProductUnitIntoOrder(article); }); } /// /// Нажатие по кнопке уменьшения количества продукта /// /// Кнопка уменьшения /// параметры события private void RemoveProductUnitFromOrder_ButtonClick(object sender, RoutedEventArgs e) { string article = ((Button)sender).Uid; Task.Run(() => { _presenter.RemoveProductUnitFromOrder(article); }); } /// /// Нажатие по кнопке удаления продукта из заказа /// /// Кнопка удаления /// параметры события private void RemoveProductFromOrder_ButtonClick(object sender, RoutedEventArgs e) { string article = ((Button)sender).Uid; Task.Run(() => { _presenter.RemoveProductFromOrder(article); }); } /// /// Нажатие по кнопке формирования заказа /// /// Кнопка формирования заказа /// параметры события private void FormOrder_ButtonClick(object sender, RoutedEventArgs e) { if (_presenter.CurrentOrder.OrderProducts.Count == 0) { MessageBox.Show("Корзина пуста!", "Корзина", MessageBoxButton.OK); return; } if (_selectedPickupPoint is null) { MessageBox.Show("Пункт выдачи не выбран!", "Пункт выдачи", MessageBoxButton.OK); return; } _presenter.AddOrderInSystem(_selectedPickupPoint); EventBus.EventBus.GetService().Invoke(new ShowOrderTalonSignal(_presenter.CurrentOrder)); } /// /// Смена пункта выдачи заказа в comboBox /// /// ComboBox заказа /// параметры события private void PickupPointComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { _selectedPickupPoint = (PickupPoint)PickupPointComboBox.SelectedItem; } #endregion private IOrderCartWindowContract.IPresenter _presenter; private PickupPoint? _selectedPickupPoint = null; private string _orderCostWithoutDiscount; private string _orderDiscount; private string _orderCostWithDiscount; private void SetCurrentOrderFormerer(OrderFormerer orderFormerer) => _presenter.SetCurrentOrderFormerer(orderFormerer); private void LoadPickupPoints() { ICollection pickupPoints; Task.Run(() => { pickupPoints = _presenter.GetAllPickupPoints(); Dispatcher.BeginInvoke(new Action(() => { PickupPointComboBox.ItemsSource = pickupPoints; })); }); } } }