using Sessioa.BaseModel;
using Sessioa.Classes;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
namespace Sessioa.Pages
{
///
/// Логика взаимодействия для OrderNew.xaml
///
public partial class OrderNew : Page
{
User user = null;
List sortList = new List() { "Без сортировки", "По убыванию стоимости", "По возрастанию стоимости" };
List filtList = new List() { "Без фильтрации", "0-10%", "11-14%", "15% >" };
List orders = new List();
public OrderNew(User userSign)
{
InitializeComponent();
user = userSign;
if (userSign.UserRole == 2 || userSign.UserRole == 3)
{
orders = BaseClass.C_Base.Order.Include(x => x.PointsOfIssue).Include(x => x.User).Include(x => x.OrderProduct).ToList();
LB_OrderProduct.ItemsSource = orders;
}
else if (userSign.UserRole == 1)
{
orders = BaseClass.C_Base.Order.Include(x => x.PointsOfIssue).Where(x => x.UserID == userSign.UserID).Include(x => x.OrderProduct).ToList();
LB_OrderProduct.ItemsSource = orders;
}
Sort.ItemsSource = sortList;
Sort.SelectedItem = sortList[0];
Filt.ItemsSource = filtList;
Filt.SelectedItem = filtList[0];
}
private void UserOrder_Loaded(object sender, RoutedEventArgs e)
{
TextBlock tb = (TextBlock)sender;
if (tb.Uid != null && (user.UserRole == 2 || user.UserRole == 3))
{
User us = BaseClass.C_Base.User.FirstOrDefault(x => x.UserID.ToString() == tb.Uid);
tb.Text = $"Заказчик: {us.UserSurname} {us.UserName[0]}.{(us.UserPatronymic != null && us.UserPatronymic != string.Empty ? $"{us.UserPatronymic[0]}." : "")}";
}
}
private void B_Back_Click(object sender, RoutedEventArgs e)
{
Application.Current.Properties["ListOrderUser"] = new List();
Application.Current.Properties["ListOrderCountUser"] = new Dictionary();
FrameClass.C_Frame.Navigate(new ProductsPage(user));
}
private void TextBlock_Loaded(object sender, RoutedEventArgs e)
{
TextBlock tb = (TextBlock)sender;
Order tmp = BaseClass.C_Base.Order.FirstOrDefault(x => x.OrderID.ToString() == tb.Uid);
if (tmp.OrderDeliveryDate == null)
{
tb.Text = "Дата выдачи не указана";
tb.Foreground = new SolidColorBrush(Color.FromRgb(235, 156, 0));
}
}
private void Border_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ClickCount > 1)
{
FrameClass.C_Frame.Navigate(new OrderCard(user, ((Order)LB_OrderProduct.SelectedItem).OrderID));
}
}
private void TB_StatusOrder_Loaded(object sender, RoutedEventArgs e)
{
TextBlock tb = (TextBlock)sender;
Order tmp = BaseClass.C_Base.Order.FirstOrDefault(x => x.OrderID.ToString() == tb.Uid);
if (tmp.OrderStatus == 2)
{
tb.Text = "Статус: Новый";
tb.Foreground = new SolidColorBrush(Color.FromRgb(73, 140, 81));
}
else
{
tb.Text = "Статус: Завершен";
tb.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0));
}
}
private void Border_Loaded(object sender, RoutedEventArgs e)
{
Border brd = (Border)sender;
List op = BaseClass.C_Base.OrderProduct.Where(x => x.OrderID.ToString() == brd.Uid).ToList();
foreach (OrderProduct opItem in op)
{
Product prd = BaseClass.C_Base.Product.FirstOrDefault(x => x.ProductArticleNumber == opItem.ProductArticleNumber);
if (prd.ProductQuantityInStock < 3)
brd.BorderBrush = new SolidColorBrush(Color.FromRgb(255, 140, 0));
}
}
private void Sort_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Sett();
}
private void Filt_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Sett();
}
private void Sett()
{
foreach (Order od in orders)
{
decimal itogoBezSkidki = 0;
decimal itogoSoSkidkoy = 0;
List tmpOP = BaseClass.C_Base.OrderProduct.Where(x => x.OrderID == od.OrderID).ToList();
foreach (OrderProduct opItem in tmpOP)
{
Product prAdd = BaseClass.C_Base.Product.FirstOrDefault(x => x.ProductArticleNumber == opItem.ProductArticleNumber);
itogoBezSkidki += prAdd.ProductCost * opItem.ProductCount;
if (prAdd.ProductDiscountAmount != null && prAdd.ProductDiscountAmount != 0)
{
itogoSoSkidkoy += (prAdd.ProductCost - (prAdd.ProductCost * ((decimal)prAdd.ProductDiscountAmount / 100))) * opItem.ProductCount;
}
else
itogoSoSkidkoy += prAdd.ProductCost * opItem.ProductCount;
}
od.Cost = itogoSoSkidkoy;
od.Discount = Math.Round((1 - (itogoSoSkidkoy / itogoBezSkidki)) * 100, 2);
}
if (user.UserRole == 2 || user.UserRole == 3)
orders = BaseClass.C_Base.Order.Include(x => x.PointsOfIssue).Include(x => x.User).Include(x => x.OrderProduct).ToList();
else if (user.UserRole == 1)
orders = BaseClass.C_Base.Order.Include(x => x.PointsOfIssue).Where(x => x.UserID == user.UserID).Include(x => x.OrderProduct).ToList();
switch (Filt.SelectedIndex)
{
case 1:
{
orders = orders.Where(x => x.Discount <= 10).ToList();
break;
}
case 2:
{
orders = orders.Where(x => x.Discount > 10 && x.Discount <= 14).ToList();
break;
}
case 3:
{
orders = orders.Where(x => x.Discount >= 15).ToList();
break;
}
}
switch (Sort.SelectedIndex)
{
case 1:
{
orders = orders.OrderByDescending(x => x.Cost).ToList();
LB_OrderProduct.ItemsSource = orders;
break;
}
case 2:
{
orders = orders.OrderBy(x => x.Cost).ToList();
LB_OrderProduct.ItemsSource = orders;
break;
}
default:
{
break;
}
}
LB_OrderProduct.ItemsSource = orders;
}
}
}