123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- using OOO_WriteAndClear.DBModels;
- using OOO_WriteAndClear.EventBus.Signals;
- using OOO_WriteAndClear.MVP.Models.ProductsUserControlModel;
- using OOO_WriteAndClear.MVP.MVPInterfaces;
- using OOO_WriteAndClear.MVP.Presenters;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.DirectoryServices;
- 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.Navigation;
- using System.Windows.Shapes;
- namespace OOO_WriteAndClear.MVP.Views
- {
- /// <summary>
- /// Логика взаимодействия для ProductsUserControl.xaml
- /// </summary>
- public partial class ProductsUserControl : UserControl, IProductsUserControlContract.IView
- {
- public ProductsUserControl()
- {
- InitializeComponent();
- _presenter = new ProductsUserControlPresenter(this);
- SetUserData();
- }
- #region Обработчики событий
- private async void UserControlWasLoaded(object sender, RoutedEventArgs e)
- {
- InitSortComboBoxProperty();
- InitFilterComboBoxProperty();
- Products = new ObservableCollection<Product>(await _presenter.UpdateProductsList(
- FormProductsListParams()));
- AllProductsCount.Text = _presenter.GetAllProductsCount().ToString();
- _statusUC = 1;
- }
- private void FilterComboBoxSelectionWasChanged(object sender, SelectionChangedEventArgs e)
- {
- if (_statusUC == 0)
- return;
- FilterSearchSortParameters par = FormProductsListParams();
- Task.Run(() =>
- {
- Products = new ObservableCollection<Product>(_presenter.FilterSearchSortProducts(par));
- });
- }
- private void SortComboBoxSelectionWasChanged(object sender, SelectionChangedEventArgs e)
- {
- if (_statusUC == 0)
- return;
- FilterSearchSortParameters par = FormProductsListParams();
- Task.Run(() =>
- {
- Products = new ObservableCollection<Product>(_presenter.FilterSearchSortProducts(par));
- });
- }
- private void SearchBarTextWasChanged(object sender, TextChangedEventArgs e)
- {
- if (_statusUC == 0)
- return;
- FilterSearchSortParameters par = FormProductsListParams();
- Task.Run(() =>
- {
- Products = new ObservableCollection<Product>(_presenter.FilterSearchSortProducts(par));
- });
- }
- /// <summary>
- /// Ловит нажатие на пункт добавление к заказу в контекстном меню
- /// </summary>
- /// <param name="sender">Отправитель</param>
- /// <param name="e">Параметры события</param>
- private void AddProductToOrder_Button(object sender, RoutedEventArgs e)
- {
- Product product = (Product)ProductsList.SelectedItem;
- Task.Run(() =>
- {
- _presenter.AddProductIntoOrder(product);
- });
- }
- /// <summary>
- /// Ловит нажатие на пункт удаление из заказа в контекстном меню
- /// </summary>
- /// <param name="sender">Отправитель</param>
- /// <param name="e">Событие</param>
- private void RemoveProductFromOrder_Button(object sender, RoutedEventArgs e)
- {
- Product product = (Product)ProductsList.SelectedItem;
- Task.Run(() =>
- {
- _presenter.RemoveProductFromOrder(product);
- });
- }
- /// <summary>
- /// Нажатие на кнопку перехода в корзину
- /// </summary>
- /// <param name="sender">Кнопка "в корзину"</param>
- /// <param name="e">параметры события</param>
- private void GoToOrderCart_ButtonClick(object sender, RoutedEventArgs e)
- {
- EventBus.EventBus.GetService().Unsubscribe<OrderCartWasClosedSignal>(OrderCartWasClosed);
- EventBus.EventBus.GetService().Subscribe<OrderCartWasClosedSignal>(OrderCartWasClosed);
- EventBus.EventBus.GetService().Invoke(new GoToOrderCartSignal(_presenter.GetCurrentOrderFormerer()));
- }
- private void OrderCartWasClosed(OrderCartWasClosedSignal signal)
- {
- ChangeDisplayingBasketData(_presenter.GetCurrentOrderFormerer().Order);
- }
- private void ReturnBack_ButtonClick(object sender, RoutedEventArgs e)
- {
- User user = (User)Application.Current.Resources["CurrentUser"];
- if (user.UserId == -1 || user.UserRole == 1)
- EventBus.EventBus.GetService().Invoke(new BackToAuthorizationUserControlSignal());
- else
- EventBus.EventBus.GetService().Invoke(new BackToFeaturesMenuUserControlSignal());
- }
- #endregion
- #region Реализация IProductsUserControlContract.IView
- public void ChangeDisplayingBasketData(Order order)
- {
- Dispatcher.BeginInvoke(new Action(() =>
- {
- BasketCostLabel.Content = order.OrderCost.ToString("f2") + " Руб.";
- if (order.OrderCost == 0m)
- GoToBasketButton.Visibility = Visibility.Hidden;
- else
- GoToBasketButton.Visibility = Visibility.Visible;
- }));
- }
- #endregion
- public ObservableCollection<Product> Products
- {
- get => _products;
- set
- {
- _products = value;
- Dispatcher.BeginInvoke(new Action(() =>
- {
- ProductsList.ItemsSource = _products;
- DisplayingProductsCount.Text = _products.Count.ToString();
- }));
- }
- }
- private int _statusUC = 0;
- private ObservableCollection<Product> _products;
- private IProductsUserControlContract.IPresenter _presenter;
- private void InitSortComboBoxProperty()
- {
- List<string> sortingVariants = new List<string>()
- {
- "По возрастанию",
- "По убыванию"
- };
- SortComboBox.ItemsSource = sortingVariants;
- SortComboBox.SelectedIndex = 0;
- }
- private void InitFilterComboBoxProperty()
- {
- List<object> filteringVarients = new List<object>()
- {
- new FilterByDiscountParameters(0d, 100d),
- new FilterByDiscountParameters(0d, 9.99d),
- new FilterByDiscountParameters(10d, 14.99d),
- new FilterByDiscountParameters(15d, 100d)
- };
- FilterComboBox.ItemsSource = filteringVarients;
- FilterComboBox.SelectedIndex = 0;
- }
- private FilterSearchSortParameters FormProductsListParams()
- {
- return new FilterSearchSortParameters
- ((SortComboBox.SelectedIndex == 0) ? SortDirection.Ascending : SortDirection.Descending,
- SearchBar.Text,
- (FilterByDiscountParameters)FilterComboBox.SelectedItem);
- }
- private void SetUserData()
- {
- User user = (User)Application.Current.Resources["CurrentUser"];
- if(user.UserId == -1)
- {
- DisplayingUserName.Text = "Гость";
- DisplayingUserRole.Visibility = Visibility.Collapsed;
- return;
- }
- DisplayingUserName.Text = user.UserSurname
- + " "
- + user.UserName
- + " "
- + user.UserPatronymic;
- DisplayingUserRole.Text = user.UserRoleNavigation.RoleName;
- }
- }
- }
|