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