Beispiel #1
0
        public void Finish()
        {
            AssertOnGoingVoting();
            var maxVotes = Votes.Select(y => y.Value).Max();

            AssertOnlyOneWinner();
            Winner = Votes.Single(x => x.Value == maxVotes).Key;

            void AssertOnlyOneWinner()
            {
                if (Votes.Count(x => x.Value == maxVotes) != 1)
                {
                    throw new InvalidOperationException("Can't finish voting, only one winner is allowed");
                }
            }
        }
        public JudmentDocument ToJudmentDocument()
        {
            var judmentDocument = new JudmentDocument
                                  (
                ID,
                ProcessNumber,
                JudmentText.Text.Clean(),
                DecisionText == null ? null : DecisionText.Text.Clean(),
                new List <Party>(Parties.Select(x => new PartyModel(x.ID, x.Name, x.Type).ToParty())),
                new ReportModel(Report.ID, Report.Reporter, Report.Text.Clean()).ToReportText(),
                new Minister(0, Report.Reporter),
                Report.Reporter,
                new List <Vote>(Votes.Select(x => new VoteModel(x.ID, x.Text.Clean()).ToVote())),
                string.Join(" ", RawText.Select(x => x.Clean()).ToArray())
                                  );

            judmentDocument.Parties.Select(x => x.JudmentDocument = new JudmentDocument(judmentDocument)).ToList();
            judmentDocument.Votes.Select(x => x.JudmentDocument   = new JudmentDocument(judmentDocument)).ToList();

            return(judmentDocument);
        }
Beispiel #3
0
 public int CalculateScore()
 {
     return(Votes?.Select(v => v.Type).Cast <int>().Sum() ?? 0);
 }