public static void SetIncidentState(ForumStorage.NodeType nodeType, IncidentBoxDocument incidentBoxDocument, int IncidentId, int ThreadNodeId, ObjectStates state) { Issue2.SetStateByEmail(nodeType, incidentBoxDocument, IncidentId, ThreadNodeId, state); }
/// <summary> /// Processes the X ibn headers. /// </summary> /// <param name="IncidentId">The incident id.</param> /// <param name="ThreadNodeId">The thread node id.</param> /// <param name="Msg">The MSG.</param> /// <returns></returns> public static bool ProcessXIbnHeaders(int IncidentId, int ThreadNodeId, Pop3Message Msg) { bool bRetVal = true; ForumStorage.NodeType nodeType = ForumStorage.NodeType.Internal; ForumThreadNodeSettingCollection settings = new ForumThreadNodeSettingCollection(ThreadNodeId); if (settings.Contains(ForumThreadNodeSetting.Incoming)) { nodeType = ForumStorage.NodeType.Incoming; } else if (settings.Contains(ForumThreadNodeSetting.Outgoing)) { nodeType = ForumStorage.NodeType.Outgoing; } bool bSetIncidentState = false; ObjectStates cmdObjectStates = ObjectStates.Active; int newResponsibleId = 0; foreach (string HeaderName in Msg.Headers.AllKeys) { string UpHeaderName = HeaderName.ToUpper(); if (UpHeaderName.StartsWith("X-IBN-")) { switch (UpHeaderName) { case "X-IBN-STATE": if (Msg.Headers[HeaderName].Trim() != "0") { cmdObjectStates = (ObjectStates)Enum.Parse(typeof(ObjectStates), Msg.Headers[HeaderName]); if (cmdObjectStates >= ObjectStates.Upcoming && cmdObjectStates <= ObjectStates.OnCheck) { bSetIncidentState = true; } else { // OZ: Wrong Object State cmdObjectStates = ObjectStates.Active; } } break; case "X-IBN-PRIVATEMSG": if (Msg.Headers[HeaderName].Trim() != "0") { XIbnHeaderCommand.SetPrivateStatus(ThreadNodeId); nodeType = ForumStorage.NodeType.Internal; bRetVal = false; } break; case "X-IBN-RESOLUTION": if (Msg.Headers[HeaderName].Trim() != "0") { XIbnHeaderCommand.SetResolutionStatus(ThreadNodeId); } break; case "X-IBN-WORKAROUND": if (Msg.Headers[HeaderName].Trim() != "0") { XIbnHeaderCommand.SetWorkaroundStatus(ThreadNodeId); } break; case "X-IBN-RESPONSIBLE": if (Msg.Headers[HeaderName].Trim() != "0") { newResponsibleId = int.Parse(Msg.Headers[HeaderName]); } break; default: XIbnHeaderCommand.Unknown(IncidentId, Msg.Headers[HeaderName]); break; } } } // Set Default IBN Object State if (!bSetIncidentState) { if (nodeType == ForumStorage.NodeType.Incoming) { IncidentBoxDocument document = IncidentBoxDocument.Load(Incident.GetIncidentBox(IncidentId)); switch (document.EMailRouterBlock.IncomingEMailAction) { case ExternalEMailActionType.None: break; case ExternalEMailActionType.SetReOpenState: XIbnHeaderCommand.SetIncidentState(nodeType, document, IncidentId, ThreadNodeId, ObjectStates.ReOpen); break; } } else if (nodeType == ForumStorage.NodeType.Outgoing) { IncidentBoxDocument document = IncidentBoxDocument.Load(Incident.GetIncidentBox(IncidentId)); switch (document.EMailRouterBlock.OutgoingEMailAction) { case InternalEMailActionType.None: break; case InternalEMailActionType.SendToCheck: XIbnHeaderCommand.SetIncidentState(nodeType, document, IncidentId, ThreadNodeId, ObjectStates.OnCheck); break; case InternalEMailActionType.SetCompletedState: XIbnHeaderCommand.SetIncidentState(nodeType, document, IncidentId, ThreadNodeId, ObjectStates.Completed); break; case InternalEMailActionType.SetSuspendState: XIbnHeaderCommand.SetIncidentState(nodeType, document, IncidentId, ThreadNodeId, ObjectStates.Suspended); break; } } } else { IncidentBoxDocument document = IncidentBoxDocument.Load(Incident.GetIncidentBox(IncidentId)); XIbnHeaderCommand.SetIncidentState(nodeType, document, IncidentId, ThreadNodeId, cmdObjectStates); } // OZ: 2008-11-24 ChangeResponsible, -1 = NotSet, -2 = Group if (newResponsibleId != 0) { XIbnHeaderCommand.ChangeResponsible(IncidentId, newResponsibleId); } return(bRetVal); }