private bool UpdateRevision(Revision revision, List <ElementId> paramIds) { bool updated = false; try { LinkedRevision linkedRevision = dataManager.GetLinkedRevision(revision.UniqueId, linkedProjectId); if (null != linkedRevision) { foreach (ElementId paramId in paramIds) { string paramName = revisionParameters[paramId]; Parameter param = revision.LookupParameter(paramName); if (null != param) { string paramValue = ""; switch (paramId.IntegerValue) { case (int)BuiltInParameter.PROJECT_REVISION_SEQUENCE_NUM: paramValue = param.AsInteger().ToString(); updated = SheetDataWriter.ChangeLinkedRevision(linkedRevision.Id, "LinkedRevision_Sequence", paramValue, CommandType.UPDATE); break; case (int)BuiltInParameter.PROJECT_REVISION_REVISION_NUM: paramValue = param.AsString(); updated = SheetDataWriter.ChangeLinkedRevision(linkedRevision.Id, "LinkedRevision_Number", paramValue, CommandType.UPDATE); break; case (int)BuiltInParameter.PROJECT_REVISION_REVISION_DESCRIPTION: paramValue = param.AsString(); updated = SheetDataWriter.ChangeRevisionItem(linkedRevision.RevisionId.ToString(), "Revision_Description", paramValue); break; case (int)BuiltInParameter.PROJECT_REVISION_REVISION_DATE: paramValue = param.AsString(); updated = SheetDataWriter.ChangeRevisionItem(linkedRevision.RevisionId.ToString(), "Revision_Date", paramValue); break; case (int)BuiltInParameter.PROJECT_REVISION_REVISION_ISSUED_TO: paramValue = param.AsString(); updated = SheetDataWriter.ChangeRevisionItem(linkedRevision.RevisionId.ToString(), "Revision_IssuedTo", paramValue); break; case (int)BuiltInParameter.PROJECT_REVISION_REVISION_ISSUED_BY: paramValue = param.AsString(); updated = SheetDataWriter.ChangeRevisionItem(linkedRevision.RevisionId.ToString(), "Revision_IssuedBy", paramValue); break; } } } } } catch (Exception ex) { string message = ex.Message; } return(updated); }
public static bool ChangeLinkedRevision(LinkedRevision item, CommandType cmdType) { bool result = false; try { if (null != connection && null != command) { switch (cmdType) { case CommandType.INSERT: command.CommandText = @"INSERT INTO LinkedRevisions (LinkedRevision_Id, LinkedRevision_Sequence, LinkedRevision_Number, LinkedRevision_NumberType, LinkedRevision_Revision_Id, LinkedRevision_Project_Id, LinkedRevision_Element_Id, LinkedRevision_IsSource)" + "VALUES ('" + item.Id.ToString() + "', " + item.Sequence + ", '" + item.Number + "', '" + item.NumberType.ToString() + "', '" + item.RevisionId.ToString() + "', '" + item.LinkProject.Id.ToString() + "', '" + item.LinkedElementId + "', @isSource)"; command.Parameters["@isSource"].Value = item.IsSource; if (command.ExecuteNonQuery() > 0) { result = true; } break; case CommandType.UPDATE: command.CommandText = @"UPDATE LinkedRevisions SET LinkedRevision_Sequence = " + item.Sequence + ", LinkedRevision_Number = '" + item.Number + "', " + "LinkedRevision_NumberType ='" + item.NumberType.ToString() + "', LinkedRevision_Revision_Id = '" + item.RevisionId.ToString() + "', LinkedRevision_Project_Id = '" + item.LinkProject.Id.ToString() + "', " + "LinkedRevision_Element_Id = '" + item.LinkedElementId + "', LinkedRevision_IsSource = @isSource" + " WHERE LinkedRevision_Id = '" + item.Id.ToString() + "'"; command.Parameters["@isSource"].Value = item.IsSource; if (command.ExecuteNonQuery() > 0) { result = true; } break; case CommandType.DELETE: command.CommandText = "DELETE FROM LinkedRevisions WHERE LinkedRevision_Id = '" + item.Id.ToString() + "'"; if (command.ExecuteNonQuery() > 0) { result = true; } break; } } } catch (Exception ex) { string message = ex.Message; } return(result); }
private bool DeleteRevision(ElementId revisionId) { bool deleted = false; try { if (idMaps.ContainsKey(revisionId)) { string uniqueId = idMaps[revisionId]; LinkedRevision linkedRevision = dataManager.GetLinkedRevision(uniqueId, linkedProjectId); if (null != linkedRevision) { if (linkedRevision.IsSource) { MessageBoxResult msgResult = MessageBox.Show("Would you like to delete the revision item in the linked database?", "Delete Revision Source Item", MessageBoxButton.YesNo, MessageBoxImage.Question); if (msgResult == MessageBoxResult.Yes) { RevitRevision rvtRevision = new RevitRevision(); rvtRevision.Id = linkedRevision.RevisionId; bool revisionDeleted = SheetDataWriter.ChangeRevisionItem(rvtRevision, CommandType.DELETE); bool rosDeleted = SheetDataWriter.DeleteRevisionOnSheet("RevisionsOnSheet_Revision_Id", rvtRevision.Id.ToString()); bool linkDeleted = SheetDataWriter.ChangeLinkedRevision(linkedRevision, CommandType.DELETE); deleted = (revisionDeleted && rosDeleted && linkDeleted) ? true : false; } else { deleted = SheetDataWriter.ChangeLinkedRevision(linkedRevision, CommandType.DELETE); } } else { deleted = SheetDataWriter.ChangeLinkedRevision(linkedRevision, CommandType.DELETE); } } } } catch (Exception ex) { string message = ex.Message; } return(deleted); }
private static void CheckRevisionLinks(Document doc, Guid projectId, ref RevitSheetData sheetData) { try { for (int i = 0; i < sheetData.Revisions.Count; i++) { RevitRevision rvtRevision = sheetData.Revisions[i]; var linkedRevisionFound = from lrevision in sheetData.Revisions[i].LinkedRevisions where lrevision.LinkProject.Id == projectId select lrevision; if (linkedRevisionFound.Count() > 0) { LinkedRevision linkedRevision = linkedRevisionFound.First(); Revision revision = doc.GetElement(linkedRevision.LinkedElementId) as Revision; if (null != revision) { sheetData.Revisions[i].LinkStatus.IsLinked = true; sheetData.Revisions[i].LinkStatus.CurrentLinkedId = linkedRevision.LinkedElementId; sheetData.Revisions[i].LinkStatus.LinkedElementId = revision.Id.IntegerValue; sheetData.Revisions[i].LinkStatus.ToolTip = "Linked Revision ElementId: " + revision.Id.IntegerValue; if (revision.Description != rvtRevision.Description || revision.IssuedBy != rvtRevision.IssuedBy || revision.IssuedTo != rvtRevision.IssuedTo || revision.RevisionDate != rvtRevision.Date) { sheetData.Revisions[i].LinkStatus.Modified = true; sheetData.Revisions[i].LinkStatus.ToolTip = "Revision parameter values are different from the linked element."; } } else { //item deleted sheetData.Revisions[i].LinkStatus.Modified = true; sheetData.Revisions[i].LinkStatus.ToolTip = "Linked Revision Not Found."; sheetData.Revisions[i].LinkedRevisions.Remove(linkedRevision); //bool revisionDBUpdated = SheetDataWriter.ChangeLinkedRevision(linkedRevision, CommandType.DELETE); } } } } catch (Exception ex) { MessageBox.Show("Failed to check link status of revisions.\n" + ex.Message, "Sheet Manager Updater - Check Revision Links", MessageBoxButton.OK, MessageBoxImage.Warning); } }
public static bool InsertNewRevision(Revision revision, Guid projectId, ref RevitSheetData sheetData) { bool inserted = false; try { RevitRevision rvtRevision = new RevitRevision(Guid.NewGuid(), revision.Description, revision.IssuedBy, revision.IssuedTo, revision.RevisionDate); NumberType revNumType = (NumberType)Enum.Parse(typeof(NumberType), revision.NumberType.ToString()); LinkedRevision linkedRevision = new LinkedRevision(Guid.NewGuid(), rvtRevision.Id, revision.SequenceNumber, revision.RevisionNumber, revNumType, projectId, revision.UniqueId, true); rvtRevision.LinkedRevisions.Add(linkedRevision); RevitLinkStatus linkStatus = new RevitLinkStatus(); linkStatus.IsLinked = true; linkStatus.CurrentLinkedId = revision.UniqueId; linkStatus.LinkedElementId = revision.Id.IntegerValue; linkStatus.ToolTip = "Linked Revision ElementId: " + revision.Id.IntegerValue; rvtRevision.LinkStatus = linkStatus; sheetData.Revisions.Add(rvtRevision); bool revisionDBUpdated = SheetDataWriter.ChangeRevisionItem(rvtRevision, CommandType.INSERT); bool linkedRevisionDBUpdated = SheetDataWriter.ChangeLinkedRevision(linkedRevision, CommandType.INSERT); List <RevisionOnSheet> rosList = new List <RevisionOnSheet>(); for (int sheetIndex = 0; sheetIndex < sheetData.Sheets.Count; sheetIndex++) { RevisionOnSheet ros = new RevisionOnSheet(Guid.NewGuid(), sheetData.Sheets[sheetIndex].Id, rvtRevision, false); sheetData.Sheets[sheetIndex].SheetRevisions.Add(rvtRevision.Id, ros); rosList.Add(ros); } bool rosDBUpdated = SheetDataWriter.InsertMultipleRevisionOnSheet(rosList); inserted = (revisionDBUpdated && linkedRevisionDBUpdated && rosDBUpdated) ? true : false; } catch (Exception ex) { MessageBox.Show("Failed to insert a new revision element.\n" + ex.Message, "Insert New Revision", MessageBoxButton.OK, MessageBoxImage.Warning); } return(inserted); }
public LinkedRevision GetLinkedRevision(string uniqueId, Guid projectGuid) { LinkedRevision lRevision = null; try { if (null != connection && null != command) { using (SQLiteCommand cmd = new SQLiteCommand(connection)) { cmd.CommandText = "SELECT * FROM LinkedRevisions WHERE LinkedRevision_Element_Id= '" + uniqueId + "' AND LinkedRevision_Project_Id = '" + projectGuid.ToString() + "'"; using (SQLiteDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { 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")); lRevision.LinkProject = new LinkedProject(projectId); lRevision.LinkedElementId = reader.GetString(reader.GetOrdinal("LinkedRevision_Element_Id")); lRevision.IsSource = reader.GetBoolean(reader.GetOrdinal("LinkedRevision_IsSource")); break; } } } } } catch (Exception ex) { string message = ex.Message; } return(lRevision); }
private bool InsertRevisionToDB(Revision revision, List <Guid> sheetIds) { bool inserted = false; try { RevitRevision rvtRevision = new RevitRevision(Guid.NewGuid(), revision.Description, revision.IssuedBy, revision.IssuedTo, revision.RevisionDate); NumberType revNumType = (NumberType)Enum.Parse(typeof(NumberType), revision.NumberType.ToString()); LinkedRevision linkedRevision = new LinkedRevision(Guid.NewGuid(), rvtRevision.Id, revision.SequenceNumber, revision.RevisionNumber, revNumType, linkedProjectId, revision.UniqueId, true); rvtRevision.LinkStatus.IsLinked = true; rvtRevision.LinkStatus.IsSelected = false; rvtRevision.LinkStatus.Modified = false; rvtRevision.LinkStatus.CurrentLinkedId = revision.UniqueId; rvtRevision.LinkStatus.LinkedElementId = revision.Id.IntegerValue; rvtRevision.LinkStatus.ToolTip = "Linked Revision ElementId: " + revision.Id.IntegerValue; rvtRevision.LinkedRevisions.Add(linkedRevision); rvtSheetData.Revisions.Add(rvtRevision); bool revisionDBUpdated = SheetDataWriter.ChangeRevisionItem(rvtRevision, CommandType.INSERT); bool linkedRevisionDBUpdated = SheetDataWriter.ChangeLinkedRevision(linkedRevision, CommandType.INSERT); List <RevisionOnSheet> rosList = new List <RevisionOnSheet>(); foreach (Guid sheetId in sheetIds) { RevisionOnSheet ros = new RevisionOnSheet(Guid.NewGuid(), sheetId, rvtRevision, false); rosList.Add(ros); } bool rosDBUpdated = SheetDataWriter.InsertMultipleRevisionOnSheet(rosList); inserted = (revisionDBUpdated && linkedRevisionDBUpdated && rosDBUpdated) ? true : false; } catch (Exception ex) { string message = ex.Message; } return(inserted); }
private bool InsertRevision(Revision revision) { bool revisionInserted = false; try { RevitRevision rvtRevision = new RevitRevision(Guid.NewGuid(), revision.Description, revision.IssuedBy, revision.IssuedTo, revision.RevisionDate); NumberType revNumType = (NumberType)Enum.Parse(typeof(NumberType), revision.NumberType.ToString()); LinkedRevision linkedRevision = new LinkedRevision(Guid.NewGuid(), rvtRevision.Id, revision.SequenceNumber, revision.RevisionNumber, revNumType, linkedProjectId, revision.UniqueId, true); rvtRevision.LinkedRevisions.Add(linkedRevision); bool revisionDBUpdated = SheetDataWriter.ChangeRevisionItem(rvtRevision, CommandType.INSERT); bool linkedRevisionDBUpdated = SheetDataWriter.ChangeLinkedRevision(linkedRevision, CommandType.INSERT); List <RevisionOnSheet> rosList = new List <RevisionOnSheet>(); List <Guid> sheetIds = dataManager.GetSheetIds(); foreach (Guid sheetId in sheetIds) { RevisionOnSheet ros = new RevisionOnSheet(Guid.NewGuid(), sheetId, rvtRevision, false); rosList.Add(ros); } bool rosDBUpdated = SheetDataWriter.InsertMultipleRevisionOnSheet(rosList); revisionInserted = (revisionDBUpdated && linkedRevisionDBUpdated && rosDBUpdated) ? true : false; if (!idMaps.ContainsKey(revision.Id)) { idMaps.Add(revision.Id, revision.UniqueId); } } catch (Exception ex) { string message = ex.Message; } return(revisionInserted); }
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; } }