Exemplo n.º 1
0
        public IActionResult Vote(CreateVoteDto dto)
        {
            var state   = (VoteState)Enum.Parse(typeof(VoteState), dto.VoteState);
            var created = this.voteService.Vote(dto.PostId, state);

            return(this.apiResultService.Created(OctopostEntityName.Vote, created));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Vote(CreateVoteDto input)
        {
            var token  = GetToken();
            var userId = LoginHelper.GetClaim(token, "UserId");

            if (input.UserId != Guid.Parse(userId))
            {
                return(Unauthorized());
            }

            var result = await _postAppService.Vote(input);

            var success = result.Id != Guid.Empty;

            return(Ok(new { success }));
        }
Exemplo n.º 3
0
        public async Task <PostVote> Vote(CreateVoteDto input)
        {
            var post = await _postRepository.GetAll().Include(x => x.User)
                       .Where(x => x.IsDeleted == false && x.Id == input.PostId)
                       .Include(x => x.Votes).FirstOrDefaultAsync();

            var postOwner = await _userRepository.GetByIdAsync(post.User.Id);

            var isExist = await _postVoteRepository.GetAll()
                          .FirstOrDefaultAsync(x =>
                                               x.IsDeleted == false && x.UserId == input.UserId && x.PostId == input.PostId);

            if (isExist != null)
            {
                if (input.Value == 0)
                {
                    await _postVoteRepository.DeleteAsync(isExist);

                    if (isExist.Value == 1)
                    {
                        postOwner.SPoint -= 1;
                    }
                    else
                    {
                        postOwner.SPoint += 1;
                    }

                    await _userRepository.UpdateAsync(postOwner);

                    return(isExist);
                }
                isExist.Value = input.Value;
                await _postVoteRepository.UpdateAsync(isExist);

                if (input.Value == 1)
                {
                    postOwner.SPoint += 1;
                }
                else
                {
                    postOwner.SPoint -= 1;
                }

                await _userRepository.UpdateAsync(postOwner);

                return(isExist);
            }

            var model = new PostVote
            {
                PostId = input.PostId,
                UserId = input.UserId,
                Value  = input.Value
            };

            await _postVoteRepository.AddAsync(model);

            if (input.Value == 1)
            {
                postOwner.SPoint += 1;
            }
            else
            {
                postOwner.SPoint -= 1;
            }

            await _userRepository.UpdateAsync(postOwner);

            // notificaiton
            var user = await _userRepository.GetByIdAsync(input.UserId);

            var community = await _communityRepository.GetByIdAsync(post.CommunityId);

            if (post.UserId != user.Id)
            {
                var notify = new Notification
                {
                    TargetId    = input.PostId,
                    OwnerUserId = post.UserId,
                    TargetName  = community.Slug + "/" + post.Slug,
                    Type        = NotifyContentType.PostVote,
                    Content     = user.Username + " " + "sallamanı oyladı",
                    ImgPath     = user.ProfileImagePath
                };
                await _notificationRepository.AddAsync(notify);
            }

            if (post.UserId != user.Id)
            {
                //email send
                //var voteCount = post.Votes.Count(x => x.IsDeleted == false);
                var subject = "Sallaman oylanıyor.";
                var url     = "https://saalla.com/" + community.Slug + "/" + post.Slug;
                await _emailSender.SendEmail(post.User.EmailAddress, subject, user.Username + " kişisi Sallamana oy verdi :" + url);
            }
            return(model);
        }