Exemple #1
0
        public static string LoadDictionaries(string Locale, int ObjectType)
        {
            /************************************************************************/

            /*
             *        <Dictionaries>
             *              -- Common
             *              -- Current user
             *              <CurrentUser>
             *              </CurrentUser>
             *              <PortalConfig>
             *              </PortalConfig>
             *              <Priority>
             *                      <Item>
             *                              <Value/>
             *                              <Data/>
             *                      </Item>
             *              </Priority>
             *
             *              -- For Incident
             *              <IncidentType>
             *                      ...
             *              </IncidentType>
             *              <Severity>
             *                      ...
             *              </Severity>
             *
             *              <IncidentOrganization>
             *                      ...
             *              </IncidentOrganization>
             *
             *              <IncidentContact>
             *                      ...
             *              </IncidentContact>
             *
             *              <IncidentBox>
             *                  ...
             *              </IncidentBox>
             *
             *              -- For Event
             *              <EventType>
             *                      ...
             *              </EventType>
             *
             *              <Organizers>
             *              </Organizers>
             *
             *              <EventOrganization>
             *                      ...
             *              </EventOrganization>
             *
             *              <EventContact>
             *                      ...
             *              </EventContact>
             *
             *              -- For ToDo
             *              <CompletionType>
             *                      ...
             *              </CompletionType>
             *
             *              <ToDoOrganization>
             *                      ...
             *              </ToDoOrganization>
             *
             *              <ToDoContact>
             *                      ...
             *              </ToDoContact>
             *
             *              -- For Task
             *              <CompletionType>
             *                      ...
             *              </CompletionType>
             *
             *              -- For Project
             *              <ProjectType>
             *                      ...
             *              </ProjectType>
             *
             *              <ProjectOrganization>
             *                      ...
             *              </ProjectOrganization>
             *
             *              <ProjectContact>
             *                      ...
             *              </ProjectContact>
             *
             *              <ProjectManager>
             *                      <User>
             *                              <UserId>
             *                              <FirstName>
             *                              <LastName>
             *                      </User>
             *                      ...
             *              </ProjectManager>
             *
             *              <ExecuteveManager>
             *                      <User>
             *                              <UserId>
             *                              <FirstName>
             *                              <LastName>
             *                      </User>
             *                      ...
             *              </ExecuteveManager>
             *
             *              <ProjectStatus>
             *                      ...
             *              </ProjectStatus>
             *
             *              <ProjectCalendar>
             *                      ...
             *              </ProjectCalendar>
             *
             *              <ProjectTemplate>
             *                      ...
             *              </ProjectTemplate>
             *
             *              <ProjectPriority>
             *                      ...
             *              </ProjectPriority>
             *
             *              <ProjectPortfolio>
             *                      ...
             *              </ProjectPortfolio>
             *
             *              <ProjectPhase>
             *                      ...
             *              </ProjectPhase>
             *              -- For List
             *              <ListStatus>
             *                      ...
             *              </ListStatus>
             *              <ListType>
             *                      ...
             *              </ListType>
             *              <ListTemplate>
             *                      ...
             *              </ListTemplate>
             *        </Dictionaries>
             *
             *      /************************************************************************/
            int LanguageId = WebServicesHelper.GetLanguageIdByLocale(Locale);

            XmlDocument xmlDictionariesList = new XmlDocument();

            xmlDictionariesList.LoadXml("<Dictionaries></Dictionaries>");

            XmlNode xmlDictionariesNode = xmlDictionariesList.SelectSingleNode("Dictionaries");

            // Step 1. Build Common Dictionaryes [2/9/2004]
            // Step 1.0 Current User information
            XmlNode xmlCurrentUserNode = xmlDictionariesList.CreateElement("CurrentUser");

            InsertXMLItem(xmlCurrentUserNode, "UserId", Security.CurrentUser.UserID.ToString());
            InsertXMLItem(xmlCurrentUserNode, "FirstName", Security.CurrentUser.FirstName);
            InsertXMLItem(xmlCurrentUserNode, "LastName", Security.CurrentUser.LastName);
            InsertXMLItem(xmlCurrentUserNode, "Email", Security.CurrentUser.Email);
            InsertXMLItem(xmlCurrentUserNode, "IsAdmin", Security.IsUserInGroup(InternalSecureGroups.Administrator).ToString());
            InsertXMLItem(xmlCurrentUserNode, "IsPM", Security.IsUserInGroup(InternalSecureGroups.ProjectManager).ToString());
            InsertXMLItem(xmlCurrentUserNode, "IsPPM", Security.IsUserInGroup(InternalSecureGroups.PowerProjectManager).ToString());
            InsertXMLItem(xmlCurrentUserNode, "IsHDM", Security.IsUserInGroup(InternalSecureGroups.HelpDeskManager).ToString());
            InsertXMLItem(xmlCurrentUserNode, "TimeOffset", User.GetCurrentBias(Security.CurrentUser.TimeZoneId).ToString());

            xmlDictionariesNode.AppendChild(xmlCurrentUserNode);

            // OZ: Portal Config 2008-07-18
            XmlNode xmlPortalConfigNode = xmlDictionariesList.CreateElement("PortalConfig");

            InsertXMLItem(xmlPortalConfigNode, "WorkTimeStart", PortalConfig.WorkTimeStart);
            InsertXMLItem(xmlPortalConfigNode, "WorkTimeFinish", PortalConfig.WorkTimeFinish);
            xmlDictionariesNode.AppendChild(xmlPortalConfigNode);


            // Step 1.1. Priority [2/9/2004]
            XmlNode xmlPriorityNode = xmlDictionariesList.CreateElement("Priority");

            using (IDataReader PriorityReader = WebServicesHelper.GetListPriorities(LanguageId))
            {
                while (PriorityReader.Read())
                {
                    InsertDictionaryItem(xmlPriorityNode, PriorityReader["PriorityName"].ToString(), PriorityReader["PriorityId"].ToString());
                }
                PriorityReader.Close();
            }
            xmlDictionariesNode.AppendChild(xmlPriorityNode);

            // Step 2. Build Specific Dictionaries [2/9/2004]
            switch ((ObjectTypes)ObjectType)
            {
            case ObjectTypes.Issue:
                //  [2/9/2004]
                XmlNode xmlIncidentTypeNode = xmlDictionariesList.CreateElement("IncidentType");
                using (IDataReader incidentTypesReader = Incident.GetListIncidentTypes())
                {
                    while (incidentTypesReader.Read())
                    {
                        InsertDictionaryItem(xmlIncidentTypeNode, incidentTypesReader["TypeName"].ToString(), incidentTypesReader["TypeId"].ToString());
                    }
                    incidentTypesReader.Close();
                }
                xmlDictionariesNode.AppendChild(xmlIncidentTypeNode);
                //  [2/9/2004]
                XmlNode xmlSeverityTypeNode = xmlDictionariesList.CreateElement("Severity");
                using (IDataReader severityTypesReader = Incident.GetListIncidentSeverity())
                {
                    while (severityTypesReader.Read())
                    {
                        InsertDictionaryItem(xmlSeverityTypeNode, severityTypesReader["SeverityName"].ToString(), severityTypesReader["SeverityId"].ToString());
                    }
                    severityTypesReader.Close();
                }
                xmlDictionariesNode.AppendChild(xmlSeverityTypeNode);

                // IncidentOrganization [11/21/2006]
                InsertOrganizationDictionaryItemList(xmlDictionariesNode, "IncidentOrganization");

                // IncidentContacts [11/21/2006]
                InsertContactDictionaryItemList(xmlDictionariesNode, "IncidentContact");

                // IncidentBox [12/12/2006]
                XmlNode xmlIncidentBoxNode = xmlDictionariesList.CreateElement("IncidentBox");
                foreach (EMail.IncidentBox box in EMail.IncidentBox.List())
                {
                    InsertDictionaryItem(xmlIncidentBoxNode, box.Name, box.IncidentBoxId.ToString());
                }
                xmlDictionariesNode.AppendChild(xmlIncidentBoxNode);

                break;

            case ObjectTypes.CalendarEntry:
                //  [2/9/2004]
                XmlNode xmlEventTypeNode = xmlDictionariesList.CreateElement("EventType");
                using (IDataReader eventTypesReader = CalendarEntry.GetListEventTypes())
                {
                    while (eventTypesReader.Read())
                    {
                        InsertDictionaryItem(xmlEventTypeNode, eventTypesReader["TypeName"].ToString(), eventTypesReader["TypeId"].ToString());
                    }
                    eventTypesReader.Close();
                }
                xmlDictionariesNode.AppendChild(xmlEventTypeNode);

                // Organizers [5/6/2004]
                XmlNode xmlEventOrganizersNode = xmlDictionariesList.CreateElement("Organizers");
                using (IDataReader eventOrganizersReader = CalendarView.GetListPeopleForCalendar())
                {
                    InsertUserInformation(xmlEventOrganizersNode, (int)Security.CurrentUser.UserID);

                    while (eventOrganizersReader.Read())
                    {
                        if ((int)eventOrganizersReader["Level"] == 1)
                        {
                            InsertUserInformation(xmlEventOrganizersNode, (int)eventOrganizersReader["UserId"]);
                        }
                        //InsertDictionaryItem(xmlEventTypeNode,eventTypesReader["TypeName"].ToString(),eventTypesReader["TypeId"].ToString());
                    }
                    eventOrganizersReader.Close();
                }
                xmlDictionariesNode.AppendChild(xmlEventOrganizersNode);

                // EventOrganization [11/21/2006]
                InsertOrganizationDictionaryItemList(xmlDictionariesNode, "EventOrganization");

                // EventContacts [11/21/2006]
                InsertContactDictionaryItemList(xmlDictionariesNode, "EventContact");

                break;

            case ObjectTypes.Task:
                //  [2/9/2004]
                XmlNode xmlTaskCompTypeNode = xmlDictionariesList.CreateElement("CompletionType");
                using (IDataReader taskCompTypesReader = WebServicesHelper.GetListTaskCompletionTypes(LanguageId))
                {
                    while (taskCompTypesReader.Read())
                    {
                        InsertDictionaryItem(xmlTaskCompTypeNode, taskCompTypesReader["CompletionTypeName"].ToString(), taskCompTypesReader["CompletionTypeId"].ToString());
                    }
                    taskCompTypesReader.Close();
                }
                xmlDictionariesNode.AppendChild(xmlTaskCompTypeNode);
                break;

            case ObjectTypes.ToDo:
                //  [2/9/2004]
                InsertDictionaryItemList(xmlDictionariesNode, "CompletionType", WebServicesHelper.GetListToDoCompletionTypes(LanguageId), "CompletionTypeName", "CompletionTypeId");

                // ToDoOrganization [11/21/2006]
                InsertOrganizationDictionaryItemList(xmlDictionariesNode, "ToDoOrganization");

                // ToDoContacts [11/21/2006]
                InsertContactDictionaryItemList(xmlDictionariesNode, "ToDoContact");

                break;

            case ObjectTypes.Project:
                if (!Project.CanCreate())
                {
                    throw new AccessDeniedException();
                }
                // ProjectType [3/30/2004]
                InsertDictionaryItemList(xmlDictionariesNode, "ProjectType", Project.GetListProjectTypes(), "TypeName", "TypeId");

                // ProjectClient [3/30/2004]
                //InsertDictionaryItemList(xmlDictionariesNode,"ProjectClient", Project.GetListClients(),"ClientName", "ClientId");

                // ProjectOrganization [11/21/2006]
                InsertOrganizationDictionaryItemList(xmlDictionariesNode, "ProjectOrganization");

                // ProjectContacts [11/21/2006]
                InsertContactDictionaryItemList(xmlDictionariesNode, "ProjectContact");

                // ProjectStatus [3/30/2004]
                InsertDictionaryItemList(xmlDictionariesNode, "ProjectStatus", WebServicesHelper.GetListProjectStatus(LanguageId), "StatusName", "StatusId");

                // ProjectCalendar [3/30/2004]
                InsertDictionaryItemList(xmlDictionariesNode, "ProjectCalendar", Project.GetListCalendars(0), "CalendarName", "CalendarId");

                // ProjectCurrency [3/30/2004]
                InsertDictionaryItemList(xmlDictionariesNode, "ProjectCurrency", Project.GetListCurrency(), "CurrencySymbol", "CurrencyId");

                // ProjectManager [3/30/2004]
                XmlNode xmlManagersNode = xmlDictionariesList.CreateElement("ProjectManager");

                if (Security.IsUserInGroup(InternalSecureGroups.PowerProjectManager))
                {
                    using (IDataReader iManagers = SecureGroup.GetListAllUsersInGroup((int)InternalSecureGroups.ProjectManager))
                    {
                        while (iManagers.Read())
                        {
                            InsertUserInformation(xmlManagersNode, (int)iManagers["UserId"]);
                        }
                        iManagers.Close();
                    }
                }
                else
                {
                    InsertUserInformation(xmlManagersNode, Security.CurrentUser.UserID);
                }
                xmlDictionariesNode.AppendChild(xmlManagersNode);

                // ExecutiveManager [3/30/2004]
                XmlNode xmlExManagersNode = xmlDictionariesList.CreateElement("ExecutiveManager");
                using (IDataReader iExManagers = SecureGroup.GetListAllUsersInGroup((int)InternalSecureGroups.ProjectManager))
                {
                    while (iExManagers.Read())
                    {
                        InsertUserInformation(xmlExManagersNode, (int)iExManagers["UserId"]);
                    }
                    iExManagers.Close();
                }
                xmlDictionariesNode.AppendChild(xmlExManagersNode);

                // Templates [3/17/2005]
                InsertDictionaryItemList(xmlDictionariesNode, "ProjectTemplate", ProjectTemplate.GetListProjectTemplate(), "TemplateName", "TemplateId");

                // Priority [3/17/2005]
                InsertDictionaryItemList(xmlDictionariesNode, "ProjectPriority", Project.GetListPriorities(), "PriorityName", "PriorityId");

                // Portfolio [3/17/2005]
                InsertDictionaryItemList(xmlDictionariesNode, "ProjectPortfolio", ProjectGroup.GetProjectGroups(), "Title", "ProjectGroupId");

                // Phases [3/24/2005]
                InsertDictionaryItemList(xmlDictionariesNode, "ProjectPhase", Project.GetListProjectPhases(), "PhaseName", "PhaseId");

                // TimeTrackingTemplates [2008-10-29]
                InsertTimeTrackingTemplatesDictionaryItemList(xmlDictionariesNode, "TimeTrackingTemplates");

                break;

            case ObjectTypes.List:
                /*
                 * // Statuses [04/11/2005]
                 * InsertDictionaryItemList(xmlDictionariesNode, "ListStatus", List.GetListStatus(), "StatusName", "StatusId");
                 *
                 * // Types [04/11/2005]
                 * InsertDictionaryItemList(xmlDictionariesNode, "ListType", List.GetListType(), "TypeName", "TypeId");
                 *
                 * // Templates [04/11/2005]	// TODO: move to business and use InsertDictionaryItemList instead
                 * XmlNode xmlListTemplateRootNode = xmlDictionariesNode.OwnerDocument.CreateElement("ListTemplate");
                 * Mediachase.MetaDataPlus.Configurator.MetaClassCollection mcc = Mediachase.MetaDataPlus.Configurator.MetaClass.GetList(Mediachase.IBN.Business.List.ListTemplateRoot, true);
                 * foreach (Mediachase.MetaDataPlus.Configurator.MetaClass mc in mcc)
                 * {
                 *      XmlNode xmlDictionaryItemNode = xmlListTemplateRootNode.OwnerDocument.CreateElement("Item");
                 *      XmlNode xmlValueNode = xmlListTemplateRootNode.OwnerDocument.CreateElement("Value");
                 *      XmlNode xmlDataNode = xmlListTemplateRootNode.OwnerDocument.CreateElement("Data");
                 *
                 *      xmlValueNode.InnerText = mc.FriendlyName;
                 *      xmlDataNode.InnerText = mc.Id.ToString();
                 *
                 *      xmlDictionaryItemNode.AppendChild(xmlValueNode);
                 *      xmlDictionaryItemNode.AppendChild(xmlDataNode);
                 *
                 *      xmlListTemplateRootNode.AppendChild(xmlDictionaryItemNode);
                 * }
                 * xmlDictionariesNode.AppendChild(xmlListTemplateRootNode);
                 */

                break;
            }

            return(xmlDictionariesList.InnerXml);
        }
