using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
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 Learn
{
///
/// Логика взаимодействия для DataList.xaml
///
public partial class DataList : Page
{
bool flag = false;
int countOfServices = 0;
Entities DB = new Entities();
public DataList()
{
InitializeComponent();
ServiceData.ItemsSource = DB.Service.ToList();
PromoFilter.ItemsSource = new List() { "Все", "от 0% до 5%", "от 5% до 15%", "от 15% до 30%", "от 30% до 70%", "от 70% до 100%" };
PromoFilter.SelectedIndex = 0;
countOfServices = ServiceData.Items.Count;
global.Text = "Количество записей " + countOfServices + " из " + DB.Service.Count();
}
public DataList(int i)
{
InitializeComponent();
ServiceData.ItemsSource = DB.Service.ToList();
PromoFilter.ItemsSource = new List() { "Все", "от 0% до 5%", "от 5% до 15%", "от 15% до 30%", "от 30% до 70%", "от 70% до 100%" };
PromoFilter.SelectedIndex = 0;
countOfServices = ServiceData.Items.Count;
global.Text = "Количество записей " + countOfServices + " из " + DB.Service.Count();
flag = true;
}
private void Minutes(object sender, RoutedEventArgs e)
{
TextBlock min = (TextBlock)sender;
int index = Convert.ToInt32(min.Uid);
int mins = Convert.ToInt32(DB.Service.Where(x => x.ID == index).Select(x => x.DurationInSeconds).First()) / 60;
min.Text = " за " + mins.ToString() + " минут";
}
private void Promo(object sender, RoutedEventArgs e)
{
TextBlock pro = (TextBlock)sender;
int index = Convert.ToInt32(pro.Uid);
int promo = Convert.ToInt32(Convert.ToDouble(DB.Service.Where(x => x.ID == index).Select(x => x.Discount).First()) * 100);
if (promo > 0)
{
pro.Text = "* скидка " + promo + "%";
}
else
{
return;
}
}
private void DelEditLoad(object sender, RoutedEventArgs e)
{
StackPanel deledit = (StackPanel)sender;
if (flag == true)
{
deledit.Visibility = Visibility.Visible;
}
}
private void AddS(object sender, RoutedEventArgs e)
{
Button add = (Button)sender;
if (flag == true)
{
add.Visibility = Visibility.Visible;
}
}
private void ViewR(object sender, RoutedEventArgs e)
{
Button view = (Button)sender;
if (flag == true)
{
view.Visibility = Visibility.Visible;
}
}
private void Strike(object sender, RoutedEventArgs e)
{
TextBlock OldPrice = (TextBlock)sender;
int id = Convert.ToInt32(OldPrice.Uid);
double enable = Convert.ToDouble(DB.Service.Where(x => x.ID == id).Select(x => x.Discount).First());
if (enable != 0)
{
OldPrice.Visibility = Visibility.Visible;
}
else
{
OldPrice.Visibility = Visibility.Collapsed;
}
}
private void PriceLoad(object sender, RoutedEventArgs e)
{
TextBlock Price = (TextBlock)sender;
int id = Convert.ToInt32(Price.Uid);
double disc = Convert.ToDouble(DB.Service.Where(x => x.ID == id).Select(x => x.Discount).First());
double cost = Convert.ToDouble(DB.Service.Where(x => x.ID == id).Select(x => x.Cost).First());
if (disc != 0)
{
Price.Text = Convert.ToString(cost - disc * cost + " рублей");
}
else
{
Price.Text = Convert.ToString(cost + " рублей");
}
}
private void BackgroundLoad(object sender, RoutedEventArgs e)
{
Grid serv = (Grid)sender;
int index = Convert.ToInt32(serv.Uid);
if (DB.Service.Where(x => x.ID == index).Select(x => x.Discount).First() > 0)
{
serv.Background = new SolidColorBrush(Colors.LightGreen);
}
}
private void Up_Checked(object sender, RoutedEventArgs e)
{
Filter();
}
private void Down_Checked(object sender, RoutedEventArgs e)
{
Filter();
}
private void PromoChange(object sender, RoutedEventArgs e)
{
Filter();
}
private void SearchChange(object sender, TextChangedEventArgs e)
{
Filter();
}
private void Filter()
{
List servs = DB.Service.ToList();
if (Up.IsChecked == true)
{
servs = servs.OrderBy(x => x.Cost).ToList();
}
if (Down.IsChecked == true)
{
servs = servs.OrderByDescending(x => x.Cost).ToList();
}
switch (PromoFilter.SelectedIndex)
{
case 1:
servs = servs.Where(x => x.Discount == null || (x.Discount >= 0 && x.Discount < 0.05)).ToList();
break;
case 2:
servs = servs.Where(x => x.Discount >= 0.05 && x.Discount < 0.15).ToList();
break;
case 3:
servs = servs.Where(x => x.Discount >= 0.15 && x.Discount < 0.30).ToList();
break;
case 4:
servs = servs.Where(x => x.Discount >= 0.30 && x.Discount < 0.70).ToList();
break;
case 5:
servs = servs.Where(x => x.Discount >= 0.70 && x.Discount < 1).ToList();
break;
default:
break;
}
if (!string.IsNullOrWhiteSpace(Search.Text))
{
servs = servs.Where(x => x.Title.ToLower().Contains(Search.Text.ToLower())).ToList();
}
ServiceData.ItemsSource = servs;
countOfServices = ServiceData.Items.Count;
global.Text = "Количество записей " + countOfServices + " из " + DB.Service.Count();
}
private void RedServ(object sender, RoutedEventArgs e)
{
Button but = (Button)sender;
int index = Convert.ToInt32(but.Uid);
ReductAdd wns = new ReductAdd(index);
wns.ShowDialog();
}
private void DeleteServ(object sender, RoutedEventArgs e)
{
Entities DB = new Entities();
Button butt = (Button)sender;
int index = Convert.ToInt32(butt.Uid);
Service serv = DB.Service.Where(x => x.ID == index).FirstOrDefault();
switch (MessageBox.Show("Удалить?", "Serv", MessageBoxButton.YesNo, MessageBoxImage.Question))
{
case MessageBoxResult.Yes:
DB.Service.Remove(serv);
MessageBox.Show("Удалено");
DB.SaveChanges();
MainFrame.mframe.Navigate(new DataList());
break;
case MessageBoxResult.No:
MessageBox.Show("Вы отменили удаление");
break;
}
}
private void Add(object sender, RoutedEventArgs e)
{
ReductAdd wns = new ReductAdd();
wns.ShowDialog();
}
private void MakeReg(object sender, RoutedEventArgs e)
{
Button butt = (Button)sender;
int index = Convert.ToInt32(butt.Uid);
AddRegistration wns = new AddRegistration(index);
wns.ShowDialog();
}
private void Login(object sender, RoutedEventArgs e)
{
Login Auth = new Login();
Auth.ShowDialog();
}
}
}