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