private async Task <PageVersionBlockRenderDetails> MapAsync( PageVersionBlock pageVersionBlock, string blockTypeFileName, PublishStatusQuery publishStatus, IExecutionContext executionContext ) { var blockTypeQuery = new GetPageBlockTypeSummaryByIdQuery(pageVersionBlock.PageBlockTypeId); var blockType = await _queryExecutor.ExecuteAsync(blockTypeQuery, executionContext); EntityNotFoundException.ThrowIfNull(blockType, pageVersionBlock.PageBlockTypeId); var result = new PageVersionBlockRenderDetails(); result.PageVersionBlockId = pageVersionBlock.PageVersionBlockId; result.BlockType = blockType; result.DisplayModel = await _pageVersionBlockModelMapper.MapDisplayModelAsync( blockTypeFileName, pageVersionBlock, publishStatus, executionContext ); return(result); }
private IQueryable <int> GetOrderedBlockIds(PageVersionBlock pageVersionBlock) { return(_dbContext .PageVersionBlocks .AsNoTracking() .Where(m => m.PageVersionId == pageVersionBlock.PageVersionId && m.PageTemplateRegionId == pageVersionBlock.PageTemplateRegionId) .OrderBy(m => m.Ordering) .Select(m => m.PageVersionBlockId)); }
private Task OnTransactionComplete(PageVersion pageVersion, PageVersionBlock newBlock) { _pageCache.Clear(pageVersion.PageId); return(_messageAggregator.PublishAsync(new PageVersionBlockAddedMessage() { PageId = pageVersion.PageId, PageVersionBlockId = newBlock.PageVersionBlockId })); }
static void AssertBlockMatches(PageVersionBlock publishedBlock, PageVersionBlock draftBlock) { draftBlock.Should().NotBeNull(); draftBlock.CreateDate.Should().Be(publishedBlock.CreateDate); draftBlock.Ordering.Should().Be(publishedBlock.Ordering); draftBlock.PageBlockTypeId.Should().Be(publishedBlock.PageBlockTypeId); draftBlock.PageBlockTypeTemplateId.Should().Be(publishedBlock.PageBlockTypeTemplateId); draftBlock.PageTemplateRegionId.Should().Be(publishedBlock.PageTemplateRegionId); draftBlock.SerializedData.Should().Be(publishedBlock.SerializedData); draftBlock.UpdateDate.Should().Be(draftBlock.CreateDate); }
private PageVersionBlockDetails MapPageBlock(PageVersionBlock dbBlock, ICollection <PageBlockTypeSummary> allBlockTypes) { var blockType = allBlockTypes.SingleOrDefault(t => t.PageBlockTypeId == dbBlock.PageBlockTypeId); var block = new PageVersionBlockDetails(); block.BlockType = blockType; block.DataModel = _pageVersionBlockModelMapper.MapDataModel(blockType.FileName, dbBlock); block.PageVersionBlockId = dbBlock.PageVersionBlockId; block.Template = _entityVersionPageBlockMapper.GetCustomTemplate(dbBlock, blockType); return(block); }
private UpdatePageVersionBlockCommand Map(PageVersionBlock pageVersionBlock, string blockTypeFileName) { var result = new UpdatePageVersionBlockCommand() { PageBlockTypeId = pageVersionBlock.PageBlockTypeId, PageBlockTypeTemplateId = pageVersionBlock.PageBlockTypeTemplateId, PageVersionBlockId = pageVersionBlock.PageVersionBlockId }; result.DataModel = _pageVersionBlockModelMapper.MapDataModel(blockTypeFileName, pageVersionBlock); return(result); }
public async Task ExecuteAsync(AddPageVersionBlockCommand command, IExecutionContext executionContext) { var templateRegion = await _dbContext .PageTemplateRegions .FirstOrDefaultAsync(l => l.PageTemplateRegionId == command.PageTemplateRegionId); EntityNotFoundException.ThrowIfNull(templateRegion, command.PageTemplateRegionId); var pageVersion = _dbContext .PageVersions .Include(s => s.PageVersionBlocks) .FirstOrDefault(v => v.PageVersionId == command.PageVersionId); EntityNotFoundException.ThrowIfNull(pageVersion, command.PageVersionId); if (pageVersion.WorkFlowStatusId != (int)WorkFlowStatus.Draft) { throw new NotPermittedException("Page blocks cannot be added unless the page version is in draft status"); } var pageVersionBlocks = pageVersion .PageVersionBlocks .Where(m => m.PageTemplateRegionId == templateRegion.PageTemplateRegionId); PageVersionBlock adjacentItem = null; if (command.AdjacentVersionBlockId.HasValue) { adjacentItem = pageVersionBlocks .SingleOrDefault(m => m.PageVersionBlockId == command.AdjacentVersionBlockId); EntityNotFoundException.ThrowIfNull(adjacentItem, command.AdjacentVersionBlockId); } var newBlock = new PageVersionBlock(); newBlock.PageTemplateRegion = templateRegion; await _pageBlockCommandHelper.UpdateModelAsync(command, newBlock); newBlock.PageVersion = pageVersion; newBlock.UpdateDate = executionContext.ExecutionDate; _entityAuditHelper.SetCreated(newBlock, executionContext); _entityOrderableHelper.SetOrderingForInsert(pageVersionBlocks, newBlock, command.InsertMode, adjacentItem); _dbContext.PageVersionBlocks.Add(newBlock); using (var scope = _transactionScopeFactory.Create(_dbContext)) { await _dbContext.SaveChangesAsync(); var dependencyCommand = new UpdateUnstructuredDataDependenciesCommand( PageVersionBlockEntityDefinition.DefinitionCode, newBlock.PageVersionBlockId, command.DataModel); await _commandExecutor.ExecuteAsync(dependencyCommand, executionContext); scope.QueueCompletionTask(() => OnTransactionComplete(pageVersion, newBlock)); await scope.CompleteAsync(); } command.OutputPageBlockId = newBlock.PageVersionBlockId; }