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); }
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); }
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)); } }
public void UpdateVote(BrainstormVote model) { repository.UpdateVote(model); }
public void AddVote(BrainstormVote model) { repository.AddVote(model); }