//создание товаров static Assortment SetAssortmentTestData(Category categories) { Assortment assortment = new Assortment(categories); // Категория №1: Экран Product screen1 = new Product("Экраны", "Очень хороший", "Супер характеристики","Экран Самсунг", 150); Product screen2 = new Product("Экраны", "нормальный", "неплохие характеристики", "Экран Филипс", 50); Product screen3 = new Product("Экраны", "плохой", "плохие характеристики", "Экран Хуавэй", 10); // Категория №2: Мышки Product mouse1 = new Product("Мышки", "Очень хорошая", "Супер характеристики", "Мышка Logitech", 150); Product mouse2 = new Product("Мышки", "нормальная", "неплохие характеристики", "Мышка Apple", 50); Product mouse3 = new Product("Мышки", "плохая", "плохие характеристики", "Мышка Corsair", 10); //добавление товаров в ассортмент магазина assortment.AddProduct(screen1); assortment.AddProduct(screen2); assortment.AddProduct(screen3); assortment.AddProduct(mouse1); assortment.AddProduct(mouse2); assortment.AddProduct(mouse3); return assortment; }
/// <summary> /// Конструктор формы с параметрами /// </summary> /// <param name="categories">объект класса "товарные категории"</param> /// <param name="assortment">объект класса "ассортимент товаров"</param> /// <param name="product">продукт, информацию о котором необходимо /// откорректировать</param> public FormCreateAndEdit(Category categories, Assortment assortment, Product product) : this(categories, assortment) { this.selectedProduct = product; this.SetComboBoxCategoryStartIteam(); this.TextBoxNameInitialization(); this.TextBoxCharacteristicsInitialization(); this.TextBoxDescriptionInitialization(); this.TextBoxPriceInitialization(); }
/// <summary> /// Обработка нажатия кнопки "Создать". Добавляет информацию о /// новом товаре в ассортимент товаров. /// </summary> private void ButtonCreate(Object sender, EventArgs e) { this.formCreateAndEdit = new FormCreateAndEdit(this.categories, this.assortment); this.formCreateAndEdit.Owner = this; this.formCreateAndEdit.StartPosition = FormStartPosition.CenterParent; this.formCreateAndEdit.ShowDialog(this); if (this.formCreateAndEdit.DialogResult == DialogResult.OK) { this.selectedProduct = this.formCreateAndEdit.SelectedProduct; this.assortment = this.formCreateAndEdit.Assortment; this.categories = this.formCreateAndEdit.Categoties; this.comboBoxProducts.Items.Clear(); this.ComboBoxProductsInitialization(); this.comboBoxProducts.SelectedItem = this.selectedProduct.Name; this.textBoxPrice.Text = this.selectedProduct.Price.ToString(); } if (this.formCreateAndEdit != null) { this.formCreateAndEdit.Close(); this.formCreateAndEdit.Dispose(); this.formCreateAndEdit = null; } }
/// <summary> /// Обрабатывает событие выбора одного из пунков выподающего меню /// ComboBoxProducts. Присваивет полю this.selectedProduct /// выбранный пользователем объект класса Product. /// </summary> private void ComboBoxProductsSelectesIndexChanged(object sender, EventArgs e) { String productName = (sender as ComboBox).SelectedItem.ToString(); this.selectedProduct = this.assortment.GetProduct(productName); this.textBoxPrice.Text = this.selectedProduct.Price.ToString(); }
/// <summary> /// Обработка нажатия кнопки "Редактировать". Создает окно /// предоставляющее возможность редактировать информацию о выбранном /// товаре. /// </summary> private void ButtonEditClick(Object sender, EventArgs e) { if(this.selectedProduct == null ) { MessageBox.Show( text: "Операция редактирования " + "не может быть выполнена. Не выбрано имя товара, " + "информацию о котором необходимо отредактировать. " + "Выберите имя товара и повторите попытку.", caption: "Уведомление", buttons: MessageBoxButtons.OK, icon: MessageBoxIcon.Exclamation); } else { this.FormCreateAndEditInitialization(); if (this.formCreateAndEdit.DialogResult == DialogResult.OK) { this.selectedProduct = this.formCreateAndEdit.SelectedProduct; this.assortment = this.formCreateAndEdit.Assortment; this.categories = this.formCreateAndEdit.Categoties; this.comboBoxProducts.Items.Clear(); this.ComboBoxProductsInitialization(); this.comboBoxProducts.SelectedItem = this.selectedProduct.Name; this.textBoxPrice.Text = this.selectedProduct.Price.ToString(); this.textBoxTotalPrice.Text = "0.00"; totalOrderPrice = 0.00; this.listBoxOrderInfo.Items.Clear(); } if (this.formCreateAndEdit != null) { this.formCreateAndEdit.Close(); this.formCreateAndEdit.Dispose(); this.formCreateAndEdit = null; } } }
/// <summary> /// Проверка, правильности формата введенного значения цены. /// </summary> /// <param name="value">строка, содержащая цену продукта</param> /// <returns>true - если цена имеет верный формат</returns> private bool ValidatePriceValue(string value) { double price; if (Double.TryParse(value, out price) && price >= 0) { return true; } else { this.selectedProduct = null; MessageBox.Show("Ошбика сохранения данных. Значение цены имеет " + "неверный формат. Исправьте значение цены и попробуйте " + "еще раз."); return false; } }
/// <summary> /// Проверяет, было ли выбранно одно из названий товарных категорий, /// к которым относится новый продукт. /// Проверка осущесталяется по значению индекса, выбранного /// пользователем значения в контроллере "comboBoxCategory" /// </summary> /// <param name="id">индекс</param> /// <returns>true - если было выбранно одно из значений контроллера /// "comboBoxCategory"</returns> private bool ValidateCategory(int id) { if (id == -1) { this.selectedProduct = null; MessageBox.Show("Не выбранно название товарной категории." + "Данное поле является обязательным"); return false; } else { return true; } }
//ОБРАБОТЧИКИ СОБЫТИЙ //+-------------------------------------------------------------------+ /// <summary> /// Обработка события нажатия кнопки "Сохранить". /// Вносит изменения в существующее описание товара, после чего /// закрывает окно редактирования. /// </summary> private void ButtonSaveClick(Object sender, EventArgs e) { Product newProductInfo = new Product(); int id = this.comboBoxCategory.SelectedIndex; if (!this.ValidateCategory(id)) return; newProductInfo.Category = this.comboBoxCategory.SelectedItem.ToString(); newProductInfo.Name = this.textBoxName.Text; newProductInfo.Characteristics = this.textBoxCharacteristics.Text; newProductInfo.Description = this.textBoxDescription.Text; if (!this.ValidatePriceValue(this.textBoxPrice.Text)) return; if (this.selectedProduct != null) { this.assortment.ReplaceProduct(this.selectedProduct, newProductInfo); } else { this.assortment.AddProduct(newProductInfo); } this.selectedProduct = newProductInfo; this.DialogResult = DialogResult.OK; this.Close(); }