コード例 #1
0
            public async Task <Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                var article = await _articleContext.Articles.FindAsync(request.Id);

                var user = await _articleContext.Users.SingleOrDefaultAsync(x => x.UserName == _contextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.Name));

                var like = await _articleContext.UserArticles.SingleOrDefaultAsync(x => x.ArticleId == article.Id && x.UserId == user.Id);

                if (like != null)
                {
                    throw new Exception("beğendin");
                }

                like = new UserArticle {
                    User    = user,
                    Article = article,
                    isHost  = false
                };

                _articleContext.UserArticles.Add(like);
                var success = await _articleContext.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }
                throw new Exception("--");
            }
コード例 #2
0
            public async Task <Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                var article = await _context.Articles.FindAsync(request.Id);

                if (article == null)
                {
                    throw new RestException(HttpStatusCode.NotFound, new { Article = "Article introuvable" });
                }

                var user = await _context.Users.SingleOrDefaultAsync(x => x.UserName == _userAccessor.GetCurrentUsername());

                var attendance = await _context.UserArticles.SingleOrDefaultAsync(x => x.ArticleId == article.Id && x.AppUserId == user.Id);

                if (attendance == null)
                {
                    throw new RestException(HttpStatusCode.BadRequest, new { Attendance = "déjà associé(e) à cet article" });
                }

                attendance = new UserArticle
                {
                    Article    = article,
                    AppUser    = user,
                    IsHost     = false,
                    DateJoined = DateTime.Now
                };

                var success = await _context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }

                throw new Exception("Erreur survenue pendant la sauvegarde des données");
            }
コード例 #3
0
        public async Task AddArticlesAsync(int userId, int tagId, List <ArticleDto> allArticles)
        {
            foreach (ArticleDto article in allArticles)
            {
                Article articleToAdd = _mapper.Map <Article>(article);
                if (!string.IsNullOrEmpty(articleToAdd.Snippet))
                {
                    int articleAddedId = await _articleAccessor.AddArticlesToArticlesTableAsync(articleToAdd);

                    if (articleAddedId != 0)
                    {
                        UserArticle userArticle = new UserArticle()
                        {
                            UserId       = userId,
                            ArticleId    = articleAddedId,
                            CreatedDate  = DateTime.Now,
                            IsLiked      = false,
                            IsSaved      = false,
                            IsMarkedRead = false,
                        };
                        await _articleAccessor.AddArticlesToUserTableAsync(userArticle, tagId, userId);
                    }
                }
            }
        }
コード例 #4
0
 //Method to create the Article
 public void CreateArticle(UserArticle article)
 {
     if (article == null)
     {
         throw new ArgumentNullException(nameof(article));
     }
     _context.UserArticles.Add(article);
 }
コード例 #5
0
 public LeaderBoardColumnCard(
     RankData column,
     User user,
     UserArticle userArticle,
     int index = 0,
     GestureTapCallback onPress = null,
     Key key = null
     ) : base(key: key)
 {
     this.column      = column;
     this.user        = user;
     this.userArticle = userArticle;
     this.index       = index;
     this.onPress     = onPress;
 }
コード例 #6
0
        public async Task AddArticlesToUserTableAsync(UserArticle userArticle, int tagId, int userId)
        {
            var context = new KnowledgeHubDataBaseContext();

            //context.ChangeTracker.AutoDetectChangesEnabled = false;
            try
            {
                userArticle.TagId = context.UserTag.FirstOrDefault(t => t.UserId == userId && t.TagId == tagId).Id;
                context.UserArticle.Add(userArticle);
                await context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                return;
            }
        }
コード例 #7
0
        public async Task <bool> UpdateUserArticle(UserArticleDto userArticleDto)
        {
            UserArticle userArticle = this.knowledgeHubDataBaseContext.UserArticle.FirstOrDefault(p => p.Id == userArticleDto.Id);

            if (userArticle != null)
            {
                userArticle.IsSaved      = userArticleDto.IsSaved;
                userArticle.IsMarkedRead = userArticleDto.IsMarkedRead;
                userArticle.IsLiked      = userArticleDto.IsLiked;
                if (userArticleDto.IsLiked)
                {
                    this.knowledgeHubDataBaseContext.Article.FirstOrDefault(p => p.Id == userArticleDto.ArticleId).Likes++;
                }
                return(await this.knowledgeHubDataBaseContext.SaveChangesAsync() != 0);
            }
            return(false);
        }
コード例 #8
0
        public override async Task <GetPrivateUserModel> Handle(SaveArticleToUserCommand request, CancellationToken cancellationToken)
        {
            var userId = _currentUserService.UserId;
            var user   = await UnitOfWork.Users.GetEntityAsync(userId);

            if (user == null)
            {
                throw new UnauthorizedException();
            }

            var article = await UnitOfWork.Articles.GetEntityAsync(request.ArticleId);

            if (article == null)
            {
                throw new NotFoundException();
            }

            bool alreadySaved = article.UsersSaved.Where(us => us.UserId == user.Id).Count() > 0;

            // Remove if already saved.
            if (alreadySaved)
            {
                var joinEntity = article.UsersSaved.FirstOrDefault(us => us.UserId == user.Id);
                article.UsersSaved.Remove(joinEntity);
                user.SavedArticles.Remove(joinEntity);

                UnitOfWork.SaveChanges();

                return(Mapper.Map <GetPrivateUserModel>(user));
            }

            // Add relationship.
            var userArticle = new UserArticle {
                Article = article, User = user
            };

            user.SavedArticles.Add(userArticle);
            article.UsersSaved.Add(userArticle);

            UnitOfWork.SaveChanges();

            return(Mapper.Map <GetPrivateUserModel>(user));
        }
コード例 #9
0
        public ActionResult ShowDetail(int id)
        {
            Article article = db.Articles.Where(x => x.Id == id).SingleOrDefault();

            ShowDetailViewModel model = new ShowDetailViewModel();

            model.Id            = article.Id;
            model.CreatedOn     = article.CreatedOn;
            model.Description   = article.Description;
            model.DislikedCount = article.DislikedCount;
            model.HashTags      = article.HashTags;
            model.LikedCount    = article.LikedCount;
            model.OwnUser       = article.OwnUser;
            model.PublishedOn   = article.PublishedOn;
            model.Summary       = article.Summary;
            model.Title         = article.Title;

            if (Session["user_session"] != null)
            {
                User user = Session["user_session"] as User;

                if (user != null)
                {
                    UserArticle userArticle = db.UserArticles.Where(x => x.Article.Id == article.Id && x.User.Id == user.Id).SingleOrDefault();

                    if (userArticle == null)
                    {
                        // Kullanıcı bu yazı ile ilgili bir işlem yapmamıştır.
                        model.IsLiked = null;
                    }
                    else
                    {
                        // Eğer kullanıcı bu yazı ile ilgili bir işlem yapmış ise(like or dislike)
                        model.IsLiked = userArticle.IsLiked;
                    }
                }
            }


            return(View(model));
        }
コード例 #10
0
ファイル: AddArticle.cs プロジェクト: senaerbek/ArticleApp
            public async Task <Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                foreach (var item in request.File)
                {
                    if (item.Length > 0)
                    {
                        using (var stream = new MemoryStream())
                        {
                            await item.CopyToAsync(stream);

                            request.Article.ArticleImage = stream.ToArray();
                        }
                    }
                }

                request.Article.Date = DateTime.Now.ToString();

                _articleContext.Articles.Add(request.Article);

                var user = await _articleContext.Users.SingleOrDefaultAsync(x => x.UserName == _contextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.Name));

                var like = new UserArticle {
                    User    = user,
                    Article = request.Article,
                    isHost  = true
                };

                _articleContext.UserArticles.Add(like);

                var success = await _articleContext.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }
                throw new Exception("eklenemedi");
            }
コード例 #11
0
        public async Task <IActionResult> WriteArticle(UserArticle article)
        {
            string loggedInUserId = _userManager.GetUserId(User);

            article.UserId = loggedInUserId;

            if (article.ArticleId > 0)
            {
                UpdateArticle(article);
            }
            else
            {
                CreateArticle(article);
            }

            if (await SaveChanges())
            {
                return(RedirectToAction("AllArticles"));
            }
            else
            {
                return(View(article));
            }
        }
