private bool EnsureSqlVersion(ItemDefinition itemDefinition, DataProvider sqlProvider, CallContext context)
        {
            var sqlVersion = GetSqlVersion(itemDefinition.ID, context, sqlProvider);

            if (sqlVersion != null)
            {
                return(true);
            }
            if (itemDefinition.ID == FolderId ||
                ControllerType.GetAllNamespaces().ContainsKey(itemDefinition.ID.ToGuid()) ||
                ControllerType.GetAllControllers().ContainsKey(itemDefinition.ID.ToGuid()) ||
                ControllerAction.GetControllerAction(itemDefinition.ID) != null)
            {
                var parentId = GetParentID(itemDefinition, context) ?? sqlProvider.GetParentID(itemDefinition, context);
                var itemdef  = GetItemDefinition(parentId, context) ?? sqlProvider.GetItemDefinition(parentId, context);
                if (!sqlProvider.CreateItem(itemDefinition.ID, itemDefinition.Name, itemDefinition.TemplateID, itemdef, context))
                {
                    return(false);
                }

                var item           = Database.GetItem(itemDefinition.ID);
                var existingFields = new ItemChanges(item);
                foreach (Field field in item.Fields)
                {
                    existingFields.SetFieldValue(field, item[field.ID]);
                }
                sqlProvider.SaveItem(itemDefinition, existingFields, context);
                return(true);
            }
            return(false);
        }
 public void OnItemSavedRemote_should_remove_active_configuration_items_from_cache()
 {
     this.CheckConfigurationItem(
         this.provider.OnItemSavedRemote,
         item =>
     {
         var itemChanges = new ItemChanges(item);
         itemChanges.SetFieldValue(item.Fields[FieldIDs.IntegrationConfigData], "changed");
         return(new ItemSavedRemoteEventArgs(item, itemChanges));
     });
 }
 public void OnItemSavedRemote_should_remove_child_configuration_folderss_from_cache()
 {
     // Act
     this.CheckFoldersStructure(
         this.provider.OnItemSavedRemote,
         item =>
     {
         var itemChanges = new ItemChanges(item);
         itemChanges.SetFieldValue(item.Fields[FieldIDs.IntegrationConfigData], "changed");
         return(new ItemSavedRemoteEventArgs(item, itemChanges));
     });
 }
		public void Save_ShouldSerializeItem(Db db)
		{
			var target = Substitute.For<ITargetDataStore>();

			using (var provider = CreateTestProvider(db.Database, targetDataStore: target))
			{
				var fieldId = ID.NewID;
				var item = new DbItem("Test") { { fieldId, "World" } };
				db.Add(item);

				var dbItem = db.GetItem(item.ID);

				var changes = new ItemChanges(dbItem);
				changes.SetFieldValue(dbItem.Fields[fieldId], "Hello", "World");

				provider.SaveItem(CreateTestDefinition(), changes, CreateTestCallContext(db.Database));

				target.Received().Save(Arg.Any<IItemData>());
			}
		}
        public void Save_ShouldSerializeItem(Db db)
        {
            var target = Substitute.For <ITargetDataStore>();

            using (var provider = CreateTestProvider(db.Database, targetDataStore: target))
            {
                var fieldId = ID.NewID;
                var item    = new DbItem("Test")
                {
                    { fieldId, "World" }
                };
                db.Add(item);

                var dbItem = db.GetItem(item.ID);

                var changes = new ItemChanges(dbItem);
                changes.SetFieldValue(dbItem.Fields[fieldId], "Hello", "World");

                provider.SaveItem(CreateTestDefinition(), changes, CreateTestCallContext(db.Database));

                target.Received().Save(Arg.Any <IItemData>(), null);
            }
        }
 private bool EnsureSqlVersion(ItemDefinition itemDefinition, DataProvider sqlProvider, CallContext context)
 {
     var sqlVersion = GetSqlVersion(itemDefinition.ID, context, sqlProvider);
     if (sqlVersion != null)
     {
         return true;
     }
     if (itemDefinition.ID == FolderId ||
         ControllerType.GetAllNamespaces().ContainsKey(itemDefinition.ID.ToGuid())
         || ControllerType.GetAllControllers().ContainsKey(itemDefinition.ID.ToGuid())
         || ControllerAction.GetControllerAction(itemDefinition.ID) != null)
     {
         var parentId = GetParentID(itemDefinition, context) ?? sqlProvider.GetParentID(itemDefinition, context);
         var itemdef = GetItemDefinition(parentId, context) ?? sqlProvider.GetItemDefinition(parentId, context);
         if (!sqlProvider.CreateItem(itemDefinition.ID, itemDefinition.Name, itemDefinition.TemplateID, itemdef, context))
         {
             return false;
         }
         
         var item = Database.GetItem(itemDefinition.ID);
         var existingFields = new ItemChanges(item);
         foreach (Field field in item.Fields)
         {
             existingFields.SetFieldValue(field, item[field.ID]);
         }
         sqlProvider.SaveItem(itemDefinition, existingFields, context);
         return true;
     }
     return false;
 }