Пример #1
0
        private void Apply(PageModuleAdded @event)
        {
            PageModules.Add(@event.PageModule);

            foreach (var reorderedModule in @event.ReorderedModules)
            {
                var pageModule = PageModules.FirstOrDefault(x => x.Id == reorderedModule.PageModuleId);
                pageModule?.Reorder(reorderedModule.Zone, reorderedModule.SortOrder);
            }
        }
Пример #2
0
        public void AddModule(PageModule pageModule)
        {
            var alreadyAddedPageModule = PageModules.FirstOrDefault(x => x.ModuleId == pageModule.ModuleId);

            if (alreadyAddedPageModule != null && alreadyAddedPageModule.Status != PageModuleStatus.Deleted)
            {
                throw new Exception("Module already added.");
            }

            var reorderedModules = new List <PageModuleAdded.ReorderedModule>();

            foreach (var existingPageModule in PageModules.Where(x => x.Zone == pageModule.Zone && x.SortOrder >= pageModule.SortOrder))
            {
                existingPageModule.Reorder(existingPageModule.Zone, existingPageModule.SortOrder + 1);
                reorderedModules.Add(new PageModuleAdded.ReorderedModule
                {
                    ModuleId  = existingPageModule.ModuleId,
                    SortOrder = existingPageModule.SortOrder
                });
            }

            PageModules.Add(pageModule);

            AddEvent(new PageModuleAdded
            {
                SiteId           = SiteId,
                PageModuleId     = pageModule.Id,
                ModuleId         = pageModule.ModuleId,
                AggregateRootId  = Id,
                Title            = pageModule.Title,
                Zone             = pageModule.Zone,
                SortOrder        = pageModule.SortOrder,
                PageModuleStatus = PageModuleStatus.Active,
                ReorderedModules = reorderedModules
            });
        }