protected void ButtonChangeVote_Click(object sender, EventArgs e) { MeetingElection poll = MeetingElection.FromIdentity(Int32.Parse(Request.QueryString["PollId"])); InternalPollVoterStatus voterStatus = poll.GetVoterStatus(_currentUser); if (voterStatus == InternalPollVoterStatus.HasAlreadyVoted) { string verificationCode = this.TextVerificationCode.Text; try { MeetingElectionVote vote = MeetingElectionVote.FromVerificationCode(verificationCode); if (vote.InternalPollId == poll.Identity) { Response.Redirect(Request.RawUrl + "&VerificationCode=" + verificationCode); } } catch (Exception) { ScriptManager.RegisterStartupScript(this, Page.GetType(), "nope", "alert ('There is no such verification code associated with this poll.');", true); } } }
public void PopulateLists(MeetingElection poll, string verificationCode) { MeetingElectionCandidates candidates = poll.Candidates; Dictionary <int, bool> lookup = new Dictionary <int, bool>(); if (!string.IsNullOrEmpty(verificationCode)) { MeetingElectionVote vote = MeetingElectionVote.FromVerificationCode(verificationCode); if (poll.Identity != vote.InternalPollId) { throw new ArgumentException("Verification Code does not exist or does not match Poll Identity"); } int[] candidateIds = vote.SelectedCandidateIdsInOrder; foreach (int candidateId in candidateIds) { lookup[candidateId] = true; MeetingElectionCandidate candidate = MeetingElectionCandidate.FromIdentity(candidateId); this.ListVote.Items.Add(new RadListBoxItem(candidate.Person.Canonical, candidate.Identity.ToString())); } } foreach (MeetingElectionCandidate candidate in candidates) { if (!lookup.ContainsKey(candidate.Identity)) { this.ListCandidates.Items.Add(new RadListBoxItem(candidate.Person.Canonical, candidate.Identity.ToString())); } } this.ListCandidates.DataBind(); }
protected void ButtonVote_Click(object sender, EventArgs e) { MeetingElection poll = MeetingElection.FromIdentity(Int32.Parse(Request.QueryString["PollId"])); if (!poll.VotingOpen) { ScriptManager.RegisterStartupScript(this, Page.GetType(), "nope", "alert ('This poll has closed. You can not cast the vote.');", true); return; } if (this.ListVote.Items.Count == 0) { ScriptManager.RegisterStartupScript(this, Page.GetType(), "nope", "alert ('You need to pick one or more candidates in order to cast a vote.');", true); return; } if (this.ListVote.Items.Count > poll.MaxVoteLength) { ScriptManager.RegisterStartupScript(this, Page.GetType(), "nope", "alert ('You have chosen too many candidates. The maximum number is " + poll.MaxVoteLength.ToString() + ". Please remove at least " + (this.ListVote.Items.Count - poll.MaxVoteLength).ToString() + ".');", true); return; } string verificationCode = Request.QueryString["VerificationCode"]; InternalPollVoterStatus voterStatus = poll.GetVoterStatus(_currentUser); if (voterStatus == InternalPollVoterStatus.CanVote || (!string.IsNullOrEmpty(verificationCode) && voterStatus == InternalPollVoterStatus.HasAlreadyVoted)) { this.PanelPollIntro.Visible = false; this.PanelVoting.Visible = false; this.PanelComplete.Visible = true; this.PanelCode.Visible = true; MeetingElectionVote vote = null; if (string.IsNullOrEmpty(verificationCode) && voterStatus == InternalPollVoterStatus.CanVote) { vote = poll.CreateVote(_currentUser, Request.UserHostAddress.ToString()); } else { vote = MeetingElectionVote.FromVerificationCode(verificationCode); vote.Clear(); } this.LabelReference.Text = vote.VerificationCode; for (int index = 0; index < this.ListVote.Items.Count; index++) { MeetingElectionCandidate candidate = MeetingElectionCandidate.FromIdentity(Int32.Parse(this.ListVote.Items[index].Value)); vote.AddDetail(index + 1, candidate); } } }