private void DeployImageRenditionSettings(object modelHost, SiteModelHost siteModelHost,
            ImageRenditionDefinition imageRenditionModel)
        {
            var renditions = SiteImageRenditions.GetRenditions(siteModelHost.HostSite);
            var currentRendition = GetCurrentImageRendition(renditions, imageRenditionModel);

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model = null,
                EventType = ModelEventType.OnProvisioning,
                Object = currentRendition,
                ObjectType = typeof(ImageRendition),
                ObjectDefinition = imageRenditionModel,
                ModelHost = modelHost
            });

            if (currentRendition == null)
            {
                currentRendition = new ImageRendition
                {
                    Name = imageRenditionModel.Name,
                    Width = imageRenditionModel.Width,
                    Height = imageRenditionModel.Height
                };

                InvokeOnModelEvent(this, new ModelEventArgs
                {
                    CurrentModelNode = null,
                    Model = null,
                    EventType = ModelEventType.OnProvisioned,
                    Object = currentRendition,
                    ObjectType = typeof(ImageRendition),
                    ObjectDefinition = imageRenditionModel,
                    ModelHost = modelHost
                });

                renditions.Add(currentRendition);
                renditions.Update();
            }
            else
            {
                InvokeOnModelEvent(this, new ModelEventArgs
                {
                    CurrentModelNode = null,
                    Model = null,
                    EventType = ModelEventType.OnProvisioned,
                    Object = currentRendition,
                    ObjectType = typeof(ImageRendition),
                    ObjectDefinition = imageRenditionModel,
                    ModelHost = modelHost
                });
            }
        }
        private void DeployImageRenditionSettings(object modelHost, SiteModelHost siteModelHost,
            ImageRenditionDefinition imageRenditionModel)
        {
            var context = siteModelHost.HostSite.Context;
            var renditions = SiteImageRenditions.GetRenditions(siteModelHost.HostSite.Context);
            context.ExecuteQueryWithTrace();

            var currentRendition = GetCurrentImageRendition(renditions, imageRenditionModel);

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model = null,
                EventType = ModelEventType.OnProvisioning,
                Object = currentRendition,
                ObjectType = typeof(ImageRendition),
                ObjectDefinition = imageRenditionModel,
                ModelHost = modelHost
            });

            if (currentRendition == null)
            {
                TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing new Image Rendition");

                var newRendition = new ImageRendition
                 {
                     Name = imageRenditionModel.Name,
                     Width = imageRenditionModel.Width,
                     Height = imageRenditionModel.Height
                 };

                InvokeOnModelEvent(this, new ModelEventArgs
                {
                    CurrentModelNode = null,
                    Model = null,
                    EventType = ModelEventType.OnProvisioned,
                    Object = newRendition,
                    ObjectType = typeof(ImageRendition),
                    ObjectDefinition = imageRenditionModel,
                    ModelHost = modelHost
                });

                renditions.Add(newRendition);
                SiteImageRenditions.SetRenditions(context, renditions);

                context.ExecuteQueryWithTrace();
            }
            else
            {
                TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing existing Image Rendition");

                InvokeOnModelEvent(this, new ModelEventArgs
                {
                    CurrentModelNode = null,
                    Model = null,
                    EventType = ModelEventType.OnProvisioned,
                    Object = currentRendition,
                    ObjectType = typeof(ImageRendition),
                    ObjectDefinition = imageRenditionModel,
                    ModelHost = modelHost
                });
            }
        }
 protected ImageRendition GetCurrentImageRendition(IList<ImageRendition> renditions, ImageRenditionDefinition imageRenditionModel)
 {
     return renditions.FirstOrDefault(r =>
        !string.IsNullOrEmpty(r.Name) &&
        String.Equals(r.Name, imageRenditionModel.Name, StringComparison.CurrentCultureIgnoreCase));
 }
 public static ModelNode AddImageRendition(this ModelNode model, ImageRenditionDefinition definition, Action<ModelNode> action)
 {
     return model.AddDefinitionNode(definition, action);
 }
 public static ModelNode AddImageRendition(this ModelNode model, ImageRenditionDefinition definition)
 {
     return AddImageRendition(model, definition, null);
 }