예제 #1
0
파일: Page.cs 프로젝트: zzekikaya/Weapsy
        public void AddModule(PageModule pageModule)
        {
            var alreadyAddedPageModule = PageModules.FirstOrDefault(x => x.Id == pageModule.Id);

            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))
            {
                reorderedModules.Add(new PageModuleAdded.ReorderedModule
                {
                    PageModuleId = existingPageModule.Id,
                    Zone         = existingPageModule.Zone,
                    SortOrder    = existingPageModule.SortOrder + 1
                });
            }

            AddEvent(new PageModuleAdded
            {
                AggregateRootId  = Id,
                SiteId           = SiteId,
                PageModule       = pageModule,
                ReorderedModules = reorderedModules
            });
        }
예제 #2
0
파일: Page.cs 프로젝트: zzekikaya/Weapsy
 private void Apply(PageModulesReordered @event)
 {
     foreach (var reorderedPageModule in @event.PageModules)
     {
         var pageModule = PageModules.FirstOrDefault(x => x.Id == reorderedPageModule.PageModuleId);
         pageModule?.Reorder(reorderedPageModule.Zone, reorderedPageModule.SortOrder);
     }
 }
예제 #3
0
파일: Page.cs 프로젝트: zzekikaya/Weapsy
        public void SetModulePermissions(SetPageModulePermissions cmd)
        {
            var pageModule = PageModules.FirstOrDefault(x => x.Id == cmd.PageModuleId);

            if (pageModule == null || pageModule.Status == PageModuleStatus.Deleted)
            {
                throw new Exception("Page module not found.");
            }

            AddEvent(new PageModulePermissionsSet
            {
                SiteId                = SiteId,
                AggregateRootId       = Id,
                PageModuleId          = cmd.PageModuleId,
                PageModulePermissions = cmd.PageModulePermissions
            });
        }
예제 #4
0
        public void ReorderPageModules(ReorderPageModules cmd, IValidator <ReorderPageModules> validator)
        {
            validator.ValidateCommand(cmd);

            var reorderedPageModules = new List <PageModulesReordered.PageModule>();

            foreach (var zone in cmd.Zones)
            {
                for (int i = 0; i < zone.Modules.Count; i++)
                {
                    var moduleId  = zone.Modules[i];
                    var zoneName  = zone.Name;
                    var sortOrder = i + 1;

                    var pageModule = PageModules.FirstOrDefault(x => x.ModuleId == moduleId);

                    if (pageModule == null || pageModule.Status == PageModuleStatus.Deleted)
                    {
                        throw new Exception("Page module not found.");
                    }

                    if (pageModule.Zone == zoneName && pageModule.SortOrder == sortOrder)
                    {
                        continue;
                    }

                    pageModule.Reorder(zoneName, sortOrder);

                    reorderedPageModules.Add(new PageModulesReordered.PageModule
                    {
                        ModuleId  = pageModule.ModuleId,
                        Zone      = zoneName,
                        SortOrder = sortOrder
                    });
                }
            }

            AddEvent(new PageModulesReordered
            {
                SiteId          = SiteId,
                AggregateRootId = Id,
                PageModules     = reorderedPageModules
            });
        }
예제 #5
0
파일: Page.cs 프로젝트: zzekikaya/Weapsy
        public void RemoveModule(RemovePageModule cmd, IValidator <RemovePageModule> validator)
        {
            validator.ValidateCommand(cmd);

            var pageModule = PageModules.FirstOrDefault(x => x.ModuleId == cmd.ModuleId);

            if (pageModule == null || pageModule.Status == PageModuleStatus.Deleted)
            {
                throw new Exception("Page module not found.");
            }

            AddEvent(new PageModuleRemoved
            {
                SiteId          = SiteId,
                AggregateRootId = Id,
                ModuleId        = cmd.ModuleId,
                PageModuleId    = pageModule.Id
            });
        }
예제 #6
0
        public void UpdateModule(UpdatePageModuleDetails cmd, IValidator <UpdatePageModuleDetails> validator)
        {
            validator.ValidateCommand(cmd);

            var pageModule = PageModules.FirstOrDefault(x => x.ModuleId == cmd.ModuleId);

            if (pageModule == null || pageModule.Status == PageModuleStatus.Deleted)
            {
                throw new Exception("Page module not found.");
            }

            pageModule.UpdateDetails(cmd);

            AddEvent(new PageModuleDetailsUpdated
            {
                SiteId          = SiteId,
                AggregateRootId = Id,
                PageModule      = pageModule
            });
        }
예제 #7
0
파일: Page.cs 프로젝트: zzekikaya/Weapsy
        public void UpdateModule(UpdatePageModuleDetails cmd, IValidator <UpdatePageModuleDetails> validator)
        {
            validator.ValidateCommand(cmd);

            var pageModule = PageModules.FirstOrDefault(x => x.ModuleId == cmd.ModuleId);

            if (pageModule == null || pageModule.Status == PageModuleStatus.Deleted)
            {
                throw new Exception("Page module not found.");
            }

            AddEvent(new PageModuleDetailsUpdated
            {
                AggregateRootId         = Id,
                SiteId                  = SiteId,
                PageId                  = cmd.PageId,
                PageModuleId            = pageModule.Id,
                Title                   = cmd.Title,
                InheritPermissions      = cmd.InheritPermissions,
                PageModuleLocalisations = cmd.PageModuleLocalisations,
                PageModulePermissions   = cmd.PageModulePermissions
            });
        }
예제 #8
0
파일: Page.cs 프로젝트: zzekikaya/Weapsy
        private void Apply(PageModuleRemoved @event)
        {
            var pageModule = PageModules.FirstOrDefault(x => x.Id == @event.PageModuleId);

            pageModule?.Delete();
        }
예제 #9
0
파일: Page.cs 프로젝트: zzekikaya/Weapsy
        private void Apply(PageModulePermissionsSet @event)
        {
            var pageModule = PageModules.FirstOrDefault(x => x.Id == @event.PageModuleId);

            pageModule?.SetPermissions(@event.PageModulePermissions);
        }
예제 #10
0
파일: Page.cs 프로젝트: zzekikaya/Weapsy
        private void Apply(PageModuleDetailsUpdated @event)
        {
            var pageModule = PageModules.FirstOrDefault(x => x.Id == @event.PageModuleId);

            pageModule?.UpdateDetails(@event);
        }