using AutomobilePlantBusinessLogic.MailWorker; using AutomobilePlantContracts.BusinessLogicsContracts; using AutomobilePlantContracts.ViewModels; using Microsoft.Extensions.Logging; namespace AutomobilePlantView { public partial class FormMail : Form { private readonly ILogger _logger; private readonly AbstractMailWorker _mailWorker; private readonly IMessageInfoLogic _logic; private MessageInfoViewModel _message; public string MessageId { get; set; } = string.Empty; public FormMail(ILogger logger, AbstractMailWorker mailWorker, IMessageInfoLogic logic) { InitializeComponent(); _logger = logger; _mailWorker = mailWorker; _logic = logic; } private void buttonCancel_Click(object sender, EventArgs e) { DialogResult = DialogResult.Cancel; Close(); } private void buttonSave_Click(object sender, EventArgs e) { _mailWorker.MailSendAsync(new() { MailAddress = _message.SenderName, Subject = textBoxHead.Text, Text = textBoxBody.Text, }); _logic.Update(new() { MessageId = MessageId, Reply = textBoxBody.Text, IsReaded = true, }); MessageBox.Show("Успешно отправлен ответ", "Отправлен ответ", MessageBoxButtons.OK); DialogResult = DialogResult.OK; Close(); } private void FormMail_Load(object sender, EventArgs e) { try { _message = _logic.ReadElement(new() { MessageId = MessageId }); if (_message == null) throw new ArgumentNullException("Письма с таким Id не существует"); _logic.Update(new() { MessageId = MessageId, Reply = _message.Reply, IsReaded = true, }); labelHead.Text = _message.Subject; labelBody.Text = _message.Body; labelFrom.Text = $"From: {_message.SenderName}"; if (_message.IsReaded is false) { _logic.Update(new() { MessageId = MessageId, IsReaded = true, Reply = _message.Reply }); } } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения собщения"); MessageBox.Show(ex.Message, "Eror", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }