private async Task ProcessPageByIdAsync(string pageId, ExpandoObject dataModel) { await LoggerService.WriteLogMessage($"{DateTime.Now.ToLongTimeString()}: Started precessing of page \"{pageId}\""); var page = await PageModelReaderService.LoadContentByIdAsync(pageId).ConfigureAwait(false); var html = await TemplateService.RenderTemplateAsync(page.Content, page, dataModel); html = await MarkupService.RenderMarkupAsync(html).ConfigureAwait(false); page.Content = html; var template = await TemplateReaderService.LoadContentByIdAsync(page.TemplateId).ConfigureAwait(false); html = await TemplateService.RenderTemplateAsync(template.Template, page, dataModel).ConfigureAwait(false); html = await HtmlMinificationService.CompressHtmlAsync(html).ConfigureAwait(false); var result = new TextContentModel(); result.Id = page.Id; result.ContentRaw = html; await PageModelWriterService.SaveContentAsync(page.Url, result).ConfigureAwait(false); await LoggerService.WriteLogMessage($"{DateTime.Now.ToLongTimeString()}: Finished page precessing \"{pageId}\""); }
public async Task RenderProjectAsync() { await CleanOutputAsync(); var tasksGroupContent = Task.Run(async() => { var dataModel = await DataService.GetDataModelAsync(); var pages = await PageModelReaderService.LoadContentsIdsAsync(); var pageTasks = pages.Select(pageId => ProcessPageByIdAsync(pageId, dataModel)).ToList(); await Task.WhenAll(pageTasks).ConfigureAwait(false); }); var tasksGroupAssets = Task.Run(async() => { var assets = await AssetsReaderService.LoadContentsIdsAsync(); var tasks = assets.Select(CopyAssetByIdAsync).ToList(); await Task.WhenAll(tasks).ConfigureAwait(false); }); await Task.WhenAll(tasksGroupContent, tasksGroupAssets).ConfigureAwait(false); }