public async Task <ActionResult> AddLike(int id)
        {
            var db      = new ArticlesDb();
            var likeDb  = new LikesDb();
            var article = db.Articles.Find(id);
            var userId  = HttpContext.User.Identity.GetUserId();
            var like    = likeDb.Likes.Where(x => x.UserId == userId && x.ArticleId == article.Id).FirstOrDefault();

            //user already liked this so remove like
            if (like != null)
            {
                if (article != null)
                {
                    likeDb.Likes.Remove(like);
                    await likeDb.SaveChangesAsync();

                    article.Likes = await GetArticleLikes(id);

                    await db.SaveChangesAsync();
                }
            }
            else
            {
                if (article != null)
                {
                    like           = new Like();
                    like.ArticleId = article.Id;
                    like.UserId    = userId;
                    likeDb.Likes.Add(like);
                    await likeDb.SaveChangesAsync();

                    article.Likes = await GetArticleLikes(id);

                    await db.SaveChangesAsync();
                }
            }

            return(PartialView("~/Views/Articles/Partials/LikesCount.cshtml", article));
        }
        public async Task <ActionResult> AddComment(Comment comment)
        {
            var articlesDb = new ArticlesDb();
            var article    = await articlesDb.Articles.FindAsync(comment.ArticleId);

            var commentsDb = new CommentsDb();

            comment.PublishedDate = DateTime.Now;
            comment.UserName      = HttpContext.User.Identity.Name;
            commentsDb.Comments.Add(comment);

            await articlesDb.SaveChangesAsync();

            await commentsDb.SaveChangesAsync();

            return(RedirectToAction("ArticleDetail", new { articleId = article.Id }));
        }