Exemple #2
0
        public static void Delete(int stubId)
        {
            int       userId = -1;
            ArrayList users  = new ArrayList();
            ArrayList groups = new ArrayList();

            using (IDataReader reader = DBWebStubs.GetStub(stubId))
            {
                if (!reader.Read())
                {
                    return;
                }
                if (reader["UserId"] != DBNull.Value)
                {
                    userId = DBUser.GetOriginalId((int)reader["UserId"]);
                }
            }

            if (userId == -1)
            {
                using (IDataReader reader = DBWebStubs.GetListGroupsByStub(stubId))
                {
                    while (reader.Read())
                    {
                        groups.Add((int)reader["GroupId"]);
                    }
                }

                foreach (int groupId in groups)
                {
                    using (IDataReader reader = SecureGroup.GetListAllUsersInGroup(groupId))
                    {
                        while (reader.Read())
                        {
                            if (reader["OriginalId"] != DBNull.Value)
                            {
                                int imUserId = (int)reader["OriginalId"];
                                if (!users.Contains(imUserId))
                                {
                                    users.Add(imUserId);
                                }
                            }
                        }
                    }
                }
            }

            using (DbTransaction tran = DbTransaction.Begin())
            {
                DBWebStubs.Delete(stubId);

                if (userId > 0)                 // UserStub
                {
                    User.IncreaseStubsVersion(userId);

                    try
                    {
                        IMManager.UpdateUserWebStub(userId);
                    }
                    catch (Exception)
                    {
                    }
                }
                else
                {
                    foreach (int imUserId in users)
                    {
                        User.IncreaseStubsVersion(imUserId);
                    }

                    try
                    {
                        foreach (int imUserId in users)
                        {
                            IMManager.UpdateUserWebStub(imUserId);
                        }
                    }
                    catch (Exception)
                    {
                    }
                }

                tran.Commit();
            }
        }
Exemple #3
0
        public static void UpdateGroupStub(
            int stubId
            , string abbreviation
            , string toolTip
            , string url
            , bool openInBrowser
            , int width
            , int height
            , byte[] icon
            , ArrayList groups
            , bool deleteIcon)
        {
            // Groups
            ArrayList newGroups     = new ArrayList(groups);
            ArrayList deletedGroups = new ArrayList();

            using (IDataReader reader = DBWebStubs.GetListGroupsByStub(stubId))
            {
                while (reader.Read())
                {
                    int groupId = (int)reader["GroupId"];
                    if (newGroups.Contains(groupId))
                    {
                        newGroups.Remove(groupId);
                    }
                    else
                    {
                        deletedGroups.Add(groupId);
                    }
                }
            }

            // Users
            ArrayList users = new ArrayList();

            foreach (int groupId in groups)
            {
                using (IDataReader reader = SecureGroup.GetListAllUsersInGroup(groupId))
                {
                    while (reader.Read())
                    {
                        if (reader["OriginalId"] != DBNull.Value)
                        {
                            int userId = (int)reader["OriginalId"];
                            if (!users.Contains(userId))
                            {
                                users.Add(userId);
                            }
                        }
                    }
                }
            }
            foreach (int groupId in deletedGroups)
            {
                using (IDataReader reader = SecureGroup.GetListAllUsersInGroup(groupId))
                {
                    while (reader.Read())
                    {
                        if (reader["OriginalId"] != DBNull.Value)
                        {
                            int userId = (int)reader["OriginalId"];
                            if (!users.Contains(userId))
                            {
                                users.Add(userId);
                            }
                        }
                    }
                }
            }

            using (DbTransaction tran = DbTransaction.Begin())
            {
                DBWebStubs.Update(stubId, abbreviation, toolTip, url, openInBrowser, width, height);

                if (deleteIcon)
                {
                    DBWebStubs.UpdateStubIcon(stubId, null);
                }
                else if (icon != null)
                {
                    DBWebStubs.UpdateStubIcon(stubId, icon);
                }

                // Remove Group
                foreach (int groupId in deletedGroups)
                {
                    DBWebStubs.DeleteStubGroup(stubId, groupId);
                }

                // Add Group
                foreach (int groupId in newGroups)
                {
                    DBWebStubs.AddStubGroup(stubId, groupId);
                }

                // Stubs Version
                foreach (int userId in users)
                {
                    User.IncreaseStubsVersion(userId);
                }

                try
                {
                    foreach (int userId in users)
                    {
                        IMManager.UpdateUserWebStub(userId);
                    }
                }
                catch (Exception)
                {
                }

                tran.Commit();
            }
        }
