public static void SetMetadataFields(ClientContext cc, JObject inputFields, FieldCollection fields, ListItem item) { foreach (KeyValuePair <string, JToken> inputField in inputFields) { var field = fields.GetByInternalNameOrTitle(inputField.Key); cc.Load(field); cc.ExecuteQuery(); Console.WriteLine(field.TypeAsString); if (field.TypeAsString.Equals("TaxonomyFieldType")) { var taxKeywordField = cc.CastTo <TaxonomyField>(field); Guid _id = taxKeywordField.TermSetId; string _termID = TermHelper.GetTermIdByName(cc, inputField.Value.ToString(), _id); TaxonomyFieldValue termValue = new TaxonomyFieldValue() { Label = inputField.Value.ToString(), TermGuid = _termID, //WssId = -1 //WssId = (int)taxObj["WssId"] }; taxKeywordField.SetFieldValueByValue(item, termValue); taxKeywordField.Update(); } else if (field.TypeAsString.Equals("User")) { var user = FieldUserValue.FromUser(inputField.Value.ToString()); item[inputField.Key] = user; } else if (field.TypeAsString.Equals("DateTime") && inputField.Value.ToString() != "") { string dateTimeStr = inputField.Value.ToString(); dateTimeStr = dateTimeStr.Replace("~t", ""); item[inputField.Key] = Convert.ToDateTime(dateTimeStr); } else if (inputField.Value.ToString() == "") { continue; } else { item[inputField.Key] = inputField.Value.ToString(); } // This method works but not practical //string termValue = "-1;#" + taxObj["Label"].ToString() + "|" + taxObj["TermGuid"].ToString(); //item[inputField.Key] = termValue; item.SystemUpdate(); //cc.ExecuteQuery(); } }
public static void SetMetadataFields(ClientContext cc, List list, JObject inputFields, List <Metadata> fields, ListItem item) { try { DateTime dtMin = new DateTime(1900, 1, 1); foreach (KeyValuePair <string, JToken> inputField in inputFields) { if (inputField.Value == null || inputField.Value.ToString() == "") { //Console.WriteLine(inputField.Key); continue; } var field = fields.Find(f => f.InternalName == inputField.Key); if (field.TypeAsString.Equals("TaxonomyFieldType")) { Field taxField = list.Fields.GetByInternalNameOrTitle(inputField.Key); var taxKeywordField = cc.CastTo <TaxonomyField>(taxField); Guid _id = taxKeywordField.TermSetId; string _termID = TermHelper.GetTermIdByName(cc, inputField.Value.ToString(), _id); TaxonomyFieldValue termValue = new TaxonomyFieldValue() { Label = inputField.Value.ToString(), TermGuid = _termID, //WssId = -1 //WssId = (int)taxObj["WssId"] }; taxKeywordField.SetFieldValueByValue(item, termValue); taxKeywordField.Update(); } else if (field.TypeAsString.Equals("User")) { //use stringbuilder var user = FieldUserValue.FromUser(inputField.Value.ToString()); item[inputField.Key] = user; Console.WriteLine("Set field " + inputField.Key + " to " + user); } else if (field.TypeAsString.Equals("DateTime")) { string dateTimeStr = inputField.Value.ToString(); dateTimeStr = dateTimeStr.Replace("~t", ""); if (DateTime.TryParse(dateTimeStr, out DateTime dt)) { if (dtMin <= dt) { item[inputField.Key] = dt; Console.WriteLine("Set field " + inputField.Key + "to " + dt); } else { continue; } } } else { int tokenLength = inputField.Value.Count(); if (tokenLength >= 1) { continue; } else { item[inputField.Key] = inputField.Value.ToString(); Console.WriteLine("Set " + inputField.Key + " to " + inputField.Value.ToString()); } } item.SystemUpdate(); } } catch (System.Exception) { throw; } }
public static Folder CreateDocumentSetWithTaxonomy(ClientContext cc, List list, string sitecontent, string documentSetName, IDictionary <string, string> inputFields, List <Metadata> fields, IDictionary <string, string> taxonomy) { try { ContentTypeCollection listContentTypes = list.ContentTypes; cc.Load(listContentTypes, types => types.Include(type => type.Id, type => type.Name, type => type.Parent)); //var result = cc.LoadQuery(listContentTypes.Where(c => c.Name == "document set 2")); //string SiteContentName = sitecontent; var result = cc.LoadQuery(listContentTypes.Where(c => c.Name == sitecontent)); cc.ExecuteQuery(); ContentType targetDocumentSetContentType = result.FirstOrDefault(); ListItemCreationInformation newItemInfo = new ListItemCreationInformation(); newItemInfo.UnderlyingObjectType = FileSystemObjectType.Folder; newItemInfo.LeafName = documentSetName; ListItem newListItem = list.AddItem(newItemInfo); newListItem["ContentTypeId"] = targetDocumentSetContentType.Id.ToString(); newListItem.Update(); cc.ExecuteQuery(); var clientRuntimeContext = newListItem.Context; for (int i = 0; i < taxonomy.Count; i++) { var inputField = taxonomy.ElementAt(i); var fieldValue = inputField.Value; var field = list.Fields.GetByInternalNameOrTitle(inputField.Key); cc.Load(field); cc.ExecuteQuery(); var taxKeywordField = clientRuntimeContext.CastTo <TaxonomyField>(field); Guid _id = taxKeywordField.TermSetId; string _termID = TermHelper.GetTermIdByName(cc, fieldValue, _id); TaxonomyFieldValue termValue = new TaxonomyFieldValue() { Label = fieldValue.ToString(), TermGuid = _termID, }; taxKeywordField.SetFieldValueByValue(newListItem, termValue); taxKeywordField.Update(); newListItem.Update(); } DateTime dtMin = new DateTime(1900, 1, 1); Regex regex = new Regex(@"~t.*"); foreach (KeyValuePair <string, string> inputField in inputFields) { if (inputField.Value == null || inputField.Value == "" || inputField.Key.Equals("Modified")) { continue; } string fieldValue = inputField.Value; Match match = regex.Match(fieldValue); Metadata field = fields.Find(x => x.InternalName.Equals(inputField.Key)); if (field.TypeAsString.Equals("User")) { int uid = SharePointHelper.GetUserId(cc, fieldValue); newListItem[inputField.Key] = new FieldUserValue { LookupId = uid }; } //endre hard koding else if (inputField.Key.Equals("Modified_x0020_By") || inputField.Key.Equals("Created_x0020_By") || inputField.Key.Equals("Dokumentansvarlig")) { StringBuilder sb = new StringBuilder("i:0#.f|membership|"); sb.Append(fieldValue); newListItem[inputField.Key] = sb; } else if (match.Success) { fieldValue = fieldValue.Replace("~t", ""); if (DateTime.TryParse(fieldValue, out DateTime dt)) { if (dtMin <= dt) { newListItem[inputField.Key] = dt; } else { continue; } } } else { newListItem[inputField.Key] = fieldValue; } newListItem.Update(); } Folder folder = newListItem.Folder; return(folder); } catch (Exception ex) { Console.WriteLine("Unable to create document set"); Console.WriteLine(ex); throw; } }