public Result Execute(ExternalCommandData commandData, ref string message, Autodesk.Revit.DB.ElementSet elements) { try { m_app = commandData.Application; m_doc = m_app.ActiveUIDocument.Document; UserWindow userWindow = new UserWindow(); if ((bool)userWindow.ShowDialog()) { string projectFileId = DataStorageUtil.GetProjectFileId(m_doc).ToString(); if (AppCommand.Instance.Configurations.ContainsKey(projectFileId)) { DTMConfigurations config = AppCommand.Instance.Configurations[projectFileId]; AdminViewModel viewModel = new AdminViewModel(config); AdminWindow adminWindow = new AdminWindow(); adminWindow.DataContext = viewModel; if ((bool)adminWindow.ShowDialog()) { config = adminWindow.ViewModel.Configuration; AppCommand.Instance.Configurations.Remove(projectFileId); AppCommand.Instance.Configurations.Add(projectFileId, config); AppCommand.Instance.ApplyConfiguration(m_doc, config); } } } } catch (Exception ex) { string exMessage = ex.Message; MessageBox.Show("Failed to execute Admin Command.\n" + ex.Message, "Admin Command", MessageBoxButton.OK, MessageBoxImage.Warning); } return(Result.Succeeded); }
public AdminViewModel(DTMConfigurations config) { configuration = config; updaterSwitchCommand = new RelayCommand(param => this.UpdaterSwitchExecuted(param)); applyCommand = new RelayCommand(param => this.ApplyExecuted(param)); acceptCommand = new RelayCommand(param => this.AcceptExecuted(param)); ignoreCommand = new RelayCommand(param => this.IgnoreExecuted(param)); }
public static bool GetConfiguration(string docGuid, out DTMConfigurations config) { bool found = false; config = new DTMConfigurations(); try { List <ProjectFile> projectFiles = GetProjectFiles(docGuid.ToString()); if (projectFiles.Count > 0) { ProjectFile projectFile = projectFiles.First(); config.ProjectFileInfo = projectFile; string projectId = config.ProjectFileInfo.Project_Id; List <Project> projects = GetProjects(projectId); if (projects.Count > 0) { config.ProjectFileInfo.ProjectInfo = projects.First(); } List <ProjectUpdater> updaters = GetProjectUpdater("projectfileid/" + projectFile._id); if (updaters.Count > 0) { for (int i = 0; i < updaters.Count; i++) { ProjectUpdater updater = updaters[i]; List <CategoryTrigger> triggers = GetCategoryTriggers("updaterid/" + updater._id); for (int j = 0; j < triggers.Count; j++) { CategoryTrigger trigger = triggers[j]; List <RequestQueue> queues = GetRequestQueues("triggerid/" + trigger._id); for (int k = 0; k < queues.Count; k++) { RequestQueue queue = queues[k]; trigger.Requests.Add(queue); } updater.CategoryTriggers.Add(trigger); } config.ProjectUpdaters.Add(updater); } } } found = true; } catch (Exception ex) { string message = ex.Message; MessageBox.Show("Failed to get configuration. \n" + ex.Message, "Server Util: Get Configuration", MessageBoxButton.OK, MessageBoxImage.Warning); } return(found); }
private void RegisterElementUpdaterOnOpen(object source, DocumentOpenedEventArgs args) { try { if (null != args.Document) { Document doc = args.Document; DTMConfigurations config = GetConfiguration(doc); if (!configurations.ContainsKey(config.ProjectFileInfo._id)) { configurations.Add(config.ProjectFileInfo._id, config); } ApplyConfiguration(doc, config); } } catch (Exception ex) { string message = ex.Message; MessageBox.Show("Failed to register updaters on open.\n" + ex.Message, "Register Updater on Open", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
public void ApplyConfiguration(Document doc, DTMConfigurations config) { try { foreach (ProjectUpdater updater in config.ProjectUpdaters) { if (updater.UpdaterId == DTMUpdater.updaterGuid.ToString()) { if (updater.IsUpdaterOn) { if (!UpdaterRegistry.IsUpdaterRegistered(dtmUpdater.GetUpdaterId(), doc)) { dtmUpdater.Register(doc, updater); doc.DocumentClosing += UnregisterDTMUpdaterOnClose; } else { dtmUpdater.RefreshTriggers(doc, updater); } } else { if (UpdaterRegistry.IsUpdaterRegistered(dtmUpdater.GetUpdaterId(), doc)) { dtmUpdater.Unregister(doc); } } } } } catch (Exception ex) { string message = ex.Message; MessageBox.Show("Failed to apply configuration.\n" + ex.Message, "Apply Configuration", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
private DTMConfigurations GetConfiguration(Document doc) { DTMConfigurations config = new DTMConfigurations(); try { string projectFileId = DataStorageUtil.GetProjectFileId(doc).ToString(); string centralPath = FileInfoUtil.GetCentralFilePath(doc); if (projectFileId == Guid.Empty.ToString()) { //first time use List <ProjectFile> items = ServerUtil.GetProjectFiles("centralpath/" + centralPath); if (items.Count > 0) { //import file info by central path ProjectFile projectFile = items.First(); bool found = ServerUtil.GetConfiguration(projectFile._id, out config); projectFileId = projectFile._id; } else { //create file info projectFileId = Guid.NewGuid().ToString(); Project projectInfo = FileInfoUtil.GetProjectInfo(centralPath); List <Project> projects = ServerUtil.GetProjects(""); var projectFound = from p in projects where p.ProjectNumber == projectInfo.ProjectNumber && p.ProjectName == projectInfo.ProjectName select p; if (projectFound.Count() > 0) { projectInfo = projectFound.First(); } else { projectInfo._id = Guid.NewGuid().ToString(); } ProjectFile pFile = new ProjectFile(projectFileId, centralPath, projectInfo._id, projectInfo); config.ProjectFileInfo = pFile; ProjectUpdater pUpdater = new ProjectUpdater(Guid.NewGuid().ToString(), DTMUpdater.updaterGuid.ToString(), dtmUpdater.GetUpdaterName(), addInGuid.ToString(), addInName, false, pFile._id); foreach (string categoryName in updaterCategories) { CategoryTrigger catTrigger = new CategoryTrigger(Guid.NewGuid().ToString(), categoryName, pUpdater._id, false, Environment.UserName, DateTime.Now); pUpdater.CategoryTriggers.Add(catTrigger); } config.ProjectUpdaters.Add(pUpdater); string content = ""; string errMsg = ""; HttpStatusCode status = ServerUtil.PostConfiguration(out content, out errMsg, config); } bool stored = DataStorageUtil.StoreProjectFileId(doc, new Guid(projectFileId)); } else { bool found = ServerUtil.GetConfiguration(projectFileId, out config); } } catch (Exception ex) { string message = ex.Message; MessageBox.Show("Failed to get configuration.\n" + ex.Message, "Get Configuration from Database", MessageBoxButtons.OK, MessageBoxIcon.Warning); } return(config); }
public static HttpStatusCode UpdateConfiguration(out string content, out string errorMessage, DTMConfigurations config) { HttpStatusCode status = HttpStatusCode.Unused; content = ""; errorMessage = ""; try { foreach (ProjectUpdater updater in config.ProjectUpdaters) { status = UpdateProjectUpdater(out content, out errorMessage, updater, updater._id.ToString()); foreach (CategoryTrigger trigger in updater.CategoryTriggers) { status = UpdateCategoryTrigger(out content, out errorMessage, trigger, trigger._id.ToString()); } } } catch (Exception ex) { string message = ex.Message; MessageBox.Show("Failed to update configuration. \n" + ex.Message, "Server Util: Update Configuration", MessageBoxButton.OK, MessageBoxImage.Warning); } return(status); }
public static HttpStatusCode PostConfiguration(out string content, out string errorMessage, DTMConfigurations config) { HttpStatusCode status = HttpStatusCode.Unused; content = ""; errorMessage = ""; try { status = PostProjectFile(out content, out errorMessage, config.ProjectFileInfo); status = UpdateProject(out content, out errorMessage, config.ProjectFileInfo.ProjectInfo, config.ProjectFileInfo.ProjectInfo._id); foreach (ProjectUpdater updater in config.ProjectUpdaters) { status = PostProjectUpdater(out content, out errorMessage, updater); foreach (CategoryTrigger trigger in updater.CategoryTriggers) { status = PostCategoryTrigger(out content, out errorMessage, trigger); foreach (RequestQueue queue in trigger.Requests) { status = PostRequestQueues(out content, out errorMessage, queue); } } } } catch (Exception ex) { string message = ex.Message; MessageBox.Show("Failed to post configuration. \n" + ex.Message, "Server Util: Post Configuration", MessageBoxButton.OK, MessageBoxImage.Warning); } return(status); }