private List <Dictionary <string, string> > HandleUpload() { using (ProgressDialog pd = new ProgressDialog("Upload", 5)) { pd.Show(); // collect rooms from the model, return false if there are none pd.StartTask("Collecting placed rooms"); IList <SpatialElement> placedRooms = RevitMethods.GetPlacedRooms(_doc); if (placedRooms == null) { pd.Close(); return(null); } pd.Increment(); // check if the custom room parameters exist pd.StartTask("Checking room parameters"); bool roomParametersCheck = RevitMethods.CheckParametersExist( placedRooms, SharepointConstants.Dictionaries.newRevitRoomParameters); if (roomParametersCheck == false) { pd.Close(); return(null); } pd.Increment(); // collect the room info for writing to sharepoint pd.StartTask("Parsing room data"); List <Dictionary <string, string> > placedRoomsData = RevitMethods.ParseRoomData( placedRooms, SharepointConstants.Dictionaries.newRevitRoomParameters); if (placedRoomsData == null) { pd.Close(); return(null); } pd.Increment(); // retrieve write list from sharepoint pd.StartTask("Connecting to Sharepoint"); SP.List SPWriteList = SharepointMethods.GetListFromWeb( _context, SharepointConstants.Links.spWriteList); if (SPWriteList == null) { pd.Close(); return(null); } pd.Increment(); // write the room data to the write list pd.StartTask("Writing data to Sharepoint"); bool roomsUploaded = SharepointMethods.AddItemsToList( _context, SPWriteList, placedRoomsData); if (roomsUploaded == false) { pd.Close(); return(null); } pd.Increment(); // if we get to the end then return the written data return(placedRoomsData); } }
private List <Room> HandleSync() { using (ProgressDialog pd = new ProgressDialog("Sync", 6)) { pd.Show(); List <Room> syncedRooms = new List <Room>(); // get current revit rooms pd.StartTask("Collecting Revit rooms"); IList <Element> collectedRooms = RevitMethods.GetElements( _doc, BuiltInCategory.OST_Rooms); if (collectedRooms == null) { pd.Close(); return(null); } pd.Increment(); // get items from SP list pd.StartTask("Fetching Sharepoint data"); SP.ListItemCollection allSpRooms = GetItemsFromSharepointList( SharepointConstants.Links.spReadList, SharepointConstants.Views.allItems); if (allSpRooms == null) { pd.Close(); return(null); } pd.Increment(); // filter by current project pd.StartTask("Retrieving rooms from current project"); IEnumerable <SP.ListItem> spRooms = SharepointMethods.GetItems( allSpRooms, SharepointConstants.ColumnHeaders.project_id, _project[SharepointConstants.ColumnHeaders.ID].ToString()); if (spRooms == null) { pd.Close(); return(null); } pd.Increment(); // get the latest phase pd.StartTask("Getting latest Revit phase"); Phase latestPhase = RevitMethods.GetLatestPhase(_doc); if (latestPhase == null) { pd.Close(); return(null); } pd.Increment(); // check if room parameters exist pd.StartTask("Checking Revit parameters"); bool roomParamsExist = RevitMethods.CheckParametersExist( collectedRooms, SharepointConstants.Dictionaries.newRevitRoomParameters); pd.Increment(); // if they don't exist if (!roomParamsExist) { // make new parameters Dictionary <string, ExternalDefinition> roomParametersCreated = RevitMethods.CreateSharedParameters( _doc, _app, SharepointConstants.Dictionaries.newRevitRoomParameters, BuiltInCategory.OST_Rooms, BuiltInParameterGroup.PG_REFERENCE); if (roomParametersCreated == null) { pd.Close(); return(null); } // generate the rooms pd.StartTask("Creating revit rooms"); syncedRooms = RevitMethods.CreateRooms( _doc, latestPhase, spRooms, roomParametersCreated); pd.Increment(); } else { // sync the existing rooms pd.StartTask("Syncing revit rooms"); syncedRooms = RevitMethods.UpdateRooms( _doc, latestPhase, collectedRooms, spRooms, SharepointConstants.Dictionaries.newRevitRoomParameters); pd.Increment(); } return(syncedRooms); } }