public override void WithResolvingModelHost(object modelHost, DefinitionBase model, Type childModelType, Action<object> action) { var list = modelHost.WithAssertAndCast<List>("modelHost", value => value.RequireNotNull()); var listItemModel = model.WithAssertAndCast<ListItemDefinition>("model", value => value.RequireNotNull()); var item = EnsureListItem(list, listItemModel); var context = list.Context; if (childModelType == typeof(ListItemFieldValueDefinition)) { // naaaaah, just gonna get a new one list item // keep it simple and safe, really really really safe with all that SharePoint stuff... var currentItem = list.GetItemById(item.Id); context.Load(currentItem); context.ExecuteQuery(); var listItemPropertyHost = new ListItemFieldValueModelHost { CurrentItem = currentItem }; action(listItemPropertyHost); currentItem.Update(); context.ExecuteQuery(); } }
private void ProcessFieldValue(ListItemFieldValueModelHost modelHost, ListItem listItem, ListItemFieldValueDefinition fieldValue) { InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = listItem, ObjectType = typeof(ListItem), ObjectDefinition = fieldValue, ModelHost = modelHost }); if (!string.IsNullOrEmpty(fieldValue.FieldName)) { listItem[fieldValue.FieldName] = fieldValue.Value; } InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = listItem, ObjectType = typeof(ListItem), ObjectDefinition = fieldValue, ModelHost = modelHost }); }
public override void WithResolvingModelHost(object modelHost, DefinitionBase model, Type childModelType, Action<object> action) { var folderHost = modelHost.WithAssertAndCast<FolderModelHost>("modelHost", value => value.RequireNotNull()); var moduleFile = model.WithAssertAndCast<ModuleFileDefinition>("model", value => value.RequireNotNull()); var web = folderHost.CurrentWeb; var file = ProcessFile(folderHost, moduleFile); var context = file.Context; if (childModelType == typeof(ListItemFieldValueDefinition)) { var fileListItem = file.ListItemAllFields; context.Load(fileListItem, i => i.Id, i => i.ParentList); context.ExecuteQuery(); var list = fileListItem.ParentList; var item = list.GetItemById(fileListItem.Id); context.ExecuteQuery(); var listItemPropertyHost = new ListItemFieldValueModelHost { CurrentItem = item }; action(listItemPropertyHost); item.Update(); context.ExecuteQuery(); } else if (childModelType == typeof(PropertyDefinition)) { var propModelHost = new PropertyModelHost { CurrentFile = file }; action(propModelHost); context.ExecuteQuery(); } else { action(file); context.ExecuteQuery(); } }