예제 #1
0
 public override Int64Value GetCalculateVoteWeight(VoteInformation input)
 {
     return(new Int64Value
     {
         Value = GetVotesWeight(input.Amount, input.LockTime)
     });
 }
예제 #2
0
        public IActionResult ElectionCard(string tickets)
        {
            var encTickets      = Convert.FromBase64String(tickets);
            var protector       = dataprotection.CreateProtector("EVSKeyExchange");
            var plainSerTickets = Encoding.UTF8.GetString(protector.Unprotect(encTickets));
            var ticketList      = JsonSerializer.Deserialize <List <VoteTicket> >(plainSerTickets);

            string d;

            lock (configuration)
            {
                d = configuration.Get(HomeController.ESElectionConfigurationKey);
            }

            var electionDescription = JsonSerializer.Deserialize <ElectionGuard.ElectionDescription>(d);
            var electionmap         = electionDescription.contests.ToDictionary(v => v.object_id);
            var elections2Send      = new List <string>();
            var usedTickets         = new List <VoteTicket>();
            var availableTickets    = new List <VoteTicket>();

            // Check used tickets
            foreach (var ticket in ticketList)
            {
                if (!electionmap.ContainsKey(ticket.ElectionId))
                {
                    throw new Exception("Invalid state in ElectionCard generation (ticket referring to non-existing election)");
                }

                elections2Send.Add(ticket.ElectionId);
                if (ticketsDb.Get(ticket.HashId) != null)
                {
                    usedTickets.Add(ticket);
                }
                else
                {
                    availableTickets.Add(ticket);
                }
            }
            electionDescription.contests = electionDescription.contests.Where(c => elections2Send.Contains(c.object_id)).ToArray();
            var cardData = new VoteInformation()
            {
                ElectionDescription = electionDescription,
                AvailableTickets    = availableTickets,
                UsedTickets         = usedTickets
            };

            return(View((tickets, cardData)));
        }