private void AddGetDocumentSetsMethod(ServiceObject so) { Method mGetDocumentSets = Helper.CreateMethod(Constants.Methods.GetDocumentSets, "Retrieve document Sets", MethodType.List); if (base.IsDynamicSiteURL) { Helper.AddSiteURLParameter(mGetDocumentSets); } if (base.IsListTitleParametrized) { Helper.AddStringParameter(mGetDocumentSets, Constants.InternalProperties.ListTitle); } foreach (Property prop in so.Properties) { if (prop.IsDocSetName()) { mGetDocumentSets.InputProperties.Add(prop); mGetDocumentSets.ReturnProperties.Add(prop); } if (!prop.IsInternal() && !prop.IsFile()) { mGetDocumentSets.InputProperties.Add(prop); mGetDocumentSets.ReturnProperties.Add(prop); } if (so.IsSPFolderEnabled() && (prop.IsFolderName() || prop.IsRecursivelyName())) { mGetDocumentSets.InputProperties.Add(prop); } if (prop.IsLinkToItem()) { mGetDocumentSets.ReturnProperties.Add(prop); } } so.Methods.Add(mGetDocumentSets); }
private void AddCreateItemMethod(ServiceObject so) { Method mCreateItem = Helper.CreateMethod(Constants.Methods.CreateItem, "Create a list item", MethodType.Create); if (base.IsDynamicSiteURL) { Helper.AddSiteURLParameter(mCreateItem); } foreach (Property prop in so.Properties) { if (string.Compare(prop.Name, Constants.SOProperties.ID, true) == 0 && !prop.IsInternal()) { mCreateItem.ReturnProperties.Add(prop); } if (!prop.IsReadOnly() && !prop.IsInternal()) { mCreateItem.InputProperties.Add(prop); if (prop.IsRequired()) { mCreateItem.Validation.RequiredProperties.Add(prop); } } if (so.IsSPFolderEnabled() == true && prop.IsFolderName()) { mCreateItem.InputProperties.Add(prop); } if (prop.IsLinkToItem()) { mCreateItem.ReturnProperties.Add(prop); } } so.Methods.Add(mCreateItem); }
private void AddCreateDocumentSetByNameMethod(ServiceObject so) { Method mCreateDocSet = Helper.CreateMethod(Constants.Methods.CreateDocumentSet, "Create a Document set by name", MethodType.Create); if (base.IsDynamicSiteURL) { Helper.AddSiteURLParameter(mCreateDocSet); } if (base.IsListTitleParametrized) { Helper.AddStringParameter(mCreateDocSet, Constants.InternalProperties.ListTitle); } foreach (Property prop in so.Properties) { if (!prop.IsInternal() && !prop.IsFile() && !prop.IsReadOnly()) { mCreateDocSet.InputProperties.Add(prop); } if (prop.IsDocSetName()) { mCreateDocSet.InputProperties.Add(prop); mCreateDocSet.Validation.RequiredProperties.Add(prop); } if (so.IsSPFolderEnabled() && (prop.IsFolderName())) { mCreateDocSet.InputProperties.Add(prop); } if (prop.IsLinkToItem()) { mCreateDocSet.ReturnProperties.Add(prop); } } so.Methods.Add(mCreateDocSet); }
private void ExecuteCreateFolder() { ServiceObject serviceObject = ServiceBroker.Service.ServiceObjects[0]; serviceObject.Properties.InitResultTable(); DataTable results = base.ServiceBroker.ServicePackage.ResultTable; string folderName = base.GetStringProperty(Constants.SOProperties.FolderName, true); string listName = serviceObject.GetListTitle(); string siteURL = GetSiteURL(); DataRow dataRow = results.NewRow(); using (ClientContext context = InitializeContext(siteURL)) { Web spWeb = context.Web; List list = spWeb.Lists.GetByTitle(listName); context.Load(list); context.Load(list, l => l.DefaultDisplayFormUrl); context.ExecuteQuery(); if (!serviceObject.IsSPFolderEnabled()) { throw new ApplicationException(string.Format(Constants.ErrorMessages.FolderCreationIsNotSupported, listName)); } Folder folder = CreateFolderInternal(spWeb, list, list.RootFolder, string.Empty, folderName); context.Load(folder.ListItemAllFields); context.ExecuteQuery(); string strurl = BuildListItemLink(context.Url, list.DefaultDisplayFormUrl, folder.ListItemAllFields.Id); dataRow[Constants.SOProperties.LinkToItem] = strurl; results.Rows.Add(dataRow); } }
private void AddDeleteDocumentSetMethod(ServiceObject so) { Method mDeleteDocSet = Helper.CreateMethod(Constants.Methods.DeleteDocumentSetByName, "Delete a Document set", MethodType.Delete); if (base.IsDynamicSiteURL) { Helper.AddSiteURLParameter(mDeleteDocSet); } foreach (Property prop in so.Properties) { if (prop.IsDocSetName()) { mDeleteDocSet.InputProperties.Add(prop); mDeleteDocSet.Validation.RequiredProperties.Add(prop); } if (so.IsSPFolderEnabled() && (prop.IsFolderName())) { mDeleteDocSet.InputProperties.Add(prop); } } so.Methods.Add(mDeleteDocSet); }
private void AddGetItemByNameMethod(ServiceObject so) { Method mGetItemByName = Helper.CreateMethod(Constants.Methods.GetItemByName, "Retrieve metadata for one item by it's document name", MethodType.List); if (base.IsDynamicSiteURL) { Helper.AddSiteURLParameter(mGetItemByName); } if (base.IsListTitleParametrized) { Helper.AddStringParameter(mGetItemByName, Constants.InternalProperties.ListTitle); } foreach (Property prop in so.Properties) { if (string.Compare(prop.Name, Constants.SOProperties.FileName, true) == 0) { mGetItemByName.InputProperties.Add(prop); mGetItemByName.Validation.RequiredProperties.Add(prop); } if (so.IsSPFolderEnabled() == true && ( prop.IsFolderName() || prop.IsRecursivelyName())) { mGetItemByName.InputProperties.Add(prop); } if ((!prop.IsInternal() && !prop.IsFile()) || prop.IsLinkToItem() || (so.IsDocumentLibrary() && prop.IsFileName())) { mGetItemByName.ReturnProperties.Add(prop); } } so.Methods.Add(mGetItemByName); }
private void ExecuteCreateDocSetByName() { ServiceObject serviceObject = ServiceBroker.Service.ServiceObjects[0]; serviceObject.Properties.InitResultTable(); DataTable results = base.ServiceBroker.ServicePackage.ResultTable; string listTitle = serviceObject.GetListTitle(); string DocSetName = base.GetStringProperty(Constants.SOProperties.DocSetName, true); string FolderName = string.Empty; if (serviceObject.IsSPFolderEnabled()) { FolderName = base.GetStringProperty(Constants.SOProperties.FolderName, false); } DataRow dataRow = results.NewRow(); using (ClientContext context = InitializeContext(GetSiteURL())) { Web spWeb = context.Web; List list = spWeb.Lists.GetByTitle(listTitle); Folder parentFolder; context.Load(list, l => l.Fields, l => l.RootFolder); context.Load(list, d => d.DefaultDisplayFormUrl, d => d.ItemCount); context.Load(list.ContentTypes); context.ExecuteQuery(); if (string.IsNullOrEmpty(FolderName)) { parentFolder = list.RootFolder; } else { parentFolder = spWeb.GetFolderByServerRelativeUrl(string.Concat(list.RootFolder.Name, '/', FolderName)); context.Load(parentFolder); context.ExecuteQuery(); } Microsoft.SharePoint.Client.ClientResult <string> FileLink = new ClientResult <string>(); foreach (ContentType ct in list.ContentTypes) { if (ct.Id.StringValue.StartsWith(Constants.SharePointProperties.DocSetContentType)) { FileLink = DocumentSet.Create(context, parentFolder, DocSetName, ct.Id); break; } } context.ExecuteQuery(); Folder documentSet = null; documentSet = context.Web.GetFolderByServerRelativeUrl(FileLink.Value); context.Load(documentSet, c => c.ListItemAllFields); context.ExecuteQuery(); ListItem listItem = documentSet.ListItemAllFields; if (listItem == null) { throw new Exception(Constants.ErrorMessages.RequiredDocNotFound); } foreach (Property prop in serviceObject.Properties) { if (prop.Value != null && !prop.IsDocSetName() && !prop.IsFolderName()) { Helpers.SPHelper.AssignFieldValue(listItem, prop); } } listItem.Update(); context.ExecuteQuery(); if (FileLink != null) { dataRow[Constants.SOProperties.LinkToItem] = FileLink.Value; results.Rows.Add(dataRow); } } }
private void ExecuteRenameDocSet() { ServiceObject serviceObject = ServiceBroker.Service.ServiceObjects[0]; serviceObject.Properties.InitResultTable(); DataTable results = base.ServiceBroker.ServicePackage.ResultTable; DataRow dataRow = results.NewRow(); string listTitle = serviceObject.GetListTitle(); string siteURL = GetSiteURL(); string docSetName = base.GetStringProperty(Constants.SOProperties.DocSetName, true); string newDocSetName = base.GetStringProperty(Constants.SOProperties.DocSetNewName, true); string FolderName = string.Empty; if (serviceObject.IsSPFolderEnabled()) { FolderName = base.GetStringProperty(Constants.SOProperties.FolderName, false); } using (ClientContext context = InitializeContext(siteURL)) { Web spWeb = context.Web; List list = spWeb.Lists.GetByTitle(listTitle); context.Load(list, l => l.Fields, l => l.RootFolder); context.Load(list, d => d.DefaultDisplayFormUrl, d => d.ItemCount); context.ExecuteQuery(); if (list != null && list.ItemCount > 0) { Folder documentSet = null; if (string.IsNullOrEmpty(FolderName)) { documentSet = context.Web.GetFolderByServerRelativeUrl(string.Concat(list.RootFolder.Name, '/', docSetName)); } else { documentSet = context.Web.GetFolderByServerRelativeUrl(string.Concat(list.RootFolder.Name, '/', FolderName, '/', docSetName)); } context.Load(documentSet, c => c.ListItemAllFields); context.ExecuteQuery(); ListItem listItem = documentSet.ListItemAllFields; if (listItem == null) { throw new Exception(Constants.ErrorMessages.RequiredDocNotFound); } foreach (Property prop in serviceObject.Properties) { if (prop.Value != null && prop.IsNewDocumentSetName()) { listItem[Constants.SharePointProperties.FileLeafRef] = prop.Value; } } listItem.Update(); context.ExecuteQuery(); string strurl = BuildListItemLink(context.Url, list.DefaultDisplayFormUrl, listItem.Id); dataRow[Constants.SOProperties.LinkToItem] = strurl; results.Rows.Add(dataRow); } } }
private void ExecuteGetDocSetByName() { ServiceObject serviceObject = ServiceBroker.Service.ServiceObjects[0]; serviceObject.Properties.InitResultTable(); DataTable results = base.ServiceBroker.ServicePackage.ResultTable; DataRow dataRow = results.NewRow(); string listTitle = serviceObject.GetListTitle(); string DocSetName = base.GetStringProperty(Constants.SOProperties.DocSetName, true); string FolderName = string.Empty; if (serviceObject.IsSPFolderEnabled()) { FolderName = base.GetStringProperty(Constants.SOProperties.FolderName, false); } using (ClientContext context = InitializeContext(GetSiteURL())) { Web spWeb = context.Web; List list = spWeb.Lists.GetByTitle(listTitle); context.Load(list); context.Load(list, l => l.Fields, l => l.DefaultDisplayFormUrl); context.Load(list.RootFolder); context.Load(list.RootFolder.Folders); context.ExecuteQuery(); Folder documentSet = null; if (string.IsNullOrEmpty(FolderName)) { documentSet = context.Web.GetFolderByServerRelativeUrl(string.Concat(list.RootFolder.Name, '/', DocSetName)); } else { documentSet = context.Web.GetFolderByServerRelativeUrl(string.Concat(list.RootFolder.Name, '/', FolderName, '/', DocSetName)); } context.Load(documentSet, c => c.ListItemAllFields); context.ExecuteQuery(); ListItem listItem = documentSet.ListItemAllFields; foreach (Property prop in serviceObject.Properties) { if (listItem.FieldValues.ContainsKey(prop.Name) && !prop.IsFile()) { Helpers.SPHelper.AddFieldValue(dataRow, prop, listItem); } if (prop.IsLinkToItem()) { string strurl = BuildListItemLink(context.Url, list.DefaultDisplayFormUrl, listItem.Id); dataRow[prop.Name] = strurl; } } results.Rows.Add(dataRow); } }
//SPList is configured just to create service object of SP Lists public override List <ServiceObject> DescribeServiceObjects() { List <ServiceObject> SOs = new List <ServiceObject>(); using (ClientContext context = InitializeContext(base.SiteURL)) { Web spWeb = context.Web; ListCollection lists = spWeb.Lists; context.Load(lists); context.ExecuteQuery(); foreach (List list in lists) { if (list.Hidden == false || (list.Hidden && base.IncludeHiddenLists)) { ServiceObject so = Helper.CreateServiceObject(list.Title, list.Title, list.Description); so.MetaData.DisplayName = list.Title; so.MetaData.Description = list.Description; if (list.BaseType == BaseType.DocumentLibrary) { so.MetaData.ServiceProperties.Add(Constants.InternalProperties.ServiceFolder, "Document Libraries"); } else { so.MetaData.ServiceProperties.Add(Constants.InternalProperties.ServiceFolder, "List Items"); } so.MetaData.ServiceProperties.Add(Constants.InternalProperties.ListId, list.Id); so.MetaData.ServiceProperties.Add(Constants.InternalProperties.ListTitle, list.Title); so.MetaData.ServiceProperties.Add(Constants.InternalProperties.IsFolderEnabled, list.EnableFolderCreation); so.MetaData.ServiceProperties.Add(Constants.InternalProperties.ListBaseType, list.BaseType); FieldCollection fields = list.Fields; context.Load(fields); context.ExecuteQuery(); foreach (Field f in fields) { if (f.Hidden == false || (f.Hidden == true && base.IncludeHiddenFields)) { // We'll use InternalName as the system name and Title as the display name. // See http://blogs.perficient.com/microsoft/2009/04/static-name-vs-internal-name-vs-display-name-in-sharepoint/ for some background // Some fields have no title, so then we just take the internalname. string fieldTitle = f.Title; if (string.IsNullOrEmpty(fieldTitle)) { fieldTitle = f.InternalName; } // Because the field title can be duplicate, we see if it already exists. // If it does, we change the displayname of both existing and newly found property to something unique. // This behaviour can also be forced by the Show Internal Names option. Property existingProp = GetExistingProperty(so, fieldTitle); string displayName = fieldTitle; if (ShowInternalNames) { displayName = string.Format("{0} ({1})", fieldTitle, f.InternalName); } if (existingProp != null) { existingProp.MetaData.DisplayName = string.Format("{0} ({1})", existingProp.MetaData.GetServiceElement <string>(Constants.InternalProperties.Title), existingProp.MetaData.GetServiceElement <string>(Constants.InternalProperties.InternalName)); displayName = string.Format("{0} ({1})", fieldTitle, f.InternalName); } AddFieldProperty(so, f); FieldType _fieldtype; //We will find the Fieldtype from the MapHelper class (To get the correctoutput for field type Calculated) SoType soType = MapHelper.SPTypeField(f, out _fieldtype); Property prop = Helper.CreateSpecificProperty(f.InternalName, displayName, f.Description, soType); prop.MetaData.ServiceProperties.Add(Constants.InternalProperties.Hidden, f.Hidden); prop.MetaData.ServiceProperties.Add(Constants.InternalProperties.Title, fieldTitle); prop.MetaData.ServiceProperties.Add(Constants.InternalProperties.InternalName, f.InternalName); prop.MetaData.ServiceProperties.Add(Constants.InternalProperties.Id, f.Id); prop.MetaData.ServiceProperties.Add(Constants.InternalProperties.ReadOnly, AssignReadonly(f)); prop.MetaData.ServiceProperties.Add(Constants.InternalProperties.Required, f.Required); prop.MetaData.ServiceProperties.Add(Constants.InternalProperties.FieldTypeKind, _fieldtype); prop.MetaData.ServiceProperties.Add(Constants.InternalProperties.SPFieldType, f.TypeAsString); prop.MetaData.ServiceProperties.Add(Constants.InternalProperties.Internal, false); so.Properties.Add(prop); } } so.Properties.Add(NewProperty(Constants.SOProperties.DestinationURL, Constants.SOProperties.DestinationURL_DisplayName, true, SoType.Text, "The destination URL")); so.Properties.Add(NewProperty(Constants.SOProperties.DestinationListTitle, Constants.SOProperties.DestinationListTitle_DisplayName, true, SoType.Text, "The system name of the list")); so.Properties.Add(NewProperty(Constants.SOProperties.DestinationFolder, Constants.SOProperties.DestinationFolder_DisplayName, true, SoType.Text, "The foldername to apply this operation to")); so.Properties.Add(NewProperty(Constants.SOProperties.FolderName, Constants.SOProperties.FolderName, true, SoType.Text, "The foldername to apply this operation to")); so.Properties.Add(NewProperty(Constants.SOProperties.Recursively, Constants.SOProperties.Recursively, true, SoType.YesNo, "Recursively do this operation")); AddGetByIdMethod(so); AddCreateMethod(so); AddDeleteMethod(so); AddGetListMethod(so); AddUpdateMethod(so); if (so.IsSPFolderEnabled()) { AddCreateFolderMethod(so); AddDeleteFolderMethod(so); } //Non library methods if (!so.IsDocumentLibrary()) { AddMoveListItemMethod(so); AddCopyListItemMethod(so); } SOs.Add(so); } } return(SOs); } }