using CalcS;
using System;
using System.Collections.Generic;
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 ExamBoldin
{
///
/// Логика взаимодействия для pgBasket.xaml
///
public partial class pgBasket : Page
{
List books;
bool CanGoBack = true;
public pgBasket(List books)
{
InitializeComponent();
this.books = books;
lbBooksBasket.ItemsSource = books;
}
private void btnDeleteBook_Click(object sender, RoutedEventArgs e)
{
Button btn = (Button)sender;
int id = Convert.ToInt32(btn.Uid);
BookShop delBook = books.FirstOrDefault(x => x.id == id);
books.Remove(delBook);
lbBooksBasket.Items.Refresh();
}
private void btnBuy_Click(object sender, RoutedEventArgs e)
{
int numOreder;
if (BaseConnect.BaseModel.Orders.Count() != 0)
numOreder = BaseConnect.BaseModel.Orders.Max(x => x.NOrder) + 1;
else
numOreder = 1;
bool flag = false;
int count = 0;
int sale = 0;
decimal CountCost = 0;
foreach (BookShop book in books)
{
BookShop bk = BaseConnect.BaseModel.BookShop.FirstOrDefault(x => x.id == book.id);
if (bk.CountStore >= book.AllCount)
{
flag = true;
bk.CountStore -= book.AllCount;
BaseConnect.BaseModel.SaveChanges();
}
else
{
int res = book.AllCount - bk.CountStore;
bk.CountStore = 0;
bk.CountStock -= res;
BaseConnect.BaseModel.SaveChanges();
}
Orders or = new Orders();
or.IdBook = book.id;
or.NOrder = numOreder;
or.Count = book.AllCount;
count += book.AllCount;
sale = book.Sale;
CountCost += book.Cost * book.AllCount;
or.DateOrder = DateTime.Now;
BaseConnect.BaseModel.Orders.Add(or);
}
if (flag)
MessageBox.Show("Заказ: " + numOreder + "\nПоловина заказа прибудет: " + DateTime.Now.ToShortDateString() + "\nОстальная часть заказа прибудет: " + DateTime.Now.AddDays(3).ToShortDateString() + "\nКниги зарезервированы до: " + DateTime.Now.AddDays(7).ToShortDateString() + "\nКоличество книг в заказе: " + count + "\nЦена:" + Math.Floor(CountCost - (CountCost * sale / 100)) + "\nСкидка:" + sale + "%");
else
{
MessageBox.Show("Заказ: " + numOreder + "\nЗаказ можно забрать: " + DateTime.Now.ToShortDateString() + "\nЗарезервировано до: " + DateTime.Now.AddDays(7).ToShortDateString() + "\nКоличество книг в заказе: " + count + "\nЦена:" + Math.Floor(CountCost - (CountCost * sale / 100)) + "\nСкидка:" + sale + "%");
}
books.Clear();
lbBooksBasket.Items.Refresh();
CanGoBack = false;
}
private void btnDel_Click(object sender, RoutedEventArgs e)
{
books.Clear();
lbBooksBasket.Items.Refresh();
CanGoBack = false;
}
private void btnBack_Click(object sender, RoutedEventArgs e)
{
if (!CanGoBack)
LoadPages.GoPage.Navigate(new pgListBooks());
else
LoadPages.GoPage.GoBack();
}
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
TextBox tb = (TextBox)sender;
int id = Convert.ToInt32(tb.Uid);
BookShop book = books.FirstOrDefault(x => x.id == id);
int tmpValue = book.AllCount ;
try
{
BookShop checkCountBook = BaseConnect.BaseModel.BookShop.FirstOrDefault(x => x.id == id);
int countBase = checkCountBook.CountStore + checkCountBook.CountStock;
if (countBase >= Convert.ToInt32(tb.Text))
{
CalcSale cs = new CalcSale();
book.AllCount = Convert.ToInt32(tb.Text);
int count=0;
decimal cost =0;
foreach (BookShop booke in books)
{
cost += booke.Cost * booke.AllCount;
count += booke.AllCount;
}
foreach (BookShop booke in books)
{
booke.Sale = cs.Calc(count, cost);
}
lbBooksBasket.ItemsSource = books;
lbBooksBasket.Items.Refresh();
}
else
{
MessageBox.Show("Данного количества нет на скалде!");
tb.Text = tmpValue.ToString();
}
}
catch { }
}
}
}