using Sessioa.BaseModel;
using Sessioa.Classes;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace Sessioa.Pages
{
///
/// Логика взаимодействия для ProductsPage.xaml
///
public partial class ProductsPage : Page
{
List listProduct = BaseClass.C_Base.Product.Include(x => x.Manufacturer).ToList();
List listOrder = new List();
User user = null;
List sort = new List() { "Без сортировки", "По возрастанию", "По убыванию" };
List filtr = new List() { "Все диапазоны", "0 - 9,99%", "10 - 14,99%", "15% >" };
string selectSort = "Без сортировки";
string selectFiltr = "Все диапазоны";
public ProductsPage()
{
InitializeComponent();
UserSign.Text = "Вход не выполнен";
Init();
}
public ProductsPage(User userSign)
{
InitializeComponent();
listOrder = (List)Application.Current.Properties["ListOrderUser"];
user = userSign;
UserSign.Text = $"Вход выолнен: {user.UserSurname} {user.UserName} {user.UserPatronymic}";
Init();
if(listOrder != null)
{
if (listOrder.Count > 0)
{
OrderActUser.Visibility = Visibility.Visible;
OrderActUser.Content = $"Корзина({listOrder.Count})";
}
}
}
private void Init()
{
LB_Product.ItemsSource = listProduct;
CB_Sort.ItemsSource = sort;
CB_Sort.SelectedItem = selectSort;
CB_Filtr.ItemsSource = filtr;
CB_Filtr.SelectedItem = selectFiltr;
TB_CountAll.Text = BaseClass.C_Base.Product.Count().ToString();
}
private void countPr_Loaded(object sender, RoutedEventArgs e)
{
TextBlock tb = (TextBlock)sender;
Product product = BaseClass.C_Base.Product.FirstOrDefault(x => x.ProductArticleNumber == tb.Uid);
if (product.ProductDiscountAmount != null && product.ProductDiscountAmount != 0)
tb.TextDecorations = TextDecorations.Strikethrough;
}
private void countPr_Loaded_1(object sender, RoutedEventArgs e)
{
TextBlock tb = (TextBlock)sender;
Product product = BaseClass.C_Base.Product.FirstOrDefault(x => x.ProductArticleNumber == tb.Uid);
if (product.ProductDiscountAmount != null && product.ProductDiscountAmount != 0)
{
double j = (double)product.ProductDiscountAmount / 100;
double ji = (double)(product.ProductCost) * j;
double n = (double)(product.ProductCost) - ji;
tb.Text = n.ToString() + "₽";
tb.Visibility = Visibility.Visible;
}
}
private void Border_Loaded(object sender, RoutedEventArgs e)
{
Border border = (Border)sender;
Product product = BaseClass.C_Base.Product.FirstOrDefault(x => x.ProductArticleNumber == border.Uid);
if (product.ProductDiscountAmount != null && product.ProductDiscountAmount > 15)
border.Background = (Brush)(new BrushConverter().ConvertFrom("#7fff00"));
}
private void Discount_Loaded(object sender, RoutedEventArgs e)
{
TextBlock tb = (TextBlock)sender;
Product product = BaseClass.C_Base.Product.FirstOrDefault(x => x.ProductArticleNumber == tb.Uid);
if (product.ProductDiscountAmount != null && product.ProductDiscountAmount != 0)
tb.Text = $"Скидка {product.ProductDiscountAmount}%";
}
private void SearchTB_TextChanged(object sender, TextChangedEventArgs e)
{
setting();
}
private void setting()
{
if (SearchTB.Text.Length > 0)
listProduct = BaseClass.C_Base.Product.Where(x => x.ProductName.ToLower().Contains(SearchTB.Text.ToLower())).ToList();
else listProduct = BaseClass.C_Base.Product.ToList();
if (CB_Sort.SelectedIndex != 0)
{
if (CB_Sort.SelectedIndex == 1)
{
listProduct = listProduct.OrderBy(x => (x.ProductDiscountAmount != null ? x.ProductCost - x.ProductCost * x.ProductDiscountAmount / 100 : x.ProductCost)).ToList();
}
if (CB_Sort.SelectedIndex == 2)
{
listProduct = listProduct.OrderByDescending(x => (x.ProductDiscountAmount != null ? x.ProductCost - x.ProductCost * x.ProductDiscountAmount / 100 : x.ProductCost)).ToList();
}
}
if (CB_Filtr.SelectedIndex != 0)
{
switch (CB_Filtr.SelectedIndex)
{
case 1:
listProduct = listProduct.Where(x => x.ProductDiscountAmount >= 0 && x.ProductDiscountAmount <= 9.99).ToList();
break;
case 2:
listProduct = listProduct.Where(x => x.ProductDiscountAmount >= 10 && x.ProductDiscountAmount <= 14.99).ToList();
break;
case 3:
listProduct = listProduct.Where(x => x.ProductDiscountAmount >= 15).ToList();
break;
}
}
LB_Product.ItemsSource = null;
LB_Product.ItemsSource = listProduct;
TB_CountActual.Text = listProduct.Count.ToString();
}
private void CB_Filtr_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
setting();
}
private void CB_Sort_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
setting();
}
private void SignOf_Click(object sender, RoutedEventArgs e)
{
Application.Current.Properties["ListOrderUser"] = new List();
FrameClass.C_Frame.Navigate(new Autorization());
}
private void ContextMenu_Loaded(object sender, RoutedEventArgs e)
{
ContextMenu cm = (ContextMenu)(sender);
if (user == null)
cm.Visibility = Visibility.Collapsed;
}
private void EditProduct_Loaded(object sender, RoutedEventArgs e)
{
MenuItem mt = (MenuItem)(sender);
if (user == null)
mt.Visibility = Visibility.Collapsed;
else if (user.UserRole != 2)
mt.Visibility = Visibility.Collapsed;
}
private void DeleteProduct_Loaded(object sender, RoutedEventArgs e)
{
MenuItem dt = (MenuItem)(sender);
if (user == null)
dt.Visibility = Visibility.Collapsed;
else if (user.UserRole != 2)
dt.Visibility = Visibility.Collapsed;
}
private void NewProduct_Click(object sender, RoutedEventArgs e)
{
FrameClass.C_Frame.Navigate(new ProductCard(user));
}
private void NewProduct_Loaded(object sender, RoutedEventArgs e)
{
Button btn = (Button)(sender);
if (user != null && user.UserRole == 2)
btn.Visibility = Visibility.Visible;
}
private void EditProduct_Click(object sender, RoutedEventArgs e)
{
try
{
FrameClass.C_Frame.Navigate(new ProductCard(user, (Product)LB_Product.SelectedItem));
}
catch
{
MessageBox.Show("Непредвиденная ошибка.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Information);
}
}
private void DeleteProduct_Click(object sender, RoutedEventArgs e)
{
MessageBoxResult mbr = MessageBox.Show("Удалить продукт?", "квешченс", MessageBoxButton.YesNo, MessageBoxImage.Question);
if (mbr == MessageBoxResult.Yes)
{
try
{
BaseClass.C_Base.Product.Remove((Product)LB_Product.SelectedItem);
BaseClass.C_Base.SaveChanges();
MessageBox.Show("Продукт удален", "Оповещение", MessageBoxButton.OK, MessageBoxImage.Information);
FrameClass.C_Frame.Navigate(new ProductsPage(user));
}
catch
{
MessageBox.Show("Ошибка. Продукт не может быть удален.", "Оповещение", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}
private void OrdersUser_Loaded(object sender, RoutedEventArgs e)
{
Button button = (Button)sender;
if (user != null)
{
if (user.UserRole > 0)
button.Visibility = Visibility.Visible;
else if (BaseClass.C_Base.Order.Where(x => x.UserID == user.UserID).Count() > 0)
button.Visibility = Visibility.Visible;
}
}
private void OrdersUser_Click(object sender, RoutedEventArgs e)
{
FrameClass.C_Frame.Navigate(new OrderNew(user));
}
private void AddOrder_Click(object sender, RoutedEventArgs e)
{
if (listOrder.Contains((Product)LB_Product.SelectedItem))
MessageBox.Show("Данный товар уже находится в корзине", "Предупреждение", MessageBoxButton.OK, MessageBoxImage.Warning);
else
{
listOrder.Add((Product)LB_Product.SelectedItem);
OrderActUser.Content = $"Корзина({listOrder.Count})";
}
OrderActUser.Visibility = Visibility.Visible;
}
private void OrderActUser_Click(object sender, RoutedEventArgs e)
{
Application.Current.Properties["ListOrderUser"] = listOrder;
FrameClass.C_Frame.Navigate(new OrderCard(user));
}
}
}