コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: MergeGenerator.cs プロジェクト: Ylliahc/MergeGen
 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");
     }
 }
コード例 #3
0
ファイル: MergeGenerator.cs プロジェクト: Ylliahc/MergeGen
        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);
            }
        }