Example #1
0
        public override CandidateInHistoryDictionary GetCandidatesHistoryInfo(Empty input)
        {
            var result = new CandidateInHistoryDictionary();

            var candidates = State.CandidatesField.Value;

            result.CandidatesNumber = candidates.PublicKeys.Count;

            foreach (var candidate in candidates.PublicKeys)
            {
                var historyInformation = State.HistoryMap[candidate.ToStringValue()];
                if (historyInformation == null)
                {
                    return(result);
                }

                var tickets = State.TicketsMap[candidate.ToStringValue()];
                if (tickets == null)
                {
                    return(result);
                }

                historyInformation.CurrentVotesNumber = tickets.ObtainedTickets;
                result.Maps.Add(candidate, historyInformation);
            }

            return(result);
        }
Example #2
0
        public override CandidateInHistoryDictionary GetPageableCandidatesHistoryInfo(PageInfo input)
        {
            var startIndex = input.Start;
            var length     = input.Length;
            var result     = new CandidateInHistoryDictionary();

            var candidates = State.CandidatesField.Value;

            result.CandidatesNumber = candidates.PublicKeys.Count;

            var take = Math.Min(result.CandidatesNumber - startIndex, length);

            foreach (var candidate in candidates.PublicKeys.Skip(startIndex).Take(take))
            {
                var historyInformation = State.HistoryMap[candidate.ToStringValue()];
                if (historyInformation == null)
                {
                    result.Maps.Add(candidate, new CandidateInHistory());
                    return(result);
                }

                var tickets = State.TicketsMap[candidate.ToStringValue()] ?? new Tickets
                {
                    PublicKey       = candidate,
                    ObtainedTickets = 0
                };

                historyInformation.CurrentVotesNumber = tickets.ObtainedTickets;
                result.Maps.Add(candidate, historyInformation);
            }

            return(result);
        }