using Contracts.BindingModels; using Contracts.BuisnessLogicsContracts; using Contracts.ViewModels; using Microsoft.EntityFrameworkCore.Diagnostics; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace DeliveryApp { public partial class FormType : Form { private readonly ITypeLogic _logic; List? _list; public FormType(ITypeLogic logic) { InitializeComponent(); _logic = logic; } private void FormType_Load(object sender, EventArgs e) { LoadData(); } private void LoadData() { try { _list = _logic.ReadList(null); if (_list != null) { dataGridView.DataSource = _list; dataGridView.Columns["Id"].Visible = false; dataGridView.Columns["PostType"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void dataGridView_UserAddedRow(object sender, DataGridViewRowEventArgs e) { } private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e) { try { if (dataGridView.SelectedCells[1].Value == null) { throw new Exception("Ошибка, нельзя сохранить пустую строку"); } int _id; bool id = Int32.TryParse(dataGridView.SelectedRows[0].Cells["Id"].Value?.ToString(), out _id); if (_id == -1) { id = false; } var model = new TypeBindingModel { Id = id ? _id : 0, PostType = dataGridView.SelectedCells[1].Value.ToString()!, }; var operationResult = id ? _logic.Update(model) : _logic.Create(model); if (!operationResult) { throw new Exception("Ошибка при сохранении."); } LoadData(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void dataGridView_KeyDown(object sender, KeyEventArgs e) { if(e.KeyCode == Keys.Insert) { _list?.Add(new TypeViewModel { Id = -1, PostType = "" }); if (_list != null) { dataGridView.DataSource = null; dataGridView.DataSource = _list; dataGridView.Columns["Id"].Visible = false; dataGridView.Columns["PostType"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; } } if(e.KeyCode == Keys.Delete) { if (MessageBox.Show("Вы уверены?", "Удалить", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) { return; } int _id; bool id = Int32.TryParse(dataGridView.SelectedRows[0].Cells["Id"].Value?.ToString(), out _id); if (_id == -1 || !id) { id = false; return; } var model = new TypeBindingModel { Id = _id, PostType = dataGridView.SelectedCells[1].Value.ToString()!, }; _logic.Delete(model); LoadData(); } } } }