166 lines
5.3 KiB
C#
166 lines
5.3 KiB
C#
|
using SushiBarBusinessLogic;
|
|||
|
using SushiBarContracts.BindingModels;
|
|||
|
using SushiBarContracts.SearchModels;
|
|||
|
using SushiBarContracts.ViewModels;
|
|||
|
|
|||
|
namespace SushiBarView.Forms
|
|||
|
{
|
|||
|
public partial class FormCreateCheque : Form
|
|||
|
{
|
|||
|
private readonly ChequeLogic _chequeLogic;
|
|||
|
private readonly CustomerLogic _customerLogic;
|
|||
|
|
|||
|
private List<ChequeItemViewModel> ChequeItems;
|
|||
|
|
|||
|
private int? _id;
|
|||
|
public int Id { set { _id = value; } }
|
|||
|
|
|||
|
public FormCreateCheque(ChequeLogic ChequeLogic, CustomerLogic customerLogic)
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
|
|||
|
_chequeLogic = ChequeLogic;
|
|||
|
_customerLogic = customerLogic;
|
|||
|
|
|||
|
ChequeItems = new();
|
|||
|
}
|
|||
|
|
|||
|
private void FormCreateCheque_Load(object sender, EventArgs e)
|
|||
|
{
|
|||
|
var List = _customerLogic.ReadList(null);
|
|||
|
if (List != null)
|
|||
|
{
|
|||
|
CustomerComboBox.DisplayMember = "Fio";
|
|||
|
CustomerComboBox.ValueMember = "Id";
|
|||
|
CustomerComboBox.DataSource = List;
|
|||
|
CustomerComboBox.SelectedItem = null;
|
|||
|
}
|
|||
|
|
|||
|
if (_id.HasValue)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
var View = _chequeLogic.ReadElement(new ChequeSearchModel
|
|||
|
{
|
|||
|
Id = _id.Value
|
|||
|
});
|
|||
|
|
|||
|
if (View != null)
|
|||
|
{
|
|||
|
CustomerComboBox.SelectedItem = View.CustomerId;
|
|||
|
ChequeItems = View.ChequeItems.Select(x => x.Value).ToList();
|
|||
|
|
|||
|
CustomerComboBox.Enabled = false;
|
|||
|
AddButton.Enabled = false;
|
|||
|
SaveButton.Enabled = false;
|
|||
|
|
|||
|
LoadData();
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void LoadData()
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
DataGridView.Rows.Clear();
|
|||
|
foreach (var ChequeItem in ChequeItems)
|
|||
|
{
|
|||
|
DataGridView.Rows.Add(new object[] { ChequeItem.DishId, ChequeItem.DishName, ChequeItem.Count, ChequeItem.CookFio });
|
|||
|
}
|
|||
|
|
|||
|
PriceTextBox.Text = CalcPrice().ToString();
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void AddButton_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
var Form = new FormCreateChequeItem(
|
|||
|
new DishLogic(new SushiBarDatabaseImplement.Storages.DishStorage()),
|
|||
|
new CookLogic(new SushiBarDatabaseImplement.Storages.CookStorage()));
|
|||
|
|
|||
|
if (Form.ShowDialog() == DialogResult.OK)
|
|||
|
{
|
|||
|
if (Form.DishModel == null || Form.CookModel == null)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
ChequeItems.Add(new ChequeItemViewModel
|
|||
|
{
|
|||
|
DishId = Form.DishId,
|
|||
|
DishName = Form.DishModel.DishName,
|
|||
|
DishPrice = Form.DishModel.Price,
|
|||
|
CookId = Form.CookId,
|
|||
|
CookFio = Form.CookModel.Fio,
|
|||
|
Count = Form.Count,
|
|||
|
});
|
|||
|
LoadData();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void SaveButton_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
var Мodel = new ChequeBindingModel
|
|||
|
{
|
|||
|
Id = 0,
|
|||
|
ChequeItems = ChequeItems.Select(x => new ChequeItemBindingModel
|
|||
|
{
|
|||
|
DishId = x.DishId,
|
|||
|
CookId = x.CookId,
|
|||
|
Count = x.Count,
|
|||
|
}).ToList(),
|
|||
|
CustomerId = null,
|
|||
|
OrderDate = DateTime.Now,
|
|||
|
TotalSum = CalcPrice(),
|
|||
|
PromotionId = null,
|
|||
|
};
|
|||
|
|
|||
|
var OperationResult = _chequeLogic.CreateCheque(Мodel);
|
|||
|
|
|||
|
if (!OperationResult)
|
|||
|
{
|
|||
|
throw new Exception("Ошибка при сохранении. Дополнительная информация в логах.");
|
|||
|
}
|
|||
|
|
|||
|
MessageBox.Show("Сохранение прошло успешно", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|||
|
DialogResult = DialogResult.OK;
|
|||
|
Close();
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void ButtonCancel_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
DialogResult = DialogResult.Cancel;
|
|||
|
Close();
|
|||
|
}
|
|||
|
|
|||
|
private double CalcPrice()
|
|||
|
{
|
|||
|
double Price = 0;
|
|||
|
|
|||
|
foreach (var Elem in ChequeItems)
|
|||
|
{
|
|||
|
Price += Elem.DishPrice * Elem.Count;
|
|||
|
}
|
|||
|
|
|||
|
return Math.Round(Price * 1.1, 2);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|