private bool UpdateMessage(string id, string updateAction) { var msg = CmoMessage.GetMessage(id); if (msg != null) { CmoMessage.MessageAction action = null; switch (updateAction) { case ActionName_Archive: action = msg.Archive; break; case ActionName_Unarchive: action = msg.Unarchive; break; case ActionName_Flag: action = msg.SetFlag; break; case ActionName_ClearFlag: action = msg.ClearFlag; break; } return(action != null && action((User.Identity.Name))); } return(false); }
/// <summary> /// Gets a delegate reference to a method for a Campaign Messages Online message. /// </summary> /// <param name="commandName">A command name value representing the type of method delegate to get.</param> /// <param name="message">The targeted <see cref="CmoMessage"/> object.</param> /// <returns>A <see cref="CmoMessage.MessageAction"/> delegate reference if a matching method is found.</returns> public static CmoMessage.MessageAction GetAction(string commandName, CmoMessage message) { CmoMessage.MessageAction ma = null; if (message != null) { switch (commandName) { case ArchiveCommandName: ma = message.Archive; break; case UnarchiveCommandName: ma = message.Unarchive; break; case FlagCommandName: ma = message.SetFlag; break; case ClearFlagCommandName: ma = message.ClearFlag; break; } } return(ma); }
/// <summary> /// Handles the event that occurs when an action button that affects selected messages is clicked. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">A <see cref="CommandEventArgs"/> object that contains the event data.</param> protected void MultipleMessageAction(object sender, CommandEventArgs e) { string selectionRaw = Request.Form[CmoMailboxMessageList.MessageCheckboxName]; // check for selected messages if (string.IsNullOrEmpty(selectionRaw)) { this.PageError = NoSelectionText; } else { string[] selection = selectionRaw.Split(MessageIdDelimiters, StringSplitOptions.RemoveEmptyEntries); if (selection.Count() == 0) { this.PageError = NoSelectionText; } else { // determine action string action = null; switch (e.CommandName) { case Messages.ArchiveCommandName: action = "archived"; break; case Messages.UnarchiveCommandName: action = "unarchived"; break; case Messages.FlagCommandName: action = "flagged"; break; case Messages.ClearFlagCommandName: action = "unflagged"; break; default: this.PageError = "You have requested an unsupported action. Please try again."; break; } if (!string.IsNullOrEmpty(action)) { // iterate through messages and monitor failures bool error = false; uint successCount = 0; foreach (string messageId in selection) { CmoMessage m = CmoMessage.GetMessage(messageId); if (m == null) { error = true; } else { CmoMessage.MessageAction ma = Messages.GetAction(e.CommandName, m); if (ma != null) { if (ma(this.DataSource.Username)) { successCount++; } else { error = true; } } } } this.PageResult = string.Format("{0} message{1} {2} successfully{3}.", successCount, successCount == 1 ? string.Empty : "s", action, error ? ", with exceptions" : string.Empty); } } } this.DataBind(); }
/// <summary> /// Handles the event that occurs when an action button that affects the current message is clicked. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">A <see cref="CommandEventArgs"/> object that contains the event data.</param> protected void DoMessageAction(object sender, CommandEventArgs e) { string action = null; switch (e.CommandName) { case Messages.ArchiveCommandName: action = "archived"; break; case Messages.UnarchiveCommandName: action = "unarchived"; break; case Messages.FlagCommandName: action = "flagged"; break; case Messages.ClearFlagCommandName: action = "unflagged"; break; default: this.PageError = "You have requested an unsupported action. Please try again."; break; } if (!string.IsNullOrEmpty(action)) { _datasource = GetMessage(Request.QueryString[CmoMailboxMessageList.MessageIdParameterName]); if (_datasource != null) { // perform requested action CmoMessage.MessageAction ma = Messages.GetAction(e.CommandName, _datasource); if (ma != null) { if (ma(_mailbox.Username)) { // success this.PageResult = string.Format("Message {0} {1} successfully.", _datasource.UniqueID, action); if ((_mailbox.View == CmoMailboxView.Archived || _mailbox.View == CmoMailboxView.Current) && (e.CommandName == Messages.ArchiveCommandName || e.CommandName == Messages.UnarchiveCommandName)) { // re-get archived messages to determine if still valid for current view _datasource = GetMessage(_datasource.UniqueID); if (_messageIndex == -1) { // message no longer valid for this view, return to mailbox Response.Redirect("/Messages/", _mailbox.GetQueryString()); } } } else { // failure this.PageError = "There was an error processing your request. Please try again."; } this.DataBind(); } } else { ShowMessageNotFound(); } MessageHeaderUpdatePanel.Update(); } }