|
@@ -0,0 +1,203 @@
|
|
|
+using Reks;
|
|
|
+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.Shapes;
|
|
|
+
|
|
|
+namespace Reks.Windows
|
|
|
+{
|
|
|
+ /// <summary>
|
|
|
+ /// Логика взаимодействия для Cart.xaml
|
|
|
+ /// </summary>
|
|
|
+ public partial class Cart : Window
|
|
|
+ {
|
|
|
+ TradeBase DB = new TradeBase();
|
|
|
+ public static List<Product> Products = new List<Product>();
|
|
|
+ public static List<ProductAmount> ProductsAmount = new List<ProductAmount>();
|
|
|
+ public decimal? TotalCost = 0;
|
|
|
+ public Cart()
|
|
|
+ {
|
|
|
+ InitializeComponent();
|
|
|
+ CartList.ItemsSource = Products;
|
|
|
+ foreach (Product p in Products)
|
|
|
+ {
|
|
|
+ TotalCost += p.ProductCost - (p.ProductCost / 100 * p.ProductMaxDiscountAmount);
|
|
|
+ }
|
|
|
+ CostOrder.Text = "Стоимость заказа: " + string.Format("{0:C2}", TotalCost);
|
|
|
+ }
|
|
|
+
|
|
|
+ public Cart(int id)
|
|
|
+ {
|
|
|
+ InitializeComponent();
|
|
|
+ CartList.ItemsSource = Products;
|
|
|
+ foreach (Product p in Products)
|
|
|
+ {
|
|
|
+ TotalCost += p.ProductCost - (p.ProductCost / 100 * p.ProductMaxDiscountAmount);
|
|
|
+ }
|
|
|
+ CostOrder.Text = string.Format("{0:C2}", TotalCost);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void CostCalculate(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ TextBlock tb = (TextBlock)sender;
|
|
|
+ string Article = tb.Uid.ToString();
|
|
|
+ Product pr = DB.Product.Where(x => x.ProductArticleNumber == Article).FirstOrDefault();
|
|
|
+ if (pr.ProductMaxDiscountAmount > 0)
|
|
|
+ {
|
|
|
+ tb.Text = "Цена за единицу: " + string.Format("{0:C2}", pr.ProductCost - (pr.ProductCost / 100 * pr.ProductMaxDiscountAmount));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void Photo(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ Image pic = (Image)sender;
|
|
|
+ string Article = pic.Uid.ToString();
|
|
|
+ string photoPath = DB.Product.Where(x => x.ProductArticleNumber == Article).Select(x => x.ProductPhoto).FirstOrDefault();
|
|
|
+ if (photoPath != null && photoPath != "")
|
|
|
+ {
|
|
|
+ pic.Source = new BitmapImage(new Uri(Environment.CurrentDirectory + "\\Pictures\\" + photoPath, UriKind.RelativeOrAbsolute));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ pic.Source = new BitmapImage(new Uri(Environment.CurrentDirectory + "\\Pictures\\picture.png", UriKind.RelativeOrAbsolute));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void AmountCalculate(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ TextBlock tb = (TextBlock)sender;
|
|
|
+ string Article = tb.Uid.ToString();
|
|
|
+ Product pr = Products.Where(x => x.ProductArticleNumber == Article).FirstOrDefault();
|
|
|
+ int index = Products.IndexOf(pr);
|
|
|
+ tb.Text = ProductsAmount[index].Amount.ToString();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void MinusAmount(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ Button bt = (Button)sender;
|
|
|
+ string article = bt.Uid.ToString();
|
|
|
+ Product pr = Products.Where(x => x.ProductArticleNumber == article).First();
|
|
|
+ ProductAmount pa = ProductsAmount.Where(x => x.Article == article).First();
|
|
|
+ if ((pa.Amount - 1) == 0)
|
|
|
+ {
|
|
|
+ ProductsAmount.Remove(pa);
|
|
|
+ Products.Remove(pr);
|
|
|
+ if (Products.Count == 0)
|
|
|
+ {
|
|
|
+ this.Close();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+
|
|
|
+ foreach (ProductAmount pp in ProductsAmount)
|
|
|
+ {
|
|
|
+ if (pp.Article == article)
|
|
|
+ {
|
|
|
+ pp.Amount--;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ TotalCost = 0;
|
|
|
+ foreach (Product p in Products)
|
|
|
+ {
|
|
|
+ TotalCost += (p.ProductCost - (p.ProductCost / 100 * p.ProductMaxDiscountAmount)) * ProductsAmount.Where(x => x.Article == p.ProductArticleNumber).Select(x => x.Amount).First();
|
|
|
+ }
|
|
|
+ CostOrder.Text = "Стоимость заказа: " + string.Format("{0:C2}", TotalCost);
|
|
|
+ CartList.ItemsSource = Products.ToList();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void PlusAmount(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ Button bt = (Button)sender;
|
|
|
+ string article = bt.Uid.ToString();
|
|
|
+ foreach (ProductAmount pa in ProductsAmount)
|
|
|
+ {
|
|
|
+ if (pa.Article == article)
|
|
|
+ {
|
|
|
+ pa.Amount++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ TotalCost = 0;
|
|
|
+ foreach (Product p in Products)
|
|
|
+ {
|
|
|
+ TotalCost += (p.ProductCost - (p.ProductCost / 100 * p.ProductMaxDiscountAmount)) * ProductsAmount.Where(x => x.Article == p.ProductArticleNumber).Select(x => x.Amount).First();
|
|
|
+
|
|
|
+ }
|
|
|
+ CostOrder.Text = "Стоимость заказа: " + string.Format("{0:C2}", TotalCost);
|
|
|
+ CartList.ItemsSource = Products.ToList();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void DeleteProduct(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ Button bt = (Button)sender;
|
|
|
+ string article = bt.Uid.ToString();
|
|
|
+ Product pr = Products.Where(x => x.ProductArticleNumber == article).First();
|
|
|
+ ProductAmount pa = ProductsAmount.Where(x => x.Article == article).First();
|
|
|
+ ProductsAmount.Remove(pa);
|
|
|
+ Products.Remove(pr);
|
|
|
+ if (Products.Count == 0)
|
|
|
+ {
|
|
|
+ this.Close();
|
|
|
+ }
|
|
|
+ TotalCost = 0;
|
|
|
+ foreach (Product p in Products)
|
|
|
+ {
|
|
|
+ TotalCost += (p.ProductCost - (p.ProductCost / 100 * p.ProductMaxDiscountAmount)) * ProductsAmount.Where(x => x.Article == p.ProductArticleNumber).Select(x => x.Amount).First();
|
|
|
+ }
|
|
|
+ CostOrder.Text = "Стоимость заказа: " + string.Format("{0:C2}", TotalCost);
|
|
|
+ CartList.ItemsSource = Products.ToList();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void CreateOrder(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ Random random = new Random();
|
|
|
+ Order newOrder = new Order();
|
|
|
+ newOrder.OrderCreateDate = DateTime.Now;
|
|
|
+ bool ThreeOrLess = false;
|
|
|
+ foreach (Product p in Products)
|
|
|
+ {
|
|
|
+ if (p.ProductQuantityInStock <= 3)
|
|
|
+ {
|
|
|
+ ThreeOrLess = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ThreeOrLess)
|
|
|
+ {
|
|
|
+ newOrder.OrderDeliveryDate = DateTime.Now.AddDays(6);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ newOrder.OrderDeliveryDate = DateTime.Now.AddDays(3);
|
|
|
+ }
|
|
|
+ newOrder.OrderPickupPoint = random.Next(1, 36);
|
|
|
+ newOrder.OrderReceivingCode = random.Next(100, 999);
|
|
|
+ newOrder.OrderStatus = 1;
|
|
|
+ DB.Order.Add(newOrder);
|
|
|
+ //DB.SaveChanges();
|
|
|
+ int id = DB.Order.Where(x => x.OrderCreateDate == newOrder.OrderCreateDate).Select(x => x.OrderID).FirstOrDefault();
|
|
|
+ foreach (Product p in Products)
|
|
|
+ {
|
|
|
+ OrderProduct newOrderProduct = new OrderProduct();
|
|
|
+ newOrderProduct.OrderID = id;
|
|
|
+ newOrderProduct.ProductArticleNumber = p.ProductArticleNumber;
|
|
|
+ newOrderProduct.ProductAmount = ProductsAmount.Where(x => x.Article == p.ProductArticleNumber).Select(x => x.Amount).FirstOrDefault();
|
|
|
+ DB.OrderProduct.Add(newOrderProduct);
|
|
|
+ }
|
|
|
+ DB.SaveChanges();
|
|
|
+ MessageBox.Show("Заказ собран, код получения: " + newOrder.OrderReceivingCode + " \nАдрес пунката выдачи: " +
|
|
|
+ DB.PickupPoints.Where(x => x.PickupID == newOrder.OrderPickupPoint).Select(x => x.PuckupAddress).FirstOrDefault() +
|
|
|
+ "\nЗаказ будет доставлен " + newOrder.OrderDeliveryDate.ToShortDateString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|