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)); }
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 })); }
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); }