123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 |
- using Sessioa.BaseModel;
- using Sessioa.Classes;
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.IO;
- using System.Linq;
- using System.Text.RegularExpressions;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Media.Imaging;
- namespace Sessioa.Pages
- {
- /// <summary>
- /// Логика взаимодействия для ProductCard.xaml
- /// </summary>
- public partial class ProductCard : Page
- {
- User user = null;
- Product prEdit = null;
- List<string> imagePath = new List<string>();
- List<ProductCategory> categories = BaseClass.C_Base.ProductCategory.ToList();
- List<Manufacturer> manufacturersList = BaseClass.C_Base.Manufacturer.ToList();
- List<Provider> providerList = BaseClass.C_Base.Provider.ToList();
- int imActual = -1;
- bool state = true;
- bool resIm = false;
- public ProductCard(User userSign)
- {
- InitializeComponent();
- user = userSign;
- sett();
- }
- public ProductCard(User userSign, Product product)
- {
- InitializeComponent();
- state = false;
- prEdit = product;
- user = userSign;
- TB_Articule.Text = product.ProductArticleNumber;
- TB_Articule.IsReadOnly = true;
- TB_Title.Text = product.ProductName;
- TB_Description.Text = product.ProductDescription;
- sett();
- foreach (var imList in imagePath)
- {
- imActual++;
- if (imList == product.ProductPhoto)
- {
- resIm = true;
- break;
- }
- }
- if (resIm == true)
- ImageProd.Source = new BitmapImage(new Uri(imagePath[imActual], UriKind.Relative));
- CategoryProd.SelectedItem = categories[product.ProductCategory - 1];
- ManufacturedProd.SelectedItem = manufacturersList[product.ProductManufacturer - 1];
- ProviderProd.SelectedItem = providerList[product.ProductProvider - 1];
- TB_Price.Text = product.ProductCost.ToString();
- if (product.ProductDiscountAmount != null)
- TB_Discount.Text = product.ProductDiscountAmount.ToString();
- TB_Count.Text = product.ProductQuantityInStock.ToString();
- }
- public void sett()
- {
- FileInfo[] files = new DirectoryInfo($"{Directory.GetCurrentDirectory()}\\Photos").GetFiles();
- foreach (FileInfo file in files)
- {
- imagePath.Add("/Photos/" + file.Name);
- Debug.Write(file.Name);
- }
- CategoryProd.ItemsSource = categories;
- CategoryProd.DisplayMemberPath = "CategoryTitle";
- CategoryProd.SelectedValuePath = "CategoryId";
- ManufacturedProd.ItemsSource = manufacturersList;
- ManufacturedProd.DisplayMemberPath = "Manufacturer1";
- ManufacturedProd.SelectedValuePath = "ManufacturerId";
- ProviderProd.ItemsSource = providerList;
- ProviderProd.DisplayMemberPath = "Provider1";
- ProviderProd.SelectedValuePath = "ProviderId";
- }
- private void BT_save_Click(object sender, RoutedEventArgs e)
- {
- try
- {
- Regex regArticule = new Regex("[A-z][0-9]{3}[A-z][0-9]");
- Regex regPrice = new Regex(@"(\d)");
- if (TB_Articule.Text.Length < 1)
- {
- MessageBox.Show("Укажите артикул.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- else if (!regArticule.IsMatch(TB_Articule.Text))
- {
- MessageBox.Show("Неверный формат артикула. Пример: А000А0. Используются латинские буквы.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- else if (TB_Price.Text.Length < 1)
- {
- MessageBox.Show("Укажите стоимость.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- else if (!regPrice.IsMatch(TB_Price.Text))
- {
- MessageBox.Show("Неверный формат стоимости. Все символы должны быть целочисленными.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- else if (Convert.ToDouble(TB_Price.Text) < 1 || !double.TryParse(TB_Price.Text, out double a))
- {
- MessageBox.Show("Стоимость не может быть меньше 1.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- else if ((!regPrice.IsMatch(TB_Discount.Text) || !int.TryParse(TB_Discount.Text, out int c)) && TB_Discount.Text != string.Empty)
- MessageBox.Show("Неверный формат скидки. Все символы должны быть целочисленными.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
- else if ((Convert.ToInt32(TB_Discount.Text) > 99 || Convert.ToInt32(TB_Discount.Text) < 0) && TB_Discount.Text != string.Empty)
- MessageBox.Show("Такая скидка не может быть применена. Скидка не может быть больше 99 и меньше 0.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
- else if (TB_Count.Text.Length < 1)
- {
- MessageBox.Show("Укажите количество товара.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- else if (!regPrice.IsMatch(TB_Count.Text))
- {
- MessageBox.Show("Неверный формат количества товара. Все символы должны быть целочисленными.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- else if (Convert.ToInt32(TB_Count.Text) < 1)
- {
- MessageBox.Show("Стоимость не может быть меньше 1.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- else if (TB_Title.Text.Length < 1)
- {
- MessageBox.Show("Заполните поле с названием товара.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- else if (TB_Description.Text.Length < 1)
- {
- MessageBox.Show("Заполните поле с описанием.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- else if (CategoryProd.SelectedItem == null)
- {
- MessageBox.Show("Категория товара не выбрана.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- else if (ManufacturedProd.SelectedItem == null)
- {
- MessageBox.Show("Производитель товара не выбран.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- else if (ProviderProd.SelectedItem == null)
- {
- MessageBox.Show("Поставщик товара не выбран.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- else
- {
- if (state == true)
- {
- Product newProduct = new Product()
- {
- ProductArticleNumber = TB_Articule.Text,
- ProductName = TB_Title.Text,
- ProductDescription = TB_Description.Text,
- ProductCategory = CategoryProd.SelectedIndex + 1,
- ProductManufacturer = ManufacturedProd.SelectedIndex + 1,
- ProductProvider = ProviderProd.SelectedIndex + 1,
- ProductCost = Convert.ToInt32(TB_Price.Text),
- ProductQuantityInStock = Convert.ToInt32(TB_Count.Text)
- };
- if (imActual != -1)
- newProduct.ProductPhoto = imagePath[imActual];
- if (TB_Discount.Text.Length > 0)
- {
- newProduct.ProductDiscountAmount = Convert.ToByte(TB_Discount.Text);
- }
- bool res = false;
- foreach (var item in BaseClass.C_Base.Product.ToList())
- {
- if (item.ProductArticleNumber == newProduct.ProductArticleNumber)
- {
- MessageBox.Show("Продукт с таким артикулом уже существует.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
- res = true;
- }
- }
- if (res != true)
- {
- BaseClass.C_Base.Product.Add(newProduct);
- BaseClass.C_Base.SaveChanges();
- MessageBoxResult mbr = MessageBox.Show("Продукт добавлен", "Уведомление", MessageBoxButton.OK, MessageBoxImage.Information);
- if (mbr == MessageBoxResult.OK)
- FrameClass.C_Frame.Navigate(new ProductsPage(user));
- }
- }
- else
- {
- Product edit = BaseClass.C_Base.Product.FirstOrDefault(x => x.ProductArticleNumber == prEdit.ProductArticleNumber);
- edit.ProductArticleNumber = TB_Articule.Text;
- edit.ProductName = TB_Title.Text;
- edit.ProductDescription = TB_Description.Text;
- edit.ProductCategory = CategoryProd.SelectedIndex + 1;
- edit.ProductManufacturer = ManufacturedProd.SelectedIndex + 1;
- edit.ProductProvider = ProviderProd.SelectedIndex + 1;
- edit.ProductCost = Convert.ToDecimal(TB_Price.Text);
- edit.ProductQuantityInStock = Convert.ToInt32(TB_Count.Text);
- if (resIm != false)
- edit.ProductPhoto = imagePath[imActual];
- if (TB_Discount.Text.Length > 0)
- {
- edit.ProductDiscountAmount = Convert.ToByte(TB_Discount.Text);
- }
- BaseClass.C_Base.SaveChanges();
- MessageBoxResult mbr = MessageBox.Show("Продукт изменен", "Уведомление", MessageBoxButton.OK, MessageBoxImage.Information);
- if (mbr == MessageBoxResult.OK)
- FrameClass.C_Frame.Navigate(new ProductsPage(user));
- }
- }
- }
- catch
- {
- MessageBox.Show("Неизвестная ошибка.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- }
- private void BT_Back_Click(object sender, RoutedEventArgs e)
- {
- FrameClass.C_Frame.Navigate(new ProductsPage(user));
- }
- private void BackIm_Click(object sender, RoutedEventArgs e)
- {
- if (imActual == 0 || imActual == -1)
- imActual = imagePath.Count - 1;
- else
- imActual--;
- ImageProd.Source = new BitmapImage(new Uri(imagePath[imActual], UriKind.Relative));
- }
- private void NextIm_Click(object sender, RoutedEventArgs e)
- {
- if (imActual == imagePath.Count - 1 || imActual == -1)
- imActual = 0;
- else
- imActual++;
- ImageProd.Source = new BitmapImage(new Uri(imagePath[imActual], UriKind.Relative));
- }
- }
- }
|