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); }
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); }