2023-04-20 11:47:09 +04:00

94 lines
2.9 KiB
C#

using Microsoft.Extensions.Logging;
using PizzeriaContracts.BusinessLogicsContracts;
using PizzeriaContracts.ViewModels;
using PizzeriaDataModels;
namespace Pizzeria
{
public partial class FormSellPizza : Form
{
private readonly List<PizzaViewModel>? _list;
private readonly IShopLogic _shopLogic;
private readonly ILogger _logger;
public int Id
{
get
{
return Convert.ToInt32(comboBoxPizza.SelectedValue);
}
set
{
comboBoxPizza.SelectedValue = value;
}
}
public IPizzaModel? PizzaModel
{
get
{
if (_list == null)
{
return null;
}
foreach (var elem in _list)
{
if (elem.Id == Id)
{
return elem;
}
}
return null;
}
}
public FormSellPizza(ILogger<FormSellPizza> logger, IPizzaLogic pizzaLogic, IShopLogic shopLogic)
{
InitializeComponent();
_shopLogic = shopLogic;
_logger = logger;
_list = pizzaLogic.ReadList(null);
if (_list != null)
{
comboBoxPizza.DisplayMember = "PizzaName";
comboBoxPizza.ValueMember = "Id";
comboBoxPizza.DataSource = _list;
comboBoxPizza.SelectedItem = null;
}
_shopLogic = shopLogic;
}
private void buttonSell_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBoxCount.Text))
{
MessageBox.Show("Заполните поле Количество", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (comboBoxPizza.SelectedValue == null)
{
MessageBox.Show("Выберите пиццу", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
try
{
_shopLogic.sellPizza(PizzaModel, Convert.ToInt32(textBoxCount.Text));
MessageBox.Show("Продано успешно!");
}
catch (ArgumentException ex)
{
MessageBox.Show("Ошибка продажи. Слишком большое количество");
_logger.LogWarning(ex, "Ошибка продажи");
return;
} catch(Exception err)
{
MessageBox.Show("Ошибка продажи.");
_logger.LogError(err, "Ошибка продажи");
return;
}
DialogResult = DialogResult.OK;
Close();
}
}
}