Пример #1
0
        public void Close()
        {
            var calculator = ResultsCalculator.Calculate(_evaluation.Decisions);

            if (calculator.GetForgiveVotes() > calculator.GetPunishVotes())
            {
                // todo: forgive
                _evaluation.Match.Status = Status.Active;
                foreach (var user in _evaluation.Match.MatchUsers)
                {
                    user.SetFreeze(false);
                }
            }
            else if (calculator.GetForgiveVotes() <= calculator.GetPunishVotes())
            {
                //todo: punish
            }

            _evaluation.Complete = true;

            _evaluation.Decisions
            //.Where(x => x.Vote == VoteResults.Winner())
            .Select(x => x.User)
            .ToList()
            .ForEach(x => { x.Reputation += 2; });
        }
Пример #2
0
        // POST api/values
        public Result [] Post([FromBody] string [] searchArguments)
        {
            SearchEngineManager engines = new SearchEngineManager();
            ResultsCalculator   results = new ResultsCalculator(engines, searchArguments);
            ResultsOutputter    output  = new ResultsOutputter(results);

            return(output.GetResults());
        }
Пример #3
0
        static void Main(string[] searchArguments)
        {
            SearchEngineManager engines = new SearchEngineManager();
            ResultsCalculator   results = new ResultsCalculator(engines, searchArguments);
            ResultsOutputter    output  = new ResultsOutputter(results);

            output.PrintWinnersToConsole();
        }
        public async Task <Unit> Handle(CloseCompleteEvaluationCommand request,
                                        CancellationToken cancellationToken)
        {
            var evaluation = request.Evaluation;

            if (evaluation.Decisions.Count <= 0)
            {
                evaluation.Expiry = DateTime.Now.AddDays(1);
                await _ctx.SaveChangesAsync(cancellationToken);

                return(new Unit());
            }

            var host     = evaluation.Match.GetHost();
            var opponent = evaluation.Match.GetOpponent();

            var calcResult = ResultsCalculator.Calculate(evaluation.Decisions);
            var winner     = calcResult.GetWinner();

            if (winner == Winner.Draw)
            {
                host.SetDraw(10).AwardExp(10);
                opponent.SetDraw(10).AwardExp(10);
            }
            else if (winner == Winner.Host)
            {
                host.SetWinner(10).AwardExp(12);
                opponent.SetLoser(10).AwardExp(8);
            }
            else if (winner == Winner.Opponent)
            {
                host.SetLoser(10).AwardExp(8);
                opponent.SetWinner(10).AwardExp(12);
            }

            host.User.Hosting--;
            opponent.User.Joined--;

            evaluation.Complete = true;

            evaluation.Match.Status     = Status.Complete;
            evaluation.Match.LastUpdate = DateTime.Now;
            evaluation.Match.Finished   = evaluation.Match.LastUpdate.GetFinishTime();

            evaluation.Decisions
            .Select(x => x.User)
            .ToList()
            .ForEach(user =>
            {
                user.Reputation += 2;
                user.AwardExp(2);
            });

            await _ctx.SaveChangesAsync(cancellationToken);

            return(new Unit());
        }
        public void RecognizesDraw()
        {
            var decisions = new List <Decision>
            {
                new Decision {
                    Vote = 0, Weight = 1
                },
                new Decision {
                    Vote = 1, Weight = 1
                },
            };

            var resultsCalculator = ResultsCalculator.Calculate(decisions);

            Assert.Equal(Winner.Draw, resultsCalculator.GetWinner());
        }
        public async Task <DecisionResultViewModel> Handle(GetVoteResultsQuery request,
                                                           CancellationToken cancellationToken)
        {
            var decisions = await _ctx.Decisions
                            .Where(x => x.EvaluationId == request.EvaluationId)
                            .ToListAsync(cancellationToken: cancellationToken);

            var results = ResultsCalculator.Calculate(decisions);

            return(new DecisionResultViewModel
            {
                HostVotes = results.GetHostVotes(),
                HostPercent = results.GetHostPercent(),
                OpponentVotes = results.GetOpponentVotes(),
                OpponentPercent = results.GetOpponentPercent(),
                Winner = (int)results.GetWinner(),
            });
        }
Пример #7
0
        public void Close()
        {
            var host     = _evaluation.Match.GetHost();
            var opponent = _evaluation.Match.GetOpponent();

            var winner = ResultsCalculator.Calculate(_evaluation.Decisions).GetWinner();

            if (winner == Winner.Draw)
            {
                host.SetDraw(10).AwardExp(10);
                opponent.SetDraw(10).AwardExp(10);
            }
            else if (winner == Winner.Host)
            {
                host.SetWinnerAndLock(10).AwardExp(12);
                opponent.SetLoserAndLock(10).AwardExp(8);
            }
            else if (winner == Winner.Opponent)
            {
                host.SetLoserAndLock(10).AwardExp(8);
                opponent.SetWinnerAndLock(10).AwardExp(12);
            }

            host.User.Hosting--;
            opponent.User.Joined--;

            _evaluation.Complete = true;

            _evaluation.Match.Status     = Status.Complete;
            _evaluation.Match.LastUpdate = DateTime.Now;
            _evaluation.Match.Finished   = _evaluation.Match.LastUpdate.GetFinishTime();

            _evaluation.Decisions
            .Select(x => x.User)
            .ToList()
            .ForEach(user =>
            {
                user.Reputation += 2;
                user.AwardExp(2);
            });
        }
        public void CountsWinningPercentageForOpponent()
        {
            var resultsCalculator = ResultsCalculator.Calculate(_decisions);

            Assert.Equal(67, resultsCalculator.GetOpponentPercent());
        }
        public void CountsWinningPercentageForHost()
        {
            var resultsCalculator = ResultsCalculator.Calculate(_decisions);

            Assert.Equal(33, resultsCalculator.GetHostPercent());
        }
        public void CountsNumberOfVotesForOpponent()
        {
            var resultsCalculator = ResultsCalculator.Calculate(_decisions);

            Assert.Equal(2, resultsCalculator.GetOpponentVotes());
        }