public async Task <VoteGetModel> CastVoteAsync(VoteCreateModel voteModel) { var matchedVote = await _voteRepository .GetSingleAsync(v => v.UserId == voteModel.UserId && (v.QuestionId == null || v.QuestionId == voteModel.TargetId) && (v.AnswerId == null || v.AnswerId == voteModel.TargetId) && (v.CommentId == null || v.CommentId == voteModel.TargetId)); if (matchedVote != null) { throw new BusinessException($"User already voted on {voteModel.VoteTarget} on '{matchedVote.CreatedOn}'."); } IVoteable target = await GetVoteableFromRepositoryAsync(voteModel.VoteTarget, voteModel.TargetId); if (target == null) { throw new EntityNotFoundException(voteModel.VoteTarget.ToString(), voteModel.TargetId); } var vote = Vote.CreateVote(voteModel.UserId, target, voteModel.VoteType); target.ApplyVote(vote); await _uow.SaveAsync(); await ChangeCachedVotesSumAfterVoteCast(vote); _eventRegister.RegisterEvent <VoteCast>(new { UserId = vote.UserId, VoteType = vote.VoteType }); return(_mapper.Map <VoteGetModel>(vote)); }
public ActionResult AddVote(VoteModel model) { if (ModelState.IsValid) { VoteInfo voteInfo = new VoteInfo(); voteInfo.Title = model.Title; voteInfo.StartTime = model.StartTime; voteInfo.EndTime = model.EndTime; voteInfo.State = model.State; voteInfo.Type = model.Type; Vote.CreateVote(voteInfo); return(PromptView("投票基本信息添加成功")); } ViewData["referer"] = SiteUtils.GetAdminRefererCookie(); return(View(model)); }
public Vote Build() { if (_question != null) { _target = Vote.CreateVote(_userId, _question, _voteType); } else if (_answer != null) { _target = Vote.CreateVote(_userId, _answer, _voteType); } else { _target = Vote.CreateVote(_userId, _comment, _voteType); } _target.SetProperty( nameof(_target.CreatedOn), _createdOn ?? _target.CreatedOn); return(_target); }