public async Task <object> Get(string templateName, string articleId) { var template = await GetTemplate(templateName); if (template == null || !Guid.TryParse(articleId, out var id)) { return(NotFound()); } var item = await _contentsService.All().Include(c => c.ContentCaches) .FirstOrDefaultAsync(c => c.Id == id); if (item == null) { return(NotFound()); } var cache = item.ContentCaches.FirstOrDefault(c => c.TemplateId == template.Id); if (cache != null) { return(Redirect($"/{cache.Content}")); } var cacheContent = $"{HtmlPrefix(item.Name)}\n{template.ArticlePrefix}\n{item.Data}\n{template.ArticleSurfix}\n{HtmlSurfix}\n"; var cacheId = await _filesService.Add(_resourcesGroup, cacheContent, "html"); cache = new ContentCache { ContentId = item.Id, TemplateId = template.Id, Content = cacheId, Updated = DateTime.Now }; item.ContentCaches ??= new List <ContentCache>(); item.ContentCaches.Add(cache); await _contentsService.Update(item); return(Content(cacheContent, "text/html", Encoding.Default)); }
private async Task <FilesReply> UpdateFolderVersionsCache() { var folders = await GetFoldersInternal(); var version = await _contentService.Add(_cachesGroup, fs => { using (var s = new CodedOutputStream(fs)) { folders.WriteTo(s); } return(Task.FromResult(true)); }, "bin"); await _cache.SetStringAsync(FoldersVersionCacheKey, version); return(folders); }