using ConfectioneryBusinessLogic.MailWorker; using ConfectioneryContracts.BusinessLogicsContracts; using Microsoft.Extensions.Logging; 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; using ConfectioneryContracts.ViewModels; using ConfectioneryContracts.DI; namespace ConfectioneryView { public partial class FormViewMail : Form { private readonly ILogger _logger; private readonly IMessageInfoLogic _logic; private int currentPage = 1; public int pageSize = 5; public FormViewMail(ILogger logger, IMessageInfoLogic logic) { InitializeComponent(); _logger = logger; _logic = logic; buttonPrevPage.Enabled = false; } private void FormViewMail_Load(object sender, EventArgs e) { MailLoad(); } private bool MailLoad() { try { dataGridView.FillAndConfigGrid(_logic.ReadList(new() { Page = currentPage, PageSize = pageSize, })); _logger.LogInformation("Загрузка списка писем"); labelInfoPages.Text = $"{currentPage} страница"; return true; } catch (Exception ex) { _logger.LogError(ex, "Ошибка загрузки писем"); MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } } private void ButtonPrevPage_Click(object sender, EventArgs e) { if (currentPage == 1) { _logger.LogWarning("Неккоректный номер страницы {page}", currentPage - 1); return; } currentPage--; if (MailLoad()) { buttonNextPage.Enabled = true; if (currentPage == 1) { buttonPrevPage.Enabled = false; } } } private void ButtonNextPage_Click(object sender, EventArgs e) { currentPage++; if (!MailLoad() || ((List)dataGridView.DataSource).Count == 0) { _logger.LogWarning("Out of range messages"); currentPage--; MailLoad(); buttonNextPage.Enabled = false; } else { buttonPrevPage.Enabled = true; } } private void dataGridView_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) { var form = DependencyManager.Instance.Resolve(); form.MessageId = (string)dataGridView.Rows[e.RowIndex].Cells["MessageId"].Value; form.ShowDialog(); MailLoad(); } } }