コード例 #1
0
        public async Task <bool> AddVote(BrainstormVote model)
        {
            FilterDefinition <BrainstormIdea> filter = Builders <BrainstormIdea> .Filter.Where(x => x.Id == model.IdeaId);

            UpdateDefinition <BrainstormIdea> add = Builders <BrainstormIdea> .Update.AddToSet(c => c.Votes, model);

            UpdateResult result = await GetCollection <BrainstormIdea>().UpdateOneAsync(filter, add);

            return(result.IsAcknowledged && result.MatchedCount > 0);
        }
コード例 #2
0
        public async Task <bool> UpdateVote(BrainstormVote model)
        {
            FilterDefinition <BrainstormIdea> filter = Builders <BrainstormIdea> .Filter.And(
                Builders <BrainstormIdea> .Filter.Eq(x => x.Id, model.IdeaId),
                Builders <BrainstormIdea> .Filter.ElemMatch(x => x.Votes, x => x.UserId == model.UserId));

            UpdateDefinition <BrainstormIdea> update = Builders <BrainstormIdea> .Update.Set(c => c.Votes[-1].VoteValue, model.VoteValue);

            UpdateResult result = await GetCollection <BrainstormIdea>().UpdateOneAsync(filter, update);

            return(result.IsAcknowledged && result.ModifiedCount > 0);
        }
コード例 #3
0
        public OperationResultVo Vote(Guid userId, Guid ideaId, VoteValue vote)
        {
            try
            {
                BrainstormVote model;
                BrainstormIdea idea = brainstormDomainService.GetIdea(ideaId);

                BrainstormVote existing = idea.Votes.FirstOrDefault(x => x.UserId == userId);
                if (existing != null)
                {
                    model           = existing;
                    model.VoteValue = vote;
                }
                else
                {
                    model = new BrainstormVote
                    {
                        UserId    = userId,
                        IdeaId    = ideaId,
                        SessionId = idea.SessionId,
                        VoteValue = vote
                    };
                }

                if (model.Id == Guid.Empty)
                {
                    brainstormDomainService.AddVote(model);
                }
                else
                {
                    brainstormDomainService.UpdateVote(model);
                }

                unitOfWork.Commit();

                return(new OperationResultVo <Guid>(model.Id));
            }
            catch (Exception ex)
            {
                return(new OperationResultVo <Guid>(ex.Message));
            }
        }
コード例 #4
0
 public void UpdateVote(BrainstormVote model)
 {
     repository.UpdateVote(model);
 }
コード例 #5
0
 public void AddVote(BrainstormVote model)
 {
     repository.AddVote(model);
 }