/// <summary> /// Read Node File From Database, Fill Out The NODEDWG /// Path must be FULL PATH of a DWG from the database /// </summary> /// <param name="connection"></param> /// <param name="path">Note PATH</param> public void ReadFromDatabase(SQLiteConnection connection, string pathDwg) { FixtureBoxSet.Clear(); InsertPointSet.Clear(); FixtureDetailSet.Clear(); TableDataSet.Clear(); string relPath = GoodiesPath.MakeRelativePath(pathDwg); file = DBDwgFile.SelectRow(connection, relPath); if (file == null || file.ID == ConstantName.invalidNum) { MessageBox.Show("NODEDWG -> ReadFromDatabase -> File Not Found"); return; } foreach (FixtureBeingUsedAreaModel fixtureBox in DBFixtureBeingUsedArea.SelectRows(connection, file.ID)) { FixtureBeingUsedArea fixtureArea = new FixtureBeingUsedArea(fixtureBox); //this line is very important. You have to make sure they have file model in each fixtureArea; //this won't complicate the program as we pass the pointer. FixtureBoxSet.Add(fixtureArea); } foreach (FixtureDetailsModel detailModel in DBFixtureDetails.SelectRows(connection, file.ID)) { FixtureDetails fd = new FixtureDetails(detailModel); FixtureDetailSet.Add(fd); } foreach (InsertPointModel insertPointModel in DBInsertPoint.SelectRows(connection, file.ID)) { InsertPoint ip = new InsertPoint(insertPointModel); InsertPointSet.Add(ip); } foreach (TableModel model in DBTable.SelectRows(connection, file.ID)) { TableData table = new TableData(model); TableDataSet.Add(table); } }
public static void WriteScheduleTableToNote(SQLiteConnection connection) { string dwgPath = Application.DocumentManager.MdiActiveDocument.Name; string notePathFull = GoodiesPath.GetNotePathFromADwgPath(dwgPath, connection); string notePath = GoodiesPath.MakeRelativePath(notePathFull); if (string.IsNullOrEmpty(notePath)) { MessageBox.Show("WriteScheduleTableToNote -> Can't find P_Note file."); return; } FileStatus fileStatus = Goodies.CanOpenToWrite(notePathFull); //Document doc = Goodies.CanOpenToWrite1(notePathFull); if (fileStatus == null || fileStatus.db == null) { return; } //if (doc == null) return; DwgFileModel fileModel = PlumbingDatabaseManager.GetNotePath(connection); if (notePath == fileModel.relativePath) { if (GoodiesPath.IsDateTheSame(notePathFull, connection)) { NODEDWG note = ReadPNote.ReadDataPNode(connection); InsertPoint ip = note.InsertPointSet.Where(insertpoint => insertpoint.model.alias == "FS").FirstOrDefault(); Table table = TableSchedule.CreateTable(note.FixtureDetailSet, ip); Document doc = Application.DocumentManager.GetDocument(fileStatus.db); using (doc.LockDocument()) { using (fileStatus.db) { TableSchedule.DeleteTableSchedule(fileStatus.db, XDataHelperName.tableSchedule); using (Transaction tr = fileStatus.db.TransactionManager.StartTransaction()) { BlockTable bt = (BlockTable)tr.GetObject(fileStatus.db.BlockTableId, OpenMode.ForRead); BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite); Goodies.InsertTable(table, tr, btr); table.Layer = ConstantName.TABLE; XDataHelper.AddTableXData(ref table, tr, fileStatus.db); tr.Commit(); tr.Dispose(); TableData tableData = new TableData(table, tr, fileStatus.db); tableData.model.file = fileModel; tableData.model.WriteToDatabase(connection); } TableSchedule.AddBlockToTable(table, fileStatus.db, note.FixtureDetailSet); fileStatus.Save(); } } fileStatus.ReturnPreviousDocument(); } } }