public List <ActionObjectPath> GetRequest(IIdProvider idProvider) { IdentityPath = idProvider.GetActionId(); Identity listIdentity = GetListIdentity(idProvider); Property fieldsProperty = GetFieldsProperty(idProvider, listIdentity); Dictionary <string, IFieldUpdateStrategy> fieldUpdateStrategies = ConstructCustomUpdateStrategies(idProvider, listIdentity, fieldsProperty); IFieldUpdateStrategy defaultStrategy = new SetItemFieldUpdateStrategy(idProvider); Identity listItemIdentity = new Identity() { Id = IdentityPath, Name = $"121a659f-e03e-2000-4281-1212829d67dd|740c6a0b-85e2-48a0-a494-e0f1759d4aa7:site:{SiteId}:web:{WebId}:list:{ListId}:item:{ItemId},1" }; List <ActionObjectPath> result = new List <ActionObjectPath>(); foreach (CSOMItemField fld in FieldsToUpdate) { if (fld.FieldType == null) { result.AddRange(defaultStrategy.GetFieldUpdateAction(fld, listItemIdentity)); } else if (fieldUpdateStrategies.ContainsKey(fld.FieldType)) { result.AddRange(fieldUpdateStrategies[fld.FieldType].GetFieldUpdateAction(fld, listItemIdentity)); } else { result.AddRange(defaultStrategy.GetFieldUpdateAction(fld, listItemIdentity)); } } if (FieldsToUpdate.Any(fld => fld.FieldType == "TaxonomyFieldType" || fld.FieldType == "FieldTaxonomyValue" || fld.FieldType == "TaxonomyFieldTypeMulti")) { result.Add(new ActionObjectPath() { ObjectPath = listIdentity }); result.Add(new ActionObjectPath() { ObjectPath = fieldsProperty }); } result.Add(new ActionObjectPath() { Action = new MethodAction() { Id = idProvider.GetActionId(), Name = UpdateMethodName, ObjectPathId = listItemIdentity.Id.ToString() }, ObjectPath = listItemIdentity }); return(result); }
public void AddFieldToUpdate(string fieldName) { if (Values.Where((x) => x.FieldName.Equals(fieldName)).Count() > 0) { FieldsToUpdate.Add(fieldName); } else { throw new Exception(message: "This field is not in the values"); } }
public void AddValue(string fieldName, object value, bool toUpdate) { if (Values.Where((v) => v.FieldName.Equals(fieldName)).Count() > 0) { throw new Exception(string.Format(format: "This field is already on values: {0} .", arg0: fieldName)); } AddValue(fieldName, value); if (toUpdate) { FieldsToUpdate.Add(fieldName); } }