public static bool UpdateRevisionDocument(RevitRevision rvtRevision, RevisionDocument revisionDoc) { bool updated = false; try { if (null != connection && null != command) { if (null != revisionDoc) { command.CommandText = @"UPDATE Revisions SET Revision_Document_Id = '" + revisionDoc.Id.ToString() + "' WHERE Revision_Id = '" + rvtRevision.Id.ToString() + "'"; if (command.ExecuteNonQuery() > 0) { updated = true; } command.CommandText = @"INSERT OR REPLACE INTO RevisionDocuments (Document_Id, Document_Title, Document_Path) " + "VALUES ('" + revisionDoc.Id.ToString() + "', '" + revisionDoc.Title + "', '" + revisionDoc.Path + "')"; if (command.ExecuteNonQuery() > 0) { updated = true; } } } } catch (Exception ex) { string message = ex.Message; } return(updated); }
private void buttonDocument_Click(object sender, RoutedEventArgs e) { try { DataGridRow row = DataGridUtils.FindVisualParent <DataGridRow>(e.OriginalSource as UIElement); if (null != row) { RevitRevision revision = row.Item as RevitRevision; if (null != revision) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Title = "Open a Revision Document"; openFileDialog.Filter = "All files (*.*)|*.*"; if ((bool)openFileDialog.ShowDialog()) { string fileName = openFileDialog.FileName; if (File.Exists(fileName)) { int index = rvtSheetData.Revisions.IndexOf(revision); RevisionDocument revisionDoc = revision.Document; revisionDoc.Path = fileName; revisionDoc.Title = System.IO.Path.GetFileName(fileName); if (revisionDoc.Id == Guid.Empty) { revisionDoc.Id = Guid.NewGuid(); this.RvtSheetData.Revisions[index].Document.Id = revisionDoc.Id; } this.RvtSheetData.Revisions[index].Document.Path = revisionDoc.Path; this.RvtSheetData.Revisions[index].Document.Title = revisionDoc.Title; bool databaseUpdated = SheetDataWriter.UpdateRevisionDocument(revision, revisionDoc); } } } } } catch (Exception ex) { string message = ex.Message; } }
private static void ReadRevisions(ref RevitSheetData sheetData) { try { ObservableCollection <LinkedRevision> linkedRevisions = new ObservableCollection <LinkedRevision>(); using (SQLiteCommand cmd = new SQLiteCommand(connection)) { cmd.CommandText = "SELECT * FROM LinkedRevisions"; using (SQLiteDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { LinkedRevision lRevision = new LinkedRevision(); lRevision.Id = reader.GetGuid(reader.GetOrdinal("LinkedRevision_Id")); lRevision.RevisionId = reader.GetGuid(reader.GetOrdinal("LinkedRevision_Revision_Id")); lRevision.Sequence = reader.GetInt32(reader.GetOrdinal("LinkedRevision_Sequence")); lRevision.Number = reader.GetString(reader.GetOrdinal("LinkedRevision_Number")); lRevision.NumberType = (NumberType)Enum.Parse(typeof(NumberType), reader.GetString(reader.GetOrdinal("LinkedRevision_NumberType"))); Guid projectId = reader.GetGuid(reader.GetOrdinal("LinkedRevision_Project_Id")); var projectFound = from project in sheetData.LinkedProjects where project.Id == projectId select project; if (projectFound.Count() > 0) { LinkedProject project = projectFound.First(); lRevision.LinkProject = project; } lRevision.LinkedElementId = reader.GetString(reader.GetOrdinal("LinkedRevision_Element_Id")); lRevision.IsSource = reader.GetBoolean(reader.GetOrdinal("LinkedRevision_IsSource")); linkedRevisions.Add(lRevision); } } } ObservableCollection <RevisionDocument> revisionDocuments = new ObservableCollection <RevisionDocument>(); using (SQLiteCommand cmd = new SQLiteCommand(connection)) { cmd.CommandText = "SELECT * FROM RevisionDocuments"; using (SQLiteDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { RevisionDocument document = new RevisionDocument(); document.Id = reader.GetGuid(reader.GetOrdinal("Document_Id")); document.Title = reader.GetString(reader.GetOrdinal("Document_Title")); document.Path = reader.GetString(reader.GetOrdinal("Document_Path")); if (reader["Document_Contents"] != System.DBNull.Value) { document.Contents = (byte[])reader["Document_Contents"]; } revisionDocuments.Add(document); } } } sheetData.Revisions.Clear(); using (SQLiteCommand cmd = new SQLiteCommand(connection)) { cmd.CommandText = "SELECT * FROM Revisions"; using (SQLiteDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { RevitRevision revision = new RevitRevision(); revision.Id = reader.GetGuid(reader.GetOrdinal("Revision_Id")); revision.Description = reader.GetString(reader.GetOrdinal("Revision_Description")); revision.IssuedBy = reader.GetString(reader.GetOrdinal("Revision_IssuedBy")); revision.IssuedTo = reader.GetString(reader.GetOrdinal("Revision_IssuedTo")); revision.Date = reader.GetString(reader.GetOrdinal("Revision_Date")); Guid documentId = reader.GetGuid(reader.GetOrdinal("Revision_Document_Id")); var documentFound = from document in revisionDocuments where document.Id == documentId select document; if (documentFound.Count() > 0) { revision.Document = documentFound.First(); } var linkedRevisionFound = from link in linkedRevisions where link.RevisionId == revision.Id select link; if (linkedRevisionFound.Count() > 0) { revision.LinkedRevisions = new ObservableCollection <LinkedRevision>(linkedRevisionFound.ToList()); } sheetData.Revisions.Add(revision); } } } } catch (Exception ex) { string message = ex.Message; } }