Exemple #1
0
        public void AddNewPoll(Poll p, List <string> mails)
        {
            foreach (var login in mails)
            {
                if (!String.IsNullOrWhiteSpace(login))
                {
                    var v = database.Voters.Where(x => x.Login == login.Trim()).FirstOrDefault();
                    if (v != null)
                    {
                        p.Voters.Add(v);
                    }
                }
            }

            var timeToEnd = p.EndDate - DateTime.Now;

            if (timeToEnd <= TimeSpan.Zero)
            {
                return;
            }
            else
            {
                var timer = new System.Timers.Timer(Convert.ToInt64(timeToEnd.TotalMilliseconds));
                pollsTimers.Add(timer);
                timer.AutoReset = false;
                timer.Elapsed  += (sender, e) => PollFinished(p);
                timer.Start();
            }
            AesManaged aes = new AesManaged();

            aes.GenerateIV();
            aes.GenerateKey();
            p.AesIV  = aes.IV;
            p.AesKey = aes.Key;
            EncryptPollKey(p, JsonConvert.DeserializeObject <byte[]>("\"f3em5GbGPXYrSuakqSuxIDk31JKoJQNBDzsHqA60gkE=\""), JsonConvert.DeserializeObject <byte[]>("\"7Pe/z8mtaiUD7wa/Mdw2gw==\""));
            database.Polls.Add(p);
            database.SaveChanges();
        }
Exemple #2
0
        public bool CountVotes(Poll pollToCount)
        {
            var votesToCount = database.Votes.Where(x => x.PollID == pollToCount.ID).ToList();

            foreach (var voter in pollToCount.Voters)
            {
                var encVoter   = Messages.Message.EncryptStringToBytes_Aes(voter.Login, pollToCount.AesKey, pollToCount.AesIV);
                var voterVotes = votesToCount.Where(x => x.EncryptedVoter.SequenceEqual(encVoter)).ToList();
                if (voterVotes.Count == 0)
                {
                    continue;
                }
                var        maxDate         = voterVotes.Max(x => x.VoteTime);
                var        vote            = votesToCount.Where(x => x.VoteTime == maxDate).FirstOrDefault();
                var        choiceStr       = Messages.Message.DecryptStringFromBytes_Aes(vote.Choice, pollToCount.AesKey, pollToCount.AesIV);
                var        choice          = (long[])JsonConvert.DeserializeObject <long[]>(choiceStr);
                var        ch              = choice[0];
                var        choiceOneOption = database.VoteOptions.SingleOrDefault(x => x.ID == ch);
                VoteOption choiceTwoOption;
                VoteOption choiceThreeOption;
                choiceOneOption.VoteCount += 5;
                if (choice[1] > 0)
                {
                    ch = choice[1];
                    choiceTwoOption            = database.VoteOptions.SingleOrDefault(x => x.ID == ch);
                    choiceTwoOption.VoteCount += 3;
                }
                if (choice[2] > 0)
                {
                    ch = choice[2];
                    choiceThreeOption            = database.VoteOptions.SingleOrDefault(x => x.ID == ch);
                    choiceThreeOption.VoteCount += 1;
                }
                database.SaveChanges();
            }
            return(true);
        }