Exemple #4
0
        public static int CreateGroupStub(
            string abbreviation
            , string toolTip
            , string url
            , bool openInBrowser
            , int width
            , int height
            , byte[] icon
            , ArrayList groups)
        {
            int stubId = -1;

            ArrayList users = new ArrayList();

            foreach (int groupId in groups)
            {
                using (IDataReader reader = SecureGroup.GetListAllUsersInGroup(groupId))
                {
                    while (reader.Read())
                    {
                        if (reader["OriginalId"] != DBNull.Value)
                        {
                            int userId = (int)reader["OriginalId"];
                            if (!users.Contains(userId))
                            {
                                users.Add(userId);
                            }
                        }
                    }
                }
            }

            using (DbTransaction tran = DbTransaction.Begin())
            {
                stubId = DBWebStubs.Create(null, abbreviation, toolTip, url, openInBrowser, width, height);

                if (icon != null)
                {
                    DBWebStubs.UpdateStubIcon(stubId, icon);
                }

                foreach (int groupId in groups)
                {
                    DBWebStubs.AddStubGroup(stubId, groupId);
                }

                foreach (int userId in users)
                {
                    User.IncreaseStubsVersion(userId);
                }

                try
                {
                    foreach (int userId in users)
                    {
                        IMManager.UpdateUserWebStub(userId);
                    }
                }
                catch (Exception)
                {
                }

                tran.Commit();
            }
            return(stubId);
        }
Exemple #5
0
        public static void AddSystemEvents(SystemEventTypes eventType, int?objectId, Guid?objectUid, int relObjectId, string emailTo, string emailFrom, ArrayList excludeUsers, Dictionary <string, string> additionalValues)
        {
            // User can be unregistered
            int CurrentUserId = -1;

            if (Security.CurrentUser != null)
            {
                CurrentUserId = Security.CurrentUser.UserID;
            }

            ObjectTypes objectType, relObjectType;
            string      ObjectTitle    = string.Empty;
            string      RelObjectTitle = string.Empty;
            string      XMLData        = Alerts2.GetXmlData(eventType, objectId, objectUid, relObjectId, out objectType, out relObjectType, ref ObjectTitle, ref RelObjectTitle, additionalValues);

            // Здесь будем хранить обработанных пользователей и пользователей, которых не надо обрабатывать
            ArrayList processedUsers = new ArrayList();

            if (CurrentUserId > 0 && !Alerts2.SendToCurrentUser)
            {
                processedUsers.Add(CurrentUserId);
            }

            // Получатели info-сообщений
            ArrayList infoRecipients = new ArrayList();

            using (DbTransaction tran = DbTransaction.Begin())
            {
                int eventId = DBSystemEvents.AddSystemEvents((int)eventType, objectId, objectUid, ObjectTitle, relObjectId,
                                                             RelObjectTitle, CurrentUserId, XMLData, DbContext.Current.TransactionId);

                #region Персональные сообщения
                if (
                    eventType == SystemEventTypes.CalendarEntry_Updated_Manager_ManagerAdded ||
                    eventType == SystemEventTypes.CalendarEntry_Updated_Manager_ManagerDeleted ||
                    eventType == SystemEventTypes.CalendarEntry_Updated_ResourceList_AssignmentAdded ||
                    eventType == SystemEventTypes.CalendarEntry_Updated_ResourceList_AssignmentDeleted ||
                    eventType == SystemEventTypes.CalendarEntry_Updated_ResourceList_RequestAdded ||
                    eventType == SystemEventTypes.Document_Updated_ResourceList_AssignmentAdded ||
                    eventType == SystemEventTypes.Document_Updated_ResourceList_AssignmentDeleted ||
                    eventType == SystemEventTypes.Document_Updated_ResourceList_RequestAdded ||
                    eventType == SystemEventTypes.Issue_Created ||
                    eventType == SystemEventTypes.Issue_Updated_Forum_MessageAdded ||
                    eventType == SystemEventTypes.Issue_Updated_Manager_ManagerAdded ||
                    eventType == SystemEventTypes.Issue_Updated_Manager_ManagerDeleted ||
                    eventType == SystemEventTypes.Issue_Updated_ResourceList_AssignmentAdded ||
                    eventType == SystemEventTypes.Issue_Updated_ResourceList_AssignmentDeleted ||
                    eventType == SystemEventTypes.Issue_Updated_ResourceList_RequestAdded ||
                    eventType == SystemEventTypes.Issue_Updated_Responsible_Requested ||
                    eventType == SystemEventTypes.Issue_Updated_Responsible_Assigned ||
                    eventType == SystemEventTypes.Issue_Updated_Responsible_Resigned ||
                    eventType == SystemEventTypes.Issue_Updated_Controller_Assigned ||
                    eventType == SystemEventTypes.Issue_Updated_Controller_Resigned ||
                    eventType == SystemEventTypes.Project_Updated_ExecutiveManager_ExecutiveManagerAdded ||
                    eventType == SystemEventTypes.Project_Updated_ExecutiveManager_ExecutiveManagerDeleted ||
                    eventType == SystemEventTypes.Project_Updated_Manager_ManagerAdded ||
                    eventType == SystemEventTypes.Project_Updated_Manager_ManagerDeleted ||
                    eventType == SystemEventTypes.Project_Updated_SponsorList_SponsorAdded ||
                    eventType == SystemEventTypes.Project_Updated_SponsorList_SponsorDeleted ||
                    eventType == SystemEventTypes.Project_Updated_StakeholderList_StakeholderAdded ||
                    eventType == SystemEventTypes.Project_Updated_StakeholderList_StakeholderDeleted ||
                    eventType == SystemEventTypes.Project_Updated_TeamMemberList_TeamMemberAdded ||
                    eventType == SystemEventTypes.Project_Updated_TeamMemberList_TeamMemberDeleted ||
                    eventType == SystemEventTypes.Todo_Updated_Manager_ManagerAdded ||
                    eventType == SystemEventTypes.Todo_Updated_Manager_ManagerDeleted ||
                    eventType == SystemEventTypes.Todo_Updated_ResourceList_AssignmentAdded ||
                    eventType == SystemEventTypes.Todo_Updated_ResourceList_AssignmentDeleted ||
                    eventType == SystemEventTypes.Todo_Updated_ResourceList_RequestAdded ||
                    eventType == SystemEventTypes.Task_Updated_ResourceList_AssignmentAdded ||
                    eventType == SystemEventTypes.Task_Updated_ResourceList_AssignmentDeleted ||
                    eventType == SystemEventTypes.Task_Updated_ResourceList_RequestAdded ||
                    eventType == SystemEventTypes.User_Activated ||
                    eventType == SystemEventTypes.User_Created ||
                    eventType == SystemEventTypes.User_Created_External ||
                    eventType == SystemEventTypes.User_Created_Partner ||
                    eventType == SystemEventTypes.User_Deleted ||
                    eventType == SystemEventTypes.User_Deactivated ||
                    eventType == SystemEventTypes.Assignment_Updated_Participant_Assigned ||
                    eventType == SystemEventTypes.Assignment_Updated_Participant_Resigned
                    )
                {
                    ArrayList users = new ArrayList();

                    if (objectType == ObjectTypes.User)
                    {
                        users.Add(objectId);
                    }

                    if (relObjectType == ObjectTypes.User)
                    {
                        if (User.IsGroup(relObjectId))
                        {
                            // this method doesn't return inactive users
                            using (IDataReader reader = SecureGroup.GetListAllUsersInGroup(relObjectId, false))
                            {
                                while (reader.Read())
                                {
                                    users.Add((int)reader["UserId"]);
                                }
                            }
                        }
                        else
                        {
                            if (User.GetUserActivity(relObjectId) == User.UserActivity.Active)
                            {
                                users.Add(relObjectId);
                            }
                        }
                    }

                    foreach (int userId in users)
                    {
                        if (!processedUsers.Contains(userId))
                        {
                            AddSystemEventRecipient(eventId, userId, MessageTypes.Resource);
                            processedUsers.Add(userId);
                        }
                    }
                    if (emailTo != null)
                    {
                        AddSystemEventRecipient(eventId, MessageTypes.Resource, emailTo, emailFrom);
                    }
                }
                #endregion

                CollectAllObjectSubscribers(eventType, objectType, objectId, objectUid, processedUsers, infoRecipients);

                foreach (int userId in infoRecipients)
                {
                    if ((excludeUsers == null || !excludeUsers.Contains(userId)) && CheckRights(eventType, objectType, relObjectType, objectId, relObjectId, objectUid, userId))
                    {
                        AddSystemEventRecipient(eventId, userId, MessageTypes.Info);
                    }
                }

                _hasNewEvent = true;

                tran.Commit();
            }
        }