コード例 #1
0
ファイル: Story.cs プロジェクト: szymczakk/dotnetomaniak
        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);
        }
コード例 #2
0
ファイル: Story.cs プロジェクト: ptrstpp950/dotnetomaniak
        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);
        }
コード例 #3
0
ファイル: Story.cs プロジェクト: szymczakk/dotnetomaniak
        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);
        }
コード例 #4
0
ファイル: Story.cs プロジェクト: ptrstpp950/dotnetomaniak
        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);
        }
コード例 #5
0
ファイル: ThumbsUpHandler.cs プロジェクト: DamianFlynn/b-kind
        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);
        }