/// <summary> /// 記事表示用のVMを生成するメソッド /// </summary> /// <param name="articleId"></param> /// <returns></returns> private async Task<ViewArticleViewModel> getArticleViewModel(string articleId) { ApplicationDbContext context = HttpContext.GetOwinContext().Get<ApplicationDbContext>(); var article = await context.Articles.FindAsync(articleId); if (article == null) return null; await context.Entry(article).Collection(c=>c.Tags).LoadAsync(); BlobStorageConnection bConnection = new BlobStorageConnection(); TableStorageConnection tConnection = new TableStorageConnection(); ArticleBodyTableManager manager=new ArticleBodyTableManager(bConnection); ArticleThumbnailManager thumbnail=new ArticleThumbnailManager(bConnection); LabelTableManager ltm=new LabelTableManager(tConnection); ArticleCommentTableManager actm=new ArticleCommentTableManager(tConnection); var author = await HttpContext.GetOwinContext() .GetUserManager<ApplicationUserManager>() .FindByNameAsync(article.AuthorID); if (article.IsDraft) { if (article.AuthorID != User.Identity.Name) return null; } else { article.PageView++; } await context.SaveChangesAsync(); IGravatarLoader gLoader = new BasicGravatarLoader(author.Email); int commentCount = 0; string commentsAsJson = actm.GetCommentsAsJson(articleId, out commentCount); int count = 0; return new ViewArticleViewModel() { ArticleId = articleId, Author=author.NickName, Author_ID=author.UniqueId, Author_IconTag=gLoader.GetIconTag(50), PageView=article.PageView, Title = article.Title, Content =await manager.GetArticleBody(article.ArticleModelId), LabelInfo=ltm.GetLabelsJson(articleId), Tags =await getArticleTagModels(article), LabelCount = article.LabelCount, Article_Date = article.CreationTime.ToShortDateString(), Article_UpDate = article.UpdateTime.ToShortDateString(), UseThumbnail= thumbnail.CheckThumbnailExist(articleId), CommentInfo=commentsAsJson, CommentCount=commentCount, RelatedArticles=getRelatedArticles(context,0,0,article,3), AuthorsArticles=getUserArticles(context,0,0,article.AuthorID,out count,takeCount: 3,exceptId:article.ArticleModelId), IsPreview=false }; }
public async Task<IHttpActionResult> ArticleRankingJob(CronRequest req) { // if (CronRequest.IsCronRequest(req)) // { var context = Request.GetOwinContext().Get<ApplicationDbContext>(); TableStorageConnection tConnection = new TableStorageConnection(); StatisticsLogModel logModel = StatisticsLogModel.CreateNewModel(); StatisticsLogModel lastLog = context.StatisticsLog.OrderByDescending(f => f.JobTime).Take(1).FirstOrDefault(); context.StatisticsLog.Add(logModel); await context.SaveChangesAsync(); ArticleStatisticsBasicManager asbm=new ArticleStatisticsBasicManager(tConnection); await asbm.InsertArticleLog(context, logModel.Key, lastLog==null?"":lastLog.Key); return Json(true); // } // else // { // return Json(false); // } }