/// <summary> /// Retrieves a message from the current mailbox. /// </summary> /// <param name="UniqueID">The unique message ID of the message to retrieve.</param> /// <returns>A <see cref="CmoMessage"/> representing the requested message if found; otherwise, null.</returns> /// <remarks>Retrieving the message will initiate a fetch of the mailbox message contents as well as attempt to populate the previous message ID, next message ID, and current message index properties.</remarks> private CmoMessage GetMessage(string UniqueID) { _mailbox.GetMessages(); CmoMessage message = _mailbox.OpenMessage(UniqueID, out _previousId, out _nextId, out _messageIndex); if (message == null) { message = _mailbox.OpenMessage(UniqueID); } return(message); }
public static MessageViewModel MessageFrom(string id, CmoMailbox mailbox) { if (string.IsNullOrWhiteSpace(id) || mailbox == null) { return(new MessageViewModel()); } string previousId, nextId; int messageIndex; var source = mailbox.OpenMessage(id, out previousId, out nextId, out messageIndex); if (source == null) { mailbox.View = CmoMailboxView.All; source = mailbox.OpenMessage(id); } return(source == null || !source.IsPosted ? new MessageViewModel() : new MessageViewModel { ID = source.UniqueID, ElectionCycle = source.ElectionCycle, Title = source.Title, Flagged = source.NeedsFollowUp, HasAttachments = source.HasAttachment, OpenedDate = source.OpenDate, Posted = source.PostDate.Value, ArchivedDate = source.ArchiveDate, ArchiveUser = source.Archiver, FlagDate = source.FollowUpDate, FlagUser = source.FollowUpFlagger, OpenUser = source.Opener, Body = source.Body, CurrentView = mailbox.View, CurrentIndex = messageIndex + 1, MailboxViewCount = mailbox.Messages.Count, NextID = nextId, PreviousID = previousId, Attachments = source.Attachments.Values.Select(a => a.ID) }); }