コード例 #12
0
ファイル: Create.cs プロジェクト: berangeresn/CoopUpAPI
            public async Task <Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                var article = new Article
                {
                    Id          = request.Id,
                    Title       = request.Title,
                    Description = request.Description,
                    Category    = request.Category,
                    Content     = request.Content,
                    Date        = request.Date,
                    Image       = request.Image
                };

                _context.Articles.Add(article);

                var user = await _context.Users.SingleOrDefaultAsync(x => x.UserName == _userAccessor.GetCurrentUsername());

                var attendee = new UserArticle
                {
                    AppUser    = user,
                    Article    = article,
                    IsHost     = true,
                    DateJoined = DateTime.Now
                };

                _context.UserArticles.Add(attendee);

                var success = await _context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }

                throw new Exception("Erreur survenue pendant la création de l'article");
            }
コード例 #13
0
 public void AddUserArticle(UserArticle userArticle)
 {
     GetUserArticles().Add(userArticle);
 }
コード例 #14
0
 //Method to update the Article
 public void UpdateArticle(UserArticle article)
 {
     _context.UserArticles.Update(article);
 }
コード例 #15
0
        // /Article/Like/5?current=false
        // /Article/Like?nid=5&current=false
        public JsonResult Like(int id, bool current)
        {
            MyJsonResult <int, int> result = new MyJsonResult <int, int>();

            if (Session["user_session"] != null)
            {
                User user = Session["user_session"] as User;

                // Kullanıcı giriş yapmış demektir..
                UserArticle user_article = db.UserArticles.Where(x => x.Article.Id == id && x.User.Id == user.Id).FirstOrDefault();

                if (user_article != null)
                {
                    // adam bu makaleye dokunmuş..
                    if (current == true)
                    {
                        // Like edilmiş bir article 'ı like ederek nötr olmak istiyor demektir.
                        // UserArticle verisi silinir ve like count azaltılır.
                        db.UserArticles.Remove(user_article);

                        if (db.SaveChanges() > 0)
                        {
                            Article article = db.Articles.Where(x => x.Id == id).FirstOrDefault();
                            article.LikedCount -= 1;

                            db.SaveChanges();

                            result.Value1 = article.LikedCount;
                            result.Value2 = article.DislikedCount;
                            return(Json(result, JsonRequestBehavior.AllowGet));
                        }
                    }
                    else
                    {
                        // Article disliked'dır. Article like'lanır.
                        // Article like ve dlike count'lar ayarlanır.
                        user_article.IsLiked = true;

                        if (db.SaveChanges() > 0)
                        {
                            Article article = db.Articles.Where(x => x.Id == id).FirstOrDefault();
                            article.LikedCount    += 1;
                            article.DislikedCount -= 1;

                            result.Value1 = article.LikedCount;
                            result.Value2 = article.DislikedCount;
                            return(Json(result, JsonRequestBehavior.AllowGet));
                        }
                    }
                }
                else
                {
                    // Makaleye bu adam ilk defa dokunuyor.
                    user_article         = new UserArticle();
                    user_article.Article = db.Articles.Where(x => x.Id == id).FirstOrDefault();

                    if (user_article.Article == null)
                    {
                        result.HasError = true;
                        result.Error    = "Makale bulunamadı ya da silinmiş.";

                        return(Json(result, JsonRequestBehavior.AllowGet));
                    }

                    user_article.User    = db.Users.Where(x => x.Id == user.Id).SingleOrDefault();
                    user_article.IsLiked = true;

                    db.UserArticles.Add(user_article); // insert ettik. İlk defa like'ladı.

                    if (db.SaveChanges() > 0)
                    {
                        user_article.Article.LikedCount += 1;
                        db.SaveChanges();

                        result.Value1 = user_article.Article.LikedCount;
                        result.Value2 = user_article.Article.DislikedCount;
                        return(Json(result, JsonRequestBehavior.AllowGet));
                    }
                }
            }
            else
            {
                // Giriş yapmadan like olmaz...
                result.HasError = true;
                result.Error    = "Like için giriş yapmalısınız.";
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }