private void PopulatePollGrid()
    {
        MeetingElections polls = MeetingElections.GetAll();

        this.GridPolls.DataSource = polls;
        this.GridPolls.DataBind();
    }
Esempio n. 2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        this.TextName.Style[HtmlTextWriterStyle.Width]       = "300px";
        this.DropPolls.Style[HtmlTextWriterStyle.Width]      = "300px";
        this.TextCandidates.Style[HtmlTextWriterStyle.Width] = "100%";

        if (_currentUser.Identity != 1)
        {
            throw new UnauthorizedAccessException("No access to page");
        }

        if (!Page.IsPostBack)
        {
            this.DropGeographies.Root = Country.FromCode("SE").Geography;
            this.DropPolls.Items.Clear();

            MeetingElections polls = MeetingElections.ForOrganization(Organization.PPSE);
            foreach (MeetingElection poll in polls)
            {
                this.DropPolls.Items.Add(new ListItem(poll.Name, poll.Identity.ToString()));
            }
        }
    }
Esempio n. 3
0
        static public void Run()
        {
            MeetingElections polls = MeetingElections.GetAll();

            foreach (MeetingElection poll in polls)
            {
                Console.Write("Looking at poll #" + poll.Identity.ToString() + "...");

                if (DateTime.Now > poll.VotingCloses)
                {
                    Console.Write(" after closedatetime " + poll.VotingCloses.ToString("yyyy-MM-dd HH:mm") + "...");

                    // Poll should be CLOSED, definitely CLOSED.

                    if (poll.VotingOpen)
                    {
                        Console.WriteLine(" CLOSING.");

                        poll.VotingOpen = false; // Closes poll
                        poll.Creator.SendNotice("Poll Closed: " + poll.Name, string.Empty, poll.OrganizationId);
                        Person.FromIdentity(1).SendNotice("Poll Closed: " + poll.Name, string.Empty, poll.OrganizationId);

                        ReportPollResults(poll, false);
                    }
                    else
                    {
                        Console.WriteLine(" no action.");
                    }
                }
                else if (DateTime.Now > poll.VotingOpens)
                {
                    try
                    {
                        // Poll should be OPEN.

                        Console.Write("after opendatetime " + poll.VotingOpens.ToString("yyyy-MM-dd HH:mm") + "...");

                        if (!poll.VotingOpen)
                        {
                            Console.WriteLine("OPENING for " + poll.Organization.Name + ":");

                            // Populate voters, then open for voting

                            Organizations orgTree = poll.Organization.GetTree();

                            Memberships memberships = Memberships.ForOrganizations(orgTree);

                            Dictionary <int, bool> dupeCheck = new Dictionary <int, bool>();

                            int count = 0;

                            foreach (Membership membership in memberships)
                            {
                                Console.Write("\r - voters: {0:D6}/{1:D6} (person #{2:D6})...", ++count, memberships.Count, membership.PersonId);

                                if (!membership.Active)
                                {
                                    continue; // paranoid programming
                                }

                                if (!membership.Organization.IsOrInherits(poll.Organization))
                                {
                                    continue; // more paranoid programming
                                }

                                if (!dupeCheck.ContainsKey(membership.PersonId))
                                {
                                    if (membership.Person.GeographyId == 0)
                                    {
                                        // It's a trap!

                                        Console.Write(" GEOGRAPHY ZERO, ignoring\r\n");
                                    }
                                    else
                                    {
                                        Geography geo = membership.Person.Geography;

                                        if (geo.Inherits(poll.GeographyId) || geo.Identity == poll.GeographyId)
                                        {
                                            poll.AddVoter(membership.Person);
                                            dupeCheck[membership.PersonId] = true;
                                        }
                                    }
                                }
                            }

                            Console.WriteLine(" done.");
                            Console.Write(" - opening poll...");

                            poll.VotingOpen = true;

                            Console.WriteLine(" done.");
                            Console.Write("Sending notices... ");

                            string body = "Electoral roll for poll \"" + poll.Name + "\" primed. " +
                                          dupeCheck.Count.ToString() + " people can vote. The vote is now OPEN.";

                            string subject = "Poll Open: " + poll.Name;

                            poll.Creator.SendNotice(subject, body, poll.OrganizationId);
                            Person.FromIdentity(1).SendNotice(subject, body, poll.OrganizationId);

                            Console.WriteLine(" done.");
                        }
                        else
                        {
                            Console.WriteLine(" already open, no action.");

                            // Report intermediate results to owner

                            ReportPollResults(poll, true);
                        }
                    }
                    catch (Exception exception)
                    {
                        Console.WriteLine(exception.ToString());

                        throw exception;
                    }
                }
            }
        }