private UpdatePageVersionModuleCommand Map(PageVersionModule pageVersionModule, string moduleTypeFileName)
        {
            var result = Mapper.Map <UpdatePageVersionModuleCommand>(pageVersionModule);

            result.DataModel = _pageVersionModuleModelMapper.MapDataModel(moduleTypeFileName, pageVersionModule);

            return(result);
        }
Exemplo n.º 2
0
 private IQueryable <int> GetOrderedModuleIds(PageVersionModule pageVersionModule)
 {
     return(_dbContext
            .PageVersionModules
            .AsNoTracking()
            .Where(m => m.PageVersionId == pageVersionModule.PageVersionId && m.PageTemplateSectionId == pageVersionModule.PageTemplateSectionId)
            .OrderBy(m => m.Ordering)
            .Select(m => m.PageVersionModuleId));
 }
        private PageVersionModuleDetails MapModule(PageVersionModule dbModule, IEnumerable <PageModuleTypeSummary> allModuleTypes)
        {
            var moduleType = allModuleTypes.SingleOrDefault(t => t.PageModuleTypeId == dbModule.PageModuleTypeId);

            var module = new PageVersionModuleDetails();

            module.ModuleType          = moduleType;
            module.DataModel           = _pageVersionModuleModelMapper.MapDataModel(moduleType.FileName, dbModule);
            module.PageVersionModuleId = dbModule.PageVersionModuleId;
            module.Template            = _entityVersionPageModuleMapper.GetCustomTemplate(dbModule, moduleType);

            return(module);
        }
Exemplo n.º 4
0
        private PageVersionModuleRenderDetails Map(PageVersionModule pageVersionModule, string moduleTypeFileName, WorkFlowStatusQuery workFlowStatus)
        {
            var moduleType = _queryExecutor.GetById <PageModuleTypeSummary>(pageVersionModule.PageModuleTypeId);

            EntityNotFoundException.ThrowIfNull(moduleType, pageVersionModule.PageModuleTypeId);

            var result = new PageVersionModuleRenderDetails();

            result.PageVersionModuleId = pageVersionModule.PageVersionModuleId;
            result.ModuleType          = moduleType;
            result.DisplayModel        = _pageVersionModuleModelMapper.MapDisplayModel(moduleTypeFileName, pageVersionModule, workFlowStatus);

            return(result);
        }
        public async Task ExecuteAsync(AddPageVersionModuleCommand command, IExecutionContext executionContext)
        {
            var templateSectionSection = await _dbContext
                                         .PageTemplateSections
                                         .FirstOrDefaultAsync(l => l.PageTemplateSectionId == command.PageTemplateSectionId);

            EntityNotFoundException.ThrowIfNull(templateSectionSection, command.PageTemplateSectionId);

            var pageVersion = _dbContext
                              .PageVersions
                              .Include(s => s.PageVersionModules)
                              .FirstOrDefault(v => v.PageVersionId == command.PageVersionId);

            EntityNotFoundException.ThrowIfNull(pageVersion, command.PageVersionId);

            if (pageVersion.WorkFlowStatusId != (int)WorkFlowStatus.Draft)
            {
                throw new NotPermittedException("Page modules cannot be added unless the page version is in draft status");
            }

            var pageVersionModules = pageVersion
                                     .PageVersionModules
                                     .Where(m => m.PageTemplateSectionId == templateSectionSection.PageTemplateSectionId);

            PageVersionModule adjacentItem = null;

            if (command.AdjacentVersionModuleId.HasValue)
            {
                adjacentItem = pageVersionModules
                               .SingleOrDefault(m => m.PageVersionModuleId == command.AdjacentVersionModuleId);
                EntityNotFoundException.ThrowIfNull(adjacentItem, command.AdjacentVersionModuleId);
            }

            var newModule = new PageVersionModule();

            newModule.PageTemplateSection = templateSectionSection;

            await _pageModuleCommandHelper.UpdateModelAsync(command, newModule);

            newModule.PageVersion = pageVersion;
            newModule.UpdateDate  = executionContext.ExecutionDate;

            _entityAuditHelper.SetCreated(newModule, executionContext);
            _entityOrderableHelper.SetOrderingForInsert(pageVersionModules, newModule, command.InsertMode, adjacentItem);

            _dbContext.PageVersionModules.Add(newModule);
            using (var scope = _transactionScopeFactory.Create())
            {
                await _dbContext.SaveChangesAsync();

                var dependencyCommand = new UpdateUnstructuredDataDependenciesCommand(
                    PageVersionModuleEntityDefinition.DefinitionCode,
                    newModule.PageVersionModuleId,
                    command.DataModel);

                await _commandExecutor.ExecuteAsync(dependencyCommand);

                scope.Complete();
            }
            _pageCache.Clear(pageVersion.PageId);

            command.OutputPageModuleId = newModule.PageVersionModuleId;

            await _messageAggregator.PublishAsync(new PageVersionModuleAddedMessage()
            {
                PageId = pageVersion.PageId,
                PageVersionModuleId = newModule.PageVersionModuleId
            });
        }