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); } }
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 }); }