diff --git a/SoftwareInstallation/SoftwareInstallationView/FormShop.cs b/SoftwareInstallation/SoftwareInstallationView/FormShop.cs index b8a05db..31d24da 100644 --- a/SoftwareInstallation/SoftwareInstallationView/FormShop.cs +++ b/SoftwareInstallation/SoftwareInstallationView/FormShop.cs @@ -12,129 +12,152 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using SoftwareInstallationContracts.BindingModels; +using System.Security.Cryptography; +using SoftwareInstallationContracts.SearchModels; +using SoftwareInstallationDataModels.Models; namespace SoftwareInstallationView { public partial class FormShop : Form { - private readonly List? _listShops; - private readonly IShopLogic _logic; + /// + /// Логгер + /// private readonly ILogger _logger; - - public int Id - { - get; set; - } - - private IShopModel? GetShop(int id) - { - if (_listShops == null) - { - return null; - } - foreach (var elem in _listShops) - { - if (elem.Id == id) - { - return elem; - } - } - return null; - } + /// + /// Бизнес-логика для магазинов + /// + private readonly IShopLogic _logic; + /// + /// Идентификатор + /// + private int? _id; + public int Id { set { _id = value; } } + /// + /// Список изделий в магазине + /// + private Dictionary _shopPackages; + /// + /// Конструктор + /// + /// + /// public FormShop(ILogger logger, IShopLogic logic) { InitializeComponent(); _logger = logger; - _listShops = logic.ReadList(null); _logic = logic; - + _shopPackages = new Dictionary(); } - private void LoadData(bool extendDate = true) + /// + /// Загрузка списка изделий в магазине + /// + /// + /// + private void FormShop_Load(object sender, EventArgs e) { - try + if (_id.HasValue) { - var model = GetShop(extendDate ? Id : Convert.ToInt32(null)); - if (model != null) + _logger.LogInformation("Загрузка магазина"); + try { - textBoxShop.Text = model.Name; - textBoxAddress.Text = model.Address; - openingDatePicker.Text = Convert.ToString(model.DateOpening); - dataGridView.Rows.Clear(); - foreach (var el in model.Packages.Values) + var view = _logic.ReadElement(new ShopSearchModel { Id = _id.Value }); + if (view != null) { - dataGridView.Rows.Add(new object[] { el.Item1.PackageName, el.Item1.Price, el.Item2 }); + textBoxShop.Text = view.Name; + textBoxAddress.Text = view.Address; + openingDatePicker.Text = view.DateOpening.ToString(); + _shopPackages = view.Packages ?? new Dictionary(); + LoadData(); } } - _logger.LogInformation("Загрузка магазинов"); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка загрузки магазинов"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, - MessageBoxIcon.Error); + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки магазина"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } } } - + /// + /// Кнопка "Сохранить" + /// + /// + /// private void buttonSave_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(textBoxShop.Text)) { - MessageBox.Show("Заполните название", "Ошибка", - MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show("Заполните название", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (string.IsNullOrEmpty(textBoxAddress.Text)) { - MessageBox.Show("Заполните адрес", "Ошибка", MessageBoxButtons.OK, - MessageBoxIcon.Error); + MessageBox.Show("Заполните адрес", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } - _logger.LogInformation("Сохранение изделия"); + _logger.LogInformation("Сохранение магазина"); try { - DateTime.TryParse(openingDatePicker.Text, out var dateTime); - ShopBindingModel model = new() + var model = new ShopBindingModel { + Id = _id ?? 0, Name = textBoxShop.Text, Address = textBoxAddress.Text, - DateOpening = dateTime + DateOpening = openingDatePicker.Value.Date, + Packages = _shopPackages }; - var vmodel = GetShop(Id); - bool operationResult = false; - - if (vmodel != null) - { - model.Id = vmodel.Id; - operationResult = _logic.Update(model); - } - else - { - operationResult = _logic.Create(model); - } + var operationResult = _id.HasValue ? _logic.Update(model) : _logic.Create(model); if (!operationResult) { throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); } - MessageBox.Show("Сохранение прошло успешно", "Сообщение", - MessageBoxButtons.OK, MessageBoxIcon.Information); + MessageBox.Show("Сохранение прошло успешно", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); DialogResult = DialogResult.OK; Close(); } catch (Exception ex) { - _logger.LogError(ex, "Ошибка сохранения изделия"); + _logger.LogError(ex, "Ошибка сохранения магазина"); MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } - + /// + /// Кнопка "Отмена" + /// + /// + /// private void buttonCancel_Click(object sender, EventArgs e) { DialogResult = DialogResult.Cancel; Close(); } - private void FormShop_Load(object sender, EventArgs e) + /// + /// Метод загрузки изделий магазина + /// + private void LoadData() { - LoadData(); + _logger.LogInformation("Загрузка изделий магазина"); + try + { + if (_shopPackages != null) + { + dataGridView.Rows.Clear(); + foreach (var elem in _shopPackages) + { + dataGridView.Rows.Add(new object[] + { + elem.Key, + elem.Value.Item1.PackageName, + elem.Value.Item2 + }); + } + } + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки изделий магазина"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } } } }