public void RemoveVotes(string username, string upvotableEntityId, IUpvotablesService entityService) { IUpvotableEntity upvotable = entityService.ResolveUpvotableEntity(upvotableEntityId); var user = _usersService.GetByUsername(username); if (user == null) { return; } IEnumerable <Upvote> votes = null; votes = _dbContext.Upvotes.Where(uv => uv.VotingBoxId == upvotable.VotingBoxId && uv.UserId == user.UserId).ToList(); if (votes != null) { _dbContext.Upvotes.RemoveRange(votes); _dbContext.SaveChanges(); } }
public void Vote(string username, string upvotableEntityId, IUpvotablesService entityService, bool isDownvote) { IUpvotableEntity upvotable = entityService.ResolveUpvotableEntity(upvotableEntityId); var user = _usersService.GetByUsername(username); if (user == null) { return; } int voteWeight = isDownvote ? -1 : 1; Upvote entity = new Upvote(); entity.UserId = user.UserId; entity.Weight = voteWeight; var votes = _dbContext.Upvotes.Where(uv => uv.VotingBoxId == upvotable.VotingBoxId && uv.UserId == user.UserId).ToList(); if (votes == null) { entity.VotingBoxId = upvotable.VotingBoxId; _dbContext.Upvotes.Add(entity); _dbContext.SaveChanges(); return; } if (votes != null && votes.Count == 1 && votes.First().Weight == voteWeight) { return; } else { _dbContext.RemoveRange(votes); entity.VotingBoxId = upvotable.VotingBoxId; _dbContext.Upvotes.Add(entity); _dbContext.SaveChanges(); } }