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); }
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(); } }
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(); } }
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); }
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(); } }