private void SyncListItems(ListBase list) { var itemsFromSharePoint = listItemService.GetItemsFromSharePoint(list); if (itemsFromSharePoint.Any()) { listItemDataService.AddUpdate(itemsFromSharePoint); } }
public Folder Create(string url, Guid libraryId, FolderCreateQuery folderCreateQuery) { Folder folder; try { SP.ListItem folderListItem; using (var clientContext = new SPContext(url, credentials.Get(url))) { var splist = clientContext.Web.Lists.GetById(libraryId); var parentFolder = !String.IsNullOrEmpty(folderCreateQuery.Path) ? clientContext.Web.GetFolderByServerRelativeUrl(folderCreateQuery.Path) : splist.RootFolder; clientContext.Load(parentFolder); // check that new folder name is unique var folderName = folderCreateQuery.Name; var subfolderWithTheSameName = clientContext.LoadQuery(parentFolder.Folders.Where(f => f.Name == folderName)); try { clientContext.ExecuteQuery(); } catch (Exception ex) { var message = string.Format("An exception of type {0} occurred in the InternalApi.SPFolderService.Create() method for SharePoint ServerRelativeUrl: '{1}' in SPWebUrl: '{2}'. The exception message is: {3}", ex.GetType(), folderCreateQuery.Path, url, ex.Message); SPLog.FileNotFound(ex, message); throw new SPInternalException(message, ex); } if (subfolderWithTheSameName != null && subfolderWithTheSameName.Any()) { throw new InvalidOperationException(string.Format("The folder with '{0}' name already exists at ServerRelativeUrl: '{1}' in SPWebUrl: '{2}'.", folderName, folderCreateQuery.Path, url)); } var newFolder = parentFolder.Folders.Add(folderCreateQuery.Name); clientContext.Load(newFolder, f => f.Name, f => f.ServerRelativeUrl, f => f.ItemCount); parentFolder.Update(); clientContext.ExecuteQuery(); var query = GetFolderByServerRelativeUrl(newFolder.ServerRelativeUrl); var folderListItems = clientContext.LoadQuery(splist.GetItems(query)); clientContext.ExecuteQuery(); folder = new Folder(newFolder.Name, newFolder.ServerRelativeUrl, newFolder.ItemCount, libraryId); folderListItem = folderListItems.First(); } listItemDataService.AddUpdate(new ItemBase(libraryId, Guid.Parse(folderListItem["UniqueId"].ToString()), folderListItem.Id, Convert.ToDateTime(folderListItem["Modified"])) { IsIndexable = false }); } catch (ArgumentException) { throw; } catch (InvalidOperationException) { throw; } catch (SPInternalException) { throw; } catch (Exception ex) { string message = string.Format("An exception of type {0} occurred in the InternalApi.SPFolderService.Create() method while creating a new folder with the Name: '{1}' ServerRelativeUrl: '{2}' in SPWebUrl: '{3}'. The exception message is: {4}", ex.GetType(), folderCreateQuery.Name, folderCreateQuery.Path, url, ex.Message); SPLog.RoleOperationUnavailable(ex, message); throw new SPInternalException(message, ex); } return(folder); }