public void ViewArticle(int visitorId, int articleId) { Guard.IntMoreThanZero(visitorId, "userId"); Guard.IntMoreThanZero(articleId, "articleId"); Visitor visitor = this._unitOfWork.VisitorRepository.GetById(visitorId, v => v.ArticleVisitors); if (visitor == null) { throw new VisitorNotFoundException(String.Format("Visitor with ID '{0}' was not found.", visitorId)); } ArticleVisitor articleVisitor = visitor.ArticleVisitors.FirstOrDefault(x => x.ArticleId == articleId); if (articleVisitor == null) { Article article = this._unitOfWork.ArticleRepository.GetById(articleId); if (article == null) { throw new ArticleNotFoundException(String.Format("Article with ID '{0}' was not found.", articleId)); } articleVisitor = new ArticleVisitor { ArticleId = article.ArticleId }; visitor.ArticleVisitors.Add(articleVisitor); } articleVisitor.LastViewDate = DateTime.Now; this._unitOfWork.VisitorRepository.Update(visitor); this._unitOfWork.Save(); }
public async Task <IActionResult> ArticleViews(int articleId) { string currentUserId = await OnGetSesstion(); if (currentUserId != null) { var userPersonalRow = _context.UserPersonalDetail.Where(a => a.UserId == currentUserId).SingleOrDefault(); if (userPersonalRow == null) { return(RedirectToAction("CompleteProfile", "Home")); } //If Registered Visitor Counter ArticleVisitor isVisited = _context.ArticleVisitor.Where(qv => qv.UserId == currentUserId && qv.ArticleId == articleId).SingleOrDefault(); if (isVisited == null) { _context.ArticleVisitor.Add(new ArticleVisitor { ArticleId = articleId, UserId = currentUserId, IsLoggedIn = true, UserIp = null }); _context.SaveChanges(); } var articleTags = _context.ArticleTag.Where(at => at.ArticleId == articleId).ToList(); foreach (var tag in articleTags) { var userInterestedTag = _context.AIUserInterest.Where(uit => uit.TagId == tag.TagId).SingleOrDefault(); if (userInterestedTag == null) { AIUserInterest userLikeTag = new AIUserInterest { TagId = tag.TagId, UserId = currentUserId, Count = 1 }; _context.AIUserInterest.Add(userLikeTag); } else { userInterestedTag.Count = userInterestedTag.Count + 1; } _context.SaveChanges(); } } else {//If Anonomus Visitor Counter string currentUserIp = _accessor.HttpContext.Connection.RemoteIpAddress.ToString(); ArticleVisitor isVisited = _context.ArticleVisitor.Where(qv => qv.UserIp == currentUserIp && qv.ArticleId == articleId).SingleOrDefault(); if (isVisited == null) { _context.ArticleVisitor.Add(new ArticleVisitor { ArticleId = articleId, UserId = null, IsLoggedIn = false, UserIp = currentUserIp }); _context.SaveChanges(); } }//If Anonomus Visitor Ends Here return(Ok()); }