Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Carlos Casalicchio 117 posts 479 karma points
    Jan 02, 2018 @ 17:49
    Carlos Casalicchio
    0

    Do not save into cmsPropertyData

    I am using the ApplicationEventHandler to bind the ContentService Saved method to some custom logic that saves a custom property editor's data into a custom database table. Everything is working fine in the custom table side. But I wonder if it is possible to ignore the normal process and not save the data into the cmsPropertyData table.

    This is my code:

    using Newtonsoft.Json;
    using System.Linq;
    using Tigerbay.Cms.Umbraco.CV.Core.Controllers;
    using Tigerbay.Cms.Umbraco.CV.Core.Models;
    using Umbraco.Core;
    using Umbraco.Core.Events;
    using Umbraco.Core.Models;
    using Umbraco.Core.Publishing;
    using Umbraco.Core.Services;
    
    namespace Tigerbay.Cms.Umbraco.CV.Core.Services
    {
        /// <summary>
        /// Hooks up all the necessary events into the current assembly / logic
        /// </summary>
        public class HookupEventsService : ApplicationEventHandler
        {
            protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
            {
                //hockup events to allow saving and deleting villa information
                ContentService.EmptyingRecycleBin += ContentService_EmptyingRecycleBin;
                ContentService.Deleted += ContentService_Deleted;
                ContentService.Saved += ContentService_Saved;
            }
    
            private void ContentService_Deleted(IContentService sender, DeleteEventArgs<IContent> e)
            {
                foreach (var deleted in e.DeletedEntities)
                    SaveOrDeleteNode(deleted, Process.Delete);
            }
    
            private void ContentService_EmptyingRecycleBin(IContentService sender, RecycleBinEventArgs e)
            {
                foreach (var id in e.Ids)
                {
                    var deleted = sender.GetById(id);
                    SaveOrDeleteNode(deleted, Process.Delete);
                }
            }
    
            private void ContentService_Saved(IContentService sender, SaveEventArgs<IContent> e)
            {
                foreach (var node in e.SavedEntities)
                    SaveOrDeleteNode(node, Process.Save);
                // can I ignore the normal saving process,
                // maybe with the ContentService_Saving method
                //(but I need the NodeID, that is why the logic is currently in the Saved method)
            }
    
    
            private void SaveOrDeleteNode(IContent node, Process process)
            {
                if (node.ContentType.Alias == "tigerbayVilla")
                {
                    var villaNode = node.Properties.SingleOrDefault(x => x.Alias == "tigerbayVillaDetails");
                    if (villaNode.Value != null)
                    {
                        using (var srv = new VillasSurfaceController())
                        {
                            var json = villaNode.Value.ToString();
                            Villas villa = JsonConvert.DeserializeObject<Villas>(json);
                            if (villa.NodeId == 0) villa.NodeId = node.Id;
                            switch (process)
                            {
                                case Process.Save:
                                    srv.SaveVilla(villa);
                                    break;
                                case Process.Delete:
                                    srv.DeleteVilla(villa.NodeId);
                                    break;
                            }
                        }
                    }
                }
            }
    
            protected internal enum Process
            {
                Save,
                Delete
            }
        }
    }
    

    I want to avoid cluttering the Umbraco cmsPropertyData table with stuff that will never be used.

  • Carlos Casalicchio 117 posts 479 karma points
    Jan 05, 2018 @ 12:53
    Carlos Casalicchio
    0

    Does anyone have any clues on this????

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies