public void Add(MessageInfo msgInfo) { OutboxHelper.AddOutboxMessage(_provider, msgInfo); Refresh(); var maxId = int.MinValue; foreach (var newMessage in this) { if (newMessage.ID > maxId) { maxId = newMessage.ID; } } }
private void SaveMessage(bool closeOnSave) { // subject validation if (_subjectTextBox.Text.Trim().Length == 0) { MessageBox.Show( SR.MessageEditor.SubjectRequired, ApplicationInfo.ApplicationName, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } // fill object from controls if (_forumsComboBox.ForumId != -1) { _messageInfo.ForumId = _forumsComboBox.ForumId; } _messageInfo.Subject = _subjectTextBox.Text.Trim(); _messageInfo.Message = _messageEditor.Text.Trim(); if (!_messageInfo.Hold) { // overquote validation if (_quoteAnalyzer != null && _quoteAnalyzer.IsOverquoted(_messageEditor.Text)) { // Предлагаем вернуться к редактированию сообщения. if (MessageBox.Show( this, SR.MessageEditor.QuoteWarning, ApplicationInfo.ApplicationName, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes) { return; } } } if (_formMode == MessageFormMode.Add || _formMode == MessageFormMode.Reply) { OutboxHelper.AddOutboxMessage(_serviceManager, _messageInfo); if (!closeOnSave) { using (var db = _serviceManager.CreateDBContext()) _messageInfo.ID = db.OutboxMessages().Max(m => m.ID); _formMode = MessageFormMode.Edit; } _serviceManager.LogInfo(string.Format( SR.MessageEditor.LogNewMsg, _forumsComboBox.Text)); } else { UpdateOutboxMessage(_messageInfo); _serviceManager.LogInfo(string.Format( SR.MessageEditor.LogChangeMsg, _forumsComboBox.Text)); } _messageEditor.SetSavePoint(); _subjectTextBox.Modified = false; OnIsModifiedChanged(); if (MessageSent != null) { MessageSent(this, _messageInfo.ID); } if (closeOnSave) { NativeMethods.PostMessage(Handle, NativeMethods.WM_CLOSE, IntPtr.Zero, IntPtr.Zero); } _serviceManager.GetRequiredService <IOutboxManager>().NewMessages.Refresh(); }