public virtual bool Promote(DateTime at, IUser byUser, string fromIPAddress) { Check.Argument.IsNotInFuture(at, "at"); Check.Argument.IsNotNull(byUser, "byUser"); Check.Argument.IsNotEmpty(fromIPAddress, "fromIPAddress"); if (CanPromote(byUser)) { StoryVote vote = new StoryVote { Story = this, User = (User)byUser, IPAddress = fromIPAddress, Timestamp = at }; StoryVotes.Add(vote); IoC.Resolve <IVoteRepository>().Add(vote); LastActivityAt = at; return(true); } return(false); }
public bool Demote(DateTime at, IUser byUser) { Check.Argument.IsNotNull(byUser, "byUser"); if (CanDemote(byUser)) { var vote = this.GetVote(byUser); this.RemoveVote(vote); StoryVotes.Remove((StoryVote)vote); LastActivityAt = at; return(true); } return(false); }
public virtual bool Demote(DateTime at, IUser byUser) { Check.Argument.IsNotInvalidDate(at, "at"); Check.Argument.IsNotNull(byUser, "byUser"); if (CanDemote(byUser)) { IVoteRepository repository = IoC.Resolve <IVoteRepository>(); StoryVote vote = (StoryVote)repository.FindById(Id, byUser.Id); repository.Remove(vote); StoryVotes.Remove(vote); LastActivityAt = at; return(true); } return(false); }
public bool Promote(DateTime at, IUser byUser, string fromIpAddress) { Check.Argument.IsNotNull(byUser, "byUser"); //Check if user can promote if (CanPromote(byUser)) { //Call extension method AddVote, it will perform all parameters validation checks var vote = this.AddVote(at, byUser, fromIpAddress); //Add created vote to StoryVotes, this should increment votes StoryVotes.Add((StoryVote)vote); LastActivityAt = at; return(true); } return(false); }
public async Task <Response> Handle(ThumbsUpCommand message) { var response = new Response(); var story = await _mediator.Send(new GetStoryQuery(message.Slug)); if (story == null) { return(response.AddError("", "Story not found")); } var storyVote = await _mediator.Send(new GetOneQuery <StoryVotes>(x => x.StoryId == story.Id && x.UserId == message.LoggedUser.Id)); if (storyVote != null) { return(response.AddError("", "Can't vote twice")); } story.ThumbsUp++; var vote = new StoryVotes { StoryId = story.Id, UserId = message.LoggedUser.Id, Voted = DateTime.Now }; _unitOfWork.Update(story); _unitOfWork.Add(vote); try { await _unitOfWork.Commit(); } catch (Exception e) { response.AddError("", e.Unwrap().Message); } return(response); }