/// <summary> /// Gets and sets default content type of the list. /// </summary> /// <param name="requestObject">RequestObject object</param> /// <param name="clientContext">ClientContext object</param> /// <param name="url">SourceURL of the OneDrive document</param> /// <param name="contentTypeId">Content Type Id</param> /// <param name="operationType">Operation type specifies either get or set Content type operation</param> /// <param name="documentLibraryName">Name of the document library</param> /// <returns>Returns Content Type Id</returns> internal static string GetContentTypeList(RequestObject requestObject, ClientContext clientContext, string url, string contentTypeId, int operationType, string documentLibraryName) { try { using (clientContext = ServiceUtility.GetClientContext(requestObject.SPAppToken, new Uri(url.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[0]), requestObject.RefreshToken)) { List docLib = clientContext.Web.Lists.GetByTitle(documentLibraryName); clientContext.Load(docLib); clientContext.ExecuteQuery(); Microsoft.SharePoint.Client.Folder folder = docLib.RootFolder; IList <ContentTypeId> list = new List <ContentTypeId>(); clientContext.Load(folder, item => item.ContentTypeOrder, item => item.UniqueContentTypeOrder); clientContext.ExecuteQuery(); list = folder.ContentTypeOrder; ServiceConstantStrings.OperationTypes type = (ServiceConstantStrings.OperationTypes)operationType; switch (type) { case ServiceConstantStrings.OperationTypes.Update: contentTypeId = list[0].StringValue; break; case ServiceConstantStrings.OperationTypes.Checkout: int iterator = 0, index = 0; for (iterator = 0; iterator < list.Count; iterator++) { if (list[iterator].StringValue == contentTypeId) { index = iterator; break; } } ContentTypeId currentContentTypeID = list[index]; list.RemoveAt(index); list.Insert(0, currentContentTypeID); folder.UniqueContentTypeOrder = list; folder.Update(); clientContext.ExecuteQuery(); break; } } } catch (Exception exception) { Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName); } return(contentTypeId); }
/// <summary> /// Updates the content type of the list item and returns the updated content type based on briefcase operation. /// </summary> /// <param name="requestObject">Request object</param> /// <param name="clientContext">ClientContext object</param> /// <param name="documentName">Document Name</param> /// <param name="url">URL parameter</param> /// <param name="operationType">Specifies the type of operation</param> /// <param name="contentTypeId">String form of Content type ID</param> /// <param name="documentLibraryName">Name of the document library</param> /// <returns>List item Content Type Id</returns> internal static string ContentTypeByName(RequestObject requestObject, ClientContext clientContext, string documentName, string url, int operationType, string contentTypeId, string documentLibraryName) { string response = string.Empty; try { using (clientContext = ServiceUtility.GetClientContext(requestObject.SPAppToken, new Uri(url.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[0]), requestObject.RefreshToken)) { string itemQuery = string.Format(CultureInfo.InvariantCulture, ServiceConstantStrings.GetItemByNameQuery, documentName); ListItemCollection listItems = Lists.GetData(clientContext, documentLibraryName, itemQuery); ServiceConstantStrings.OperationTypes type = (ServiceConstantStrings.OperationTypes)operationType; switch (type) { case ServiceConstantStrings.OperationTypes.Update: foreach (var listitem in listItems) { response = Convert.ToString(listitem[ConstantStrings.OneDriveContentTypeProperty], CultureInfo.InvariantCulture); } break; case ServiceConstantStrings.OperationTypes.Checkout: foreach (var listitem in listItems) { listitem[ConstantStrings.OneDriveContentTypeProperty] = contentTypeId; listitem.Update(); clientContext.ExecuteQuery(); response = ConstantStrings.TRUE; } break; default: response = string.Concat(ConstantStrings.FALSE, ConstantStrings.Comma, ConstantStrings.Space, TextConstants.InvalidParametersMessage); break; } } } catch (Exception exception) { Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName); response = string.Concat(CultureInfo.InvariantCulture, ConstantStrings.FALSE, ConstantStrings.Comma, ConstantStrings.Space, ServiceUtility.RemoveEscapeCharacter(exception.Message)); } return(response); }
/// <summary> /// Helper function to perform Check Out, Detach, and Update document functionality. /// </summary> /// <param name="requestObject">The Web request object.</param> /// <param name="syncDetails">SyncDetails object</param> /// <param name="commonResponse">Holds response for briefcase detach operation</param> /// <param name="clientContext">Client context object for connection between SP & client</param> /// <param name="status">Sets status for send to briefcase operation</param> private void GetContextInList(RequestObject requestObject, SyncDetails syncDetails, ref CommonResponse commonResponse, ClientContext clientContext, ref string status) { List list = clientContext.Web.Lists.GetById(new Guid(syncDetails.ListId)); foreach (int itemid in syncDetails.ItemId) { ListItemCollection listItems = BriefcaseHelperFunction.GetListItemCollection(clientContext, itemid); MailAttachmentDetails mailattachmentDetails = new MailAttachmentDetails(); ServiceConstantStrings.OperationTypes operationType = (ServiceConstantStrings.OperationTypes)syncDetails.Operation; if (operationType == ServiceConstantStrings.OperationTypes.Detach) { commonResponse = BriefcaseHelperFunction.DetachOperation(commonResponse, clientContext, list, listItems); } else { foreach (var listItem in listItems) { mailattachmentDetails.FullUrl = Convert.ToString(listItem[ServiceConstantStrings.OneDriveSiteColumn], CultureInfo.InvariantCulture); mailattachmentDetails.IsOverwrite = 1; } switch (operationType) { case ServiceConstantStrings.OperationTypes.Update: status = this.SendToBriefcase(requestObject, mailattachmentDetails, false); commonResponse = BriefcaseHelperFunction.UpdateOperationStatus(commonResponse, status); break; case ServiceConstantStrings.OperationTypes.Checkout: status = this.CheckOutDocument(requestObject, mailattachmentDetails); commonResponse = BriefcaseHelperFunction.CheckoutOperationStatus(commonResponse, status); commonResponse.Status.Add(Convert.ToBoolean(status.Split(',')[0], CultureInfo.InvariantCulture)); break; } } } }