Листинг
using Autoshop.BL.Interfaces;
using Autoshop.BL.Models;
using System.Linq;
using System.Windows;
namespace Autoshop.UI
{
///
/// Логика взаимодействия для AddProductWindow.xaml
///
public partial class AddProductWindow : Window
{
///
/// Список вида товаров
///
private static readonly string[] Categories = { "Свечи", "Колодки", "Фильтры", "Диски", "Шины" };
///
/// Поле хранит идентификатор товара
///
private int _id;
public AddProductWindow()
{
InitializeComponent();
// Передаем допустимые значения
cbCategory.ItemsSource = Categories;
// Задаем начальное значение
cbCategory.SelectedIndex = 0;
}
private void BtnCancel_Click(object sender, RoutedEventArgs e)
{
Close();
}
private void BtnSave_Click(object sender, RoutedEventArgs e)
{
int? sale = null;
if (string.IsNullOrEmpty(tbName.Text))
{
MessageBox.Show("Поле наименование не может быть пустым", "Проверка");
return;
}
if (string.IsNullOrEmpty(tbCustomer.Text))
{
MessageBox.Show("Поле покупатель не может быть пустым", "Проверка");
return;
}
if (!int.TryParse(tbOrderDate.Text, out int order))
{
MessageBox.Show("Дата заказа должна быть целым числом", "Проверка");
return;
}
if (!string.IsNullOrEmpty(tbSaleDate.Text))
{
int intSale;
if (!int.TryParse(tbSaleDate.Text, out intSale))
{
MessageBox.Show("Дата продажи должна быть целым числом", "Проверка");
return;
}
if (intSale < order)
{
MessageBox.Show("Дата продажи должны быть больше даты заказа", "Проверка");
return;
}
sale = intSale;
}
// Создаем объект для передачи данных
ProductDto product = new ProductDto()
{
// Заполняем объект данными
Name = tbName.Text,
Customer = tbCustomer.Text,
OrderDate = order,
SaleDate = sale,
Category = cbCategory.SelectedItem.ToString()
};
// Именно тут запрашиваем реализованную раннее задачу по работе с товарами
IProductProcess productProcess = ProcessFactory.GetProductProcess();
// если это новый объект - сохраняем его
if (_id == 0)
{
// Сохраняем товар
productProcess.Add(product);
}
else // иначе обновляем
{
// копируем обратно идентификатор объекта
product.Id = _id;
// обновляем
productProcess.Update(product);
}
// и закрываем форму
Close();
}
public void Load(ProductDto product)
{
// если объект не существует или его тип не в списке допустимых, выходим
if (product == null || !Categories.Contains(product.Category))
{
return;
}
// сохраняем id нагрузки
_id = product.Id;
// заполняем визуальные компоненты для отображения данных
tbName.Text = product.Name;
tbCustomer.Text = product.Customer;
tbOrderDate.Text = product.OrderDate.ToString();
if (product.SaleDate.HasValue)
{
tbSaleDate.Text = product.SaleDate.Value.ToString();
}
cbCategory.SelectedItem = product.Category;
}
}
}
|