using MedicalDatabaseContracts; using MedicalDatabaseContracts.Models; using MedicalDatabaseContracts.SearchModels; using MedicalDatabaseContracts.ViewModels; using Microsoft.Extensions.Logging; namespace MedicalView { public partial class FormAbstractList : Form where M : AbstractModel where V : AbstractViewModel where S : AbstractSearchModel { protected ILogger _logger; protected ILogic _logic; public FormAbstractList(ILogger> logger, ILogic logic) { InitializeComponent(); _logger = logger; _logic = logic; } private void FormAbstractList_Load(object sender, EventArgs e) { LoadData(); } private void RefreshItemsToolStripMenuItem_Click(object sender, EventArgs e) { LoadData(); } private void AddItemToolStripMenuItem_Click(object sender, EventArgs e) { // code } private void EsitItemToolStripMenuItem_Click(object sender, EventArgs e) { // code } private void DeleteItemToolStripMenuItem_Click(object sender, EventArgs e) { // code } protected virtual void LoadData() { SetStatusStripText("Загрузка списка..."); try { long elapsed; var items = _logic.ReadList(null, out elapsed); dataGridView.DataSource = items; dataGridView.Columns["Id"].DisplayIndex = 0; foreach (DataGridViewColumn column in dataGridView.Columns) { if (column.Name.Contains("Id")) { column.Visible = false; } } dataGridView.ReadOnly = true; _logger.LogInformation("Список загружен успешно"); SetStatusStripText($"Готово. Загружено записей: {items.Count}, время загрузки {elapsed} мск"); } catch (Exception ex) { string errorMessage = "Ошибка загрузки списка"; _logger.LogError(string.Join(", ", errorMessage, $"\"{ex.Message}\"")); MessageBox.Show(string.Join("\n\n", errorMessage, $"{ex.Message}"), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); SetStatusStripText($"Ошибка загрузки"); } } protected virtual void SetStatusStripText(string text) { toolStripStatusLabel.Text = text; } } }