예제 #1
0
        public string GetUsers(string UID)
        {
            XmlDocument xmlDocument = new XmlDocument();

            try
            {
                IncidentUserTicket ticket = IncidentUserTicket.Load(new Guid(UID));
                if (ticket == null)
                {
                    System.Xml.XmlDocument doc      = new System.Xml.XmlDocument();
                    System.Xml.XmlNode     node     = doc.CreateNode(XmlNodeType.Element, SoapException.DetailElementName.Name, SoapException.DetailElementName.Namespace);
                    System.Xml.XmlNode     resource = doc.CreateNode(XmlNodeType.Element, "resource", string.Empty);
                    resource.InnerText = "strNotfound";
                    node.AppendChild(resource);
                    throw new SoapException(String.Format("The ticket '{0}' not found", UID), new XmlQualifiedName(typeof(ArgumentException).FullName), System.Web.HttpContext.Current.Request.Url.AbsoluteUri, node);
                }

                Security.UserLoginByTicket(ticket);

                xmlDocument.LoadXml("<Users></Users>");
                XmlNode xmlRootNode = xmlDocument.SelectSingleNode("Users");

                DataView dataView = Mediachase.IBN.Business.User.GetListActiveDataTable(string.Empty).DefaultView;

                foreach (DataRow row in dataView.Table.Rows)
                {
                    /// Row includes fields:
                    ///	PrincipalId, Login, Password, FirstName, LastName, Email, IMGroupId, OriginalId,
                    /// DisplayName, Department
                    XmlElement userNode = xmlDocument.CreateElement("User");
                    xmlRootNode.AppendChild(userNode);

                    userNode.SetAttribute("id", row["PrincipalId"].ToString());
                    userNode.SetAttribute("fn", row["FirstName"].ToString());
                    userNode.SetAttribute("ln", row["LastName"].ToString());
                    userNode.SetAttribute("email", row["Email"].ToString());
                    userNode.SetAttribute("department", row["Department"].ToString());
                }
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message);
                throw;
            }
            return(xmlDocument.InnerXml);
        }
예제 #2
0
        private void ProcessOutlook()
        {
            try
            {
                string ticketUid = Request["outlookticketid"].ToString();

                IncidentUserTicket iut = IncidentUserTicket.Load(new Guid(ticketUid));
                int iUserId            = iut.UserId;
                int iIncidentId        = iut.IncidentId;

                if (iUserId <= 0 || iIncidentId <= 0)
                {
                    throw new Exception();
                }

                string sUser = string.Empty;

                using (IDataReader reader = Mediachase.IBN.Business.User.GetUserInfo(iUserId))
                {
                    if (reader.Read())
                    {
                        sUser = reader["login"].ToString();
                    }
                }

                SetAuthCookie(sUser, HttpRuntime.AppDomainAppVirtualPath, false);
                Report.LogPortalLogin(iUserId, Request.UserHostAddress);

                string sRedirectString = String.Empty;
                if (Request["type"] != null && Request["type"] == "Incident")
                {
                    sRedirectString += "/Incidents/IncidentView.aspx?IncidentId=" + iIncidentId;
                }
                else if (Request["type"] != null && Request["type"] == "Client")
                {
                    sRedirectString += "/Incidents/IncidentView.aspx?IncidentId=" + iIncidentId + "&Tab=General&View=Client";
                }
                Response.Redirect(sRedirectString, true);
            }
            catch { }
        }
예제 #3
0
        public string GetIncidentInfo(string UID)
        {
            XmlDocument xmlIncident = new XmlDocument();

            try
            {
                IncidentUserTicket ticket = IncidentUserTicket.Load(new Guid(UID));
                if (ticket == null)
                {
                    System.Xml.XmlDocument doc      = new System.Xml.XmlDocument();
                    System.Xml.XmlNode     node     = doc.CreateNode(XmlNodeType.Element, SoapException.DetailElementName.Name, SoapException.DetailElementName.Namespace);
                    System.Xml.XmlNode     resource = doc.CreateNode(XmlNodeType.Element, "resource", string.Empty);
                    resource.InnerText = "strNotfound";
                    node.AppendChild(resource);
                    throw new SoapException(String.Format("The ticket '{0}' not found", UID), new XmlQualifiedName(typeof(ArgumentException).FullName), System.Web.HttpContext.Current.Request.Url.AbsoluteUri, node);
                }

                Security.UserLoginByTicket(ticket);

                xmlIncident.LoadXml("<Incident></Incident>");

                XmlNode xmlRootNode = xmlIncident.SelectSingleNode("Incident");

                XmlElement NameNode        = xmlIncident.CreateElement("Name");
                XmlElement TypeNode        = xmlIncident.CreateElement("Type");
                XmlElement DescriptionNode = xmlIncident.CreateElement("Description");
                //XmlElement ManagerNode = xmlIncident.CreateElement("Manager");
                XmlElement ClientNode  = xmlIncident.CreateElement("Client");
                XmlElement CreatedNode = xmlIncident.CreateElement("Created");
                XmlElement StateNode   = xmlIncident.CreateElement("State");
                XmlElement StateIdNode = xmlIncident.CreateElement("StateId");
                XmlElement ColorNode   = xmlIncident.CreateElement("StateColor");

                int controllerId = -1;
                int IssBoxId     = -1;

                using (IDataReader reader = Incident.GetIncident(ticket.IncidentId))
                {
                    if (reader.Read())
                    {
                        if (reader["ControllerId"] != DBNull.Value)
                        {
                            controllerId = (int)reader["ControllerId"];
                        }
                        IssBoxId = (int)reader["IncidentBoxId"];

                        NameNode.InnerText        = (string)reader["Title"];
                        TypeNode.InnerText        = (string)reader["TypeName"];
                        DescriptionNode.InnerText = (string)reader["Description"];
                        //ManagerNode.InnerText = reader["Title"];
                        ClientNode.InnerText  = (string)reader["ClientName"];
                        CreatedNode.InnerText = ((DateTime)reader["CreationDate"]).ToString("s");
                        StateNode.InnerText   = (string)reader["StateName"];
                        StateIdNode.InnerText = reader["StateId"].ToString();
                        ColorNode.InnerText   = (Util.CommonHelper.GetStateColor((int)reader["StateId"])).ToArgb().ToString();

                        xmlRootNode.AppendChild(NameNode);
                        xmlRootNode.AppendChild(TypeNode);
                        xmlRootNode.AppendChild(DescriptionNode);
                        xmlRootNode.AppendChild(ClientNode);
                        xmlRootNode.AppendChild(CreatedNode);
                        xmlRootNode.AppendChild(StateNode);
                        xmlRootNode.AppendChild(StateIdNode);
                        xmlRootNode.AppendChild(ColorNode);
                    }
                }

                int  stateId = 0;
                int  userId  = -1;
                bool isGroup = false;

                using (IDataReader reader = Incident.GetIncidentTrackingState(ticket.IncidentId))
                {
                    if (reader.Read())
                    {
                        stateId = (int)reader["StateId"];
                        userId  = (int)reader["ResponsibleId"];
                        if (reader["IsResponsibleGroup"] != DBNull.Value && (bool)reader["IsResponsibleGroup"])
                        {
                            isGroup = true;
                        }
                    }
                }


                if (stateId == 7)
                {
                    isGroup = false;
                    userId  = controllerId;
                }

                if (isGroup)
                {
                    XmlElement responsibleNode   = xmlIncident.CreateElement("GroupResponsible");
                    XmlElement responsibleIdNode = xmlIncident.CreateElement("ResponsibleId");

                    responsibleNode.InnerText   = "1";
                    responsibleIdNode.InnerText = IncidentInfo.GroupResponsibleId.ToString();

                    xmlRootNode.AppendChild(responsibleNode);
                    xmlRootNode.AppendChild(responsibleIdNode);
                }
                else if (userId != -1)
                {
                    XmlElement responsibleNode   = xmlIncident.CreateElement("Responsible");
                    XmlElement responsibleIdNode = xmlIncident.CreateElement("ResponsibleId");

                    string UserName = Mediachase.IBN.Business.User.GetUserName(userId);

                    responsibleNode.InnerText   = UserName;
                    responsibleIdNode.InnerText = userId.ToString();

                    xmlRootNode.AppendChild(responsibleNode);
                    xmlRootNode.AppendChild(responsibleIdNode);
                }
                else if (stateId != 1 && stateId != 4 && stateId != 5)
                {
                    XmlElement responsibleNode   = xmlIncident.CreateElement("Responsible");
                    XmlElement responsibleIdNode = xmlIncident.CreateElement("ResponsibleId");

                    responsibleNode.InnerText   = NotSetResponsibleName;
                    responsibleIdNode.InnerText = IncidentInfo.NotSetResponsibleId.ToString();

                    xmlRootNode.AppendChild(responsibleNode);
                    xmlRootNode.AppendChild(responsibleIdNode);
                }

                if (IssBoxId != -1)
                {
                    IncidentBox ib = IncidentBox.Load(IssBoxId);

                    XmlElement BoxNode = xmlIncident.CreateElement("IncidentBox");
                    BoxNode.InnerText = ib.Name;

                    xmlRootNode.AppendChild(BoxNode);
                }

                DataTable tbl = Incident.GetListIncidentStates(ticket.IncidentId);
                foreach (DataRow row in tbl.Rows)
                {
                    if ((int)row["StateId"] != 1 && (int)row["StateId"] != 2)
                    {
                        XmlElement newStateNode = xmlIncident.CreateElement("NewState");

                        XmlElement idNode   = xmlIncident.CreateElement("Id");
                        XmlElement nameNode = xmlIncident.CreateElement("Name");

                        idNode.InnerText   = row["StateId"].ToString();
                        nameNode.InnerText = (string)row["StateName"];

                        newStateNode.AppendChild(idNode);
                        newStateNode.AppendChild(nameNode);

                        xmlRootNode.AppendChild(newStateNode);
                    }
                }

                // OZ: Add Available Responsible (...)
                Incident.Tracking trk = Incident.GetTrackingInfo(ticket.IncidentId);

                // Add No User Element (Custom ID)
                if (trk.CanSetNoUser)
                {
                    AppendNewResponsible(xmlRootNode, NotSetResponsibleName, NotSetResponsibleId);
                }

                // Add Group Element (Custom ID)
                if (trk.CanSetGroup)
                {
                    AppendNewResponsible(xmlRootNode, GroupResponsibleName, GroupResponsibleId);
                }

                // Add Users
                if (trk.CanSetUser)
                {
                    ArrayList alUsers = Incident.GetResponsibleList(ticket.IncidentId);
                    foreach (int iUserId in alUsers)
                    {
                        string userName = Mediachase.IBN.Business.User.GetUserName(iUserId);
                        AppendNewResponsible(xmlRootNode, userName, iUserId);
                    }
                }

                // Custom User  select ...
                // TODO:

                //
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message);

                throw;
            }
            return(xmlIncident.InnerXml);
        }