protected void Page_Load(object sender, EventArgs e) { String committee_id_raw = Request.QueryString["id"]; if (committee_id_raw == null) throw new System.Web.HttpException(400, "Missing committee ID"); ISession session = DatabaseEntities.NHibernateHelper.CreateSessionFactory().OpenSession(); try { committee_id = Int32.Parse(committee_id_raw); committee = DatabaseEntities.Committee.FindCommittee(session, committee_id); if(committee == null) throw new Exception("Committee not found."); } catch { throw new System.Web.HttpException(400, "Invalid committee ID"); } CommName1.Text = committee.Name; CommName2.Text = committee.Name; if(!Page.IsPostBack) { GridViewUsers.DataSource = DatabaseEntities.User.FindUsers(session, committee); GridViewUsers.DataBind(); } }
public static void AddMembersToCommittee() { Console.Write("Add members to committee:\n"); ISessionFactory factory = NHibernateHelper.CreateSessionFactory(); // Clear out database using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { Clear(session, transaction); } } // Pre-requisites using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { // create a committee Console.Write("Creat committee with 2 positions.\n"); Committee com = new Committee(); com.Name = "Acommittee"; com.PositionCount = 2; session.SaveOrUpdate(com); // add 2 users who are tenured and union members who are on // the committee Console.Write("Create 2 users and add them to the committee.\n"); for (int i = 0; i < 2; i++) { User user = User.CreateUser("e", i.ToString() + "F", i.ToString() + "L", "p", "h", false, false, true, true, false, DepartmentType.CSC, OfficerPositionType.None, true, User.NoCommittee); session.SaveOrUpdate(user); user.AddToCommittee(session, "Acommittee"); } transaction.Commit(); } } // Assertions using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { // assert that both users' committee fields reference the // original committee List<User> users = User.GetAllUsers(session); Committee a = Committee.FindCommittee(session, "Acommittee"); Assert.AreEqual(a.ID, users[0].CurrentCommittee); Assert.AreEqual(a.ID, users[1].CurrentCommittee); Assert.AreEqual(0, a.NumberOfVacancies(session)); Assert.AreEqual(2, a.NumberOfPositions(session)); } } }
protected void Page_Load(object sender, EventArgs e) { String committee_id_raw = Request.QueryString["id"]; if (committee_id_raw == null) throw new System.Web.HttpException(400, "Missing committee ID"); ISession session = DatabaseEntities.NHibernateHelper.CreateSessionFactory().OpenSession(); try { committee_id = Int32.Parse(committee_id_raw); committee = DatabaseEntities.Committee.FindCommittee(session, committee_id); if(committee == null) throw new Exception("Committee not found."); } catch { throw new System.Web.HttpException(400, "Invalid committee ID"); } CheckForExistingElection(session); }
protected void createScheme_Click(object sender, EventArgs e) { //Legacy databaseLogic dbLogic = new databaseLogic(); dbLogic.createSchema(); //NHibernate DatabaseEntities.NHibernateHelper.CreateSessionFactoryAndGenerateSchema(); //Default committees ISession session = DatabaseEntities.NHibernateHelper.CreateSessionFactory().OpenSession(); ITransaction transaction = session.BeginTransaction(); Committee newCommittee = new Committee(); newCommittee.Name = "Sabbatical Leave Committee"; newCommittee.Description = "The Sabbatical Leave Committee receives applications for sabbatical and forwards recommendations to the University President."; newCommittee.PositionCount = 7; newCommittee.BargainingUnitRequired = true; newCommittee.TenureRequired = false; DatabaseEntities.NHibernateHelper.UpdateDatabase(session, newCommittee); newCommittee = new Committee(); newCommittee.Name = "Promotion Committee"; newCommittee.Description = "The University Promotion Committee reviews recommendations for promotion from Departmental Promotion Committees and recommends candidates for promotion to the University President. During the spring semester, members spend 4-6 hours per week in meetings."; newCommittee.PositionCount = 7; newCommittee.BargainingUnitRequired = true; newCommittee.TenureRequired = true; DatabaseEntities.NHibernateHelper.UpdateDatabase(session, newCommittee); newCommittee = new Committee(); newCommittee.Name = "Tenure Committee"; newCommittee.Description = "The University Tenure Committee reviews recommendations for tenure from Departmental Tenure Committees and recommends candidates for tenure to the University President. These activities take several hours per week during those periods when candidates are under active review."; newCommittee.PositionCount = 7; newCommittee.BargainingUnitRequired = true; newCommittee.TenureRequired = true; DatabaseEntities.NHibernateHelper.UpdateDatabase(session, newCommittee); DatabaseEntities.NHibernateHelper.Finished(transaction); createSchemaStatus.Visible = true; createScheme.Enabled = false; }
/// <summary> /// Creates a CommitteeElection object based off of a committee /// </summary> /// <param name="session">A valid session</param> /// <param name="committee">The committee the election pertains to</param> /// <returns>A committeeElection object to be saved to the database, or null if there were no vacancies</returns> public static CommitteeElection CreateElection(ISession session, Committee committee) { CommitteeElection ret = new CommitteeElection(); ret.PertinentCommittee = committee.ID; ret.Started = DateTime.Now; ret.PhaseStarted = ret.Started; ret.Phase = ElectionPhase.WTSPhase; ret.VacanciesToFill = committee.NumberOfVacancies(session); ret.PhaseEndDelta = 0; // return null if there are no vacancies to fill or if there is // already an election for this committee if (ret.VacanciesToFill <= 0 || session.CreateCriteria(typeof(CommitteeElection)) .Add(Restrictions.Eq("PertinentCommittee", committee.ID)) .Add(Restrictions.Not(Restrictions.Eq("Phase", ElectionPhase.ClosedPhase))) .UniqueResult<CommitteeElection>() != null) return null; else return ret; }
/// <summary> /// Indicates whether or not there is a member in a given department within a givin committee. /// </summary> /// <param name="session">A valid session.</param> /// <param name="committee">The committee in question.</param> /// <param name="department">The department to find in the committee.</param> /// <returns></returns> public static bool DepartmentRepresented(ISession session, Committee committee, DepartmentType department) { List<User> members = User.FindUsers(session, committee.Name); foreach (User i in members) { if (i.Department == department) return true; } return false; }
/// <summary> /// Detects conflicts within a given committee. For use with the committees dashboard only. /// </summary> /// <param name="session">A valid session.</param> /// <param name="id">The ID of the committee in question.</param> /// <returns>A list of strings containing information (in english) about any conflicts</returns> public static List<string> FindConflicts(ISession session, Committee committee) { List<string> ret = new List<string>(); List<User> members = User.FindUsers(session, committee.Name); // Find if multiple members of the same department are on the committee List<DepartmentType> departments = new List<DepartmentType>(); foreach (User i in members) { if (departments.Contains(i.Department)) ret.Add("Warning! Multiple faculty members in the " + i.Department.ToString() + " department are on this committee!"); else departments.Add(i.Department); } return ret; }
public static void TestCommitteeCreationFailure() { Console.Write("Test Committee Election Failure:\n"); ISessionFactory factory = NHibernateHelper.CreateSessionFactory(); // Clear out database using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { Clear(session, transaction); } } // Pre-requisites using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { // create a committee: 3 positions, 3 filled Console.Write("Create committee with 3 positions.\n"); Committee com = new Committee(); com.Name = "Acommittee"; com.PositionCount = 3; session.SaveOrUpdate(com); // add 3 users who are tenured and union members who are on // the committee Console.Write("Create 3 users and give them positions in the committee.\n"); User[] users = new User[3]; for (int i = 0; i < 3; i++) { users[i] = User.CreateUser("e", i.ToString() + "F", i.ToString() + "L", "p", "h", false, false, true, true, false, DepartmentType.CSC, OfficerPositionType.None, true, com.ID); session.SaveOrUpdate(users[i]); } transaction.Commit(); } // Assertions using (ITransaction transaction = session.BeginTransaction()) { Console.Write("Attempting to create an election based off the committee.\n"); Committee com = Committee.FindCommittee(session, "Acommittee"); CommitteeElection election = CommitteeElection.CreateElection(session, com); Console.Write("CommitteeElection value (should be null): "); Assert.AreEqual(null, election); } } }
public static void RemoveMembersFromCommittees() { Console.Write("Remove members from committee:\n"); ISessionFactory factory = NHibernateHelper.CreateSessionFactory(); // Clear out database using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { Clear(session, transaction); } } // Pre-requisites using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { // create a committee Console.Write("Create committee with 2 positions.\n"); Committee com = new Committee(); com.Name = "Acommittee"; com.PositionCount = 2; session.SaveOrUpdate(com); // add 2 users who are tenured and union members who are on // the committee Console.Write("Create 2 users and add them to the committee.\n"); for (int i = 0; i < 2; i++) { User user = User.CreateUser("e", i.ToString() + "F", i.ToString() + "L", "p", "h", false, false, true, true, false, DepartmentType.CSC, OfficerPositionType.None, true, User.NoCommittee); session.SaveOrUpdate(user); user.AddToCommittee(session, "Acommittee"); } transaction.Commit(); } } // More pre-requisites using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { Console.Write("Remove one of the users.\n"); List<User> users = User.GetAllUsers(session); Committee c = Committee.FindCommittee(session, "Acommittee"); Committee.RemoveMember(session, users[0], c.ID); session.SaveOrUpdate(users[0]); transaction.Commit(); } } // Assertions using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { List<User> users = User.GetAllUsers(session); Assert.AreEqual(User.NoCommittee, users[0].CurrentCommittee); Assert.AreEqual(1, Committee.FindCommittee(session, "Acommittee").NumberOfVacancies(session)); } } }
public static void NominationPhaseSkipped() { Console.Write("Nomination Phase Skipped:\n"); ISessionFactory factory = NHibernateHelper.CreateSessionFactory(); // Clear out database using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { Clear(session, transaction); } } // Preconditions using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { // create a committee Console.Write("Create committee with 3 positions.\n"); Committee com = new Committee(); com.Name = "Acommittee"; com.PositionCount = 3; session.SaveOrUpdate(com); // add 2 users who are tenured and union members who are on // the committee Console.Write("Create 5 users and add 2 of them to the committee.\n"); for (int i = 0; i < 5; i++) { User user = User.CreateUser("e", i.ToString() + "F", i.ToString() + "L", "p", "h", false, false, true, true, false, DepartmentType.CSC, OfficerPositionType.None, true, User.NoCommittee); session.SaveOrUpdate(user); if(i < 2) user.AddToCommittee(session, "Acommittee"); } // create an election for the committee Console.Write("Create an election based off the committee.\n"); CommitteeElection election = CommitteeElection.CreateElection(session, com); session.SaveOrUpdate(election); session.Flush(); // submit WTS for 2 users Console.Write("Submitting WTSes for 2 users."); for (int i = 2; i < 4; i++) { CommitteeWTS wts = new CommitteeWTS(); wts.Election = election.ID; wts.Statement = "thisisastatement."; wts.User = i; session.SaveOrUpdate(wts); session.Flush(); } session.Flush(); transaction.Commit(); } } // Assertions using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { CommitteeElection election = CommitteeElection.FindElection(session, "Acommittee"); ElectionPhase phase = election.NextPhase(session); Assert.AreEqual(phase, ElectionPhase.VotePhase); } } }
public static void NextPhaseBehavesProperly() { Console.Write("Next phase behaves properly:\n"); ISessionFactory factory = NHibernateHelper.CreateSessionFactory(); // Clear out database using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { Clear(session, transaction); } } // Preconditions using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { // create a committee Console.Write("Create committee with 3 positions.\n"); Committee com = new Committee(); com.Name = "Acommittee"; com.PositionCount = 3; session.SaveOrUpdate(com); transaction.Commit(); } } using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { // add 2 users who are tenured and union members who are on // the committee Console.Write("Create 2 users and add them to the committee.\n"); for (int i = 0; i < 2; i++) { User user = User.CreateUser("e", i.ToString() + "F", i.ToString() + "L", "p", "h", false, false, true, true, false, DepartmentType.CSC, OfficerPositionType.None, true, User.NoCommittee); user.AddToCommittee(session, "Acommittee"); session.SaveOrUpdate(user); } CommitteeElection election = CommitteeElection.CreateElection(session, Committee.FindCommittee(session, "Acommittee")); election.Phase = ElectionPhase.NominationPhase; session.SaveOrUpdate(election); transaction.Commit(); } } // Assertions using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { CommitteeElection election = CommitteeElection.FindElection(session, "Acommittee"); Assert.AreEqual(ElectionPhase.VotePhase, election.NextPhase(session)); election.SetPhase(session, ElectionPhase.VotePhase); transaction.Commit(); } } using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { CommitteeElection election = CommitteeElection.FindElection(session, "Acommittee"); Assert.AreEqual(ElectionPhase.ConflictPhase, election.NextPhase(session)); election.SetPhase(session, ElectionPhase.ConflictPhase); transaction.Commit(); } } using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { CommitteeElection election = CommitteeElection.FindElection(session, "Acommittee"); Assert.AreEqual(ElectionPhase.ClosedPhase, election.NextPhase(session)); election.SetPhase(session, ElectionPhase.ClosedPhase); transaction.Commit(); } } }
public static void InitiateCommitteeElection() { Console.Write("Initial Committee Election:\n"); // Set up pre-conditions ISessionFactory factory = NHibernateHelper.CreateSessionFactory(); using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { // clear the databse first Clear(session, transaction); } using (ITransaction transaction = session.BeginTransaction()) { // add an admin user Console.Write("Create admin user.\n"); User user = User.CreateUser("e", "f", "l", "p", "h", true, false, false, false, false, DepartmentType.CSC, OfficerPositionType.None, false, -1); session.SaveOrUpdate(user); // create a committee: 4 positions, 3 filled Console.Write("Create committee with 4 positions.\n"); Committee com = new Committee(); com.Name = "Acommittee"; com.PositionCount = 4; session.SaveOrUpdate(com); // add 3 users who are tenured and union members who are on // the committee Console.Write("Create 3 users and give them positions in the committee.\n"); User[] users = new User[3]; for (int i = 0; i < 3; i++) { users[i] = User.CreateUser("e", i.ToString() + "F", i.ToString() + "L", "p", "h", false, false, true, true, false, DepartmentType.CSC, OfficerPositionType.None, true, com.ID); session.SaveOrUpdate(users[i]); } transaction.Commit(); } using (ITransaction transaction = session.BeginTransaction()) { Console.Write("Create an election based off the committee.\n"); Committee com = Committee.FindCommittee(session, "Acommittee"); CommitteeElection election = CommitteeElection.CreateElection(session, com); session.SaveOrUpdate(election); transaction.Commit(); } } // Assertions using (ISession session = factory.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { Console.Write("Election object's phase is WTSPhase: "); Assert.AreEqual(ElectionPhase.WTSPhase, CommitteeElection.FindElection(session, "Acommittee").Phase); int vacancies = CommitteeElection.FindElection(session, "Acommittee").VacanciesToFill; Assert.AreEqual(1, vacancies); // Put email stuff here } } }
/// <summary> /// Adds the specified user to the specified committee /// </summary> /// <param name="session">A valid session.</param> /// <param name="user">A reference to the user to be added</param> /// <param name="committee">The name of the committee the user is to be added to.</param> /// <returns>True if the operation was successful.</returns> public virtual bool AddToCommittee(ISession session, Committee com) { if (com != null) { // Note that the logical if then (A -> B) binary operation // is equivalent to (~A v B) if ((!com.TenureRequired || this.IsTenured) && // logical if then (!com.BargainingUnitRequired || this.IsBargainingUnit) && // logical if then com.NumberOfVacancies(session) > 0) { this.CurrentCommittee = com.ID; session.SaveOrUpdate(this); session.Flush(); return true; } else return false; } else return false; }
/// <summary> /// Returns a list of users on the committee specified. /// </summary> /// <param name="session">A valid session.</param> /// <param name="currentCommittee">The pertinent committee.</param> /// <returns>A list of all the users on the specified committee.</returns> public static List<User> FindUsers(ISession session, Committee currentCommittee) { return session.CreateCriteria(typeof(User)) .Add(Restrictions.Eq("CurrentCommittee", currentCommittee.ID)) .List<User>().ToList(); }
protected void Page_Load(object sender, EventArgs e) { if (Request.QueryString["id"] == null || Request.QueryString["id"] == "") throw new HttpException(400, "Invalid election ID"); ElectionID = int.Parse(Request.QueryString["id"]); session = NHibernateHelper.CreateSessionFactory().OpenSession(); // grab the objects based off the committee ID election = CommitteeElection.FindElection(session, ElectionID); if (election == null) Response.Redirect("home.aspx#election_not_found"); committee = Committee.FindCommittee(session, election.PertinentCommittee); if (committee == null) Response.Redirect("home.aspx#committee_not_found"); VacancyCount.Text = election.VacanciesToFill.ToString(); CommitteeNameLiteral.Text = committee.Name; CommitteeNameLiteral2.Text = committee.Name; CommitteeDescription.Text = committee.Description; must_be_tenured.Visible = committee.TenureRequired; user = DatabaseEntities.User.FindUser(session, User.Identity.Name); MakeElectionSpecial.Visible = user.IsAdmin; // expose the pertinent panel based on the state of the election. switch (election.Phase) { case ElectionPhase.WTSPhase: //******************************* //****** Faculty WTS Load ******* //******************************* //Check if WTS already exists List<DatabaseEntities.CommitteeWTS> wtsList = DatabaseEntities.CommitteeWTS.FindCommitteeWTS(session, election.ID); bool wtsAlreadySubmitted = false; foreach (DatabaseEntities.CommitteeWTS wts in wtsList) { if (wts.Election == election.ID && wts.User == user.ID && (!committee.TenureRequired || user.IsTenured) && (!committee.BargainingUnitRequired || user.IsBargainingUnit)) wtsAlreadySubmitted = true; } if(user.CurrentCommittee == committee.ID) { wtsPanelServing.Visible = true; wtsPanelNew.Visible = false; } else if (wtsAlreadySubmitted && (!committee.TenureRequired || user.IsTenured) && (!committee.BargainingUnitRequired || user.IsBargainingUnit)) { wtsPanelExisting.Visible = true; wtsPanelNew.Visible = false; } if ((!committee.TenureRequired || user.IsTenured) && (!committee.BargainingUnitRequired || user.IsBargainingUnit)) FacultyWTS.Visible = true; //Prevent a user from submitting a WTS if a member from their department is on the committee if(DatabaseEntities.Committee.DepartmentRepresented(session, committee, user.Department)) FacultyWTS.Visible = false; break; case ElectionPhase.NominationPhase: if(!user.CanVote) break; if (CommitteeWTSNomination.FindCommitteeWTSNomination(session, election.ID, user.ID).Count == 0) { FacultyNomination.Visible = true; BuildUserNominationOptions(); } else FacultyNominationComplete.Visible = true; break; case ElectionPhase.VotePhase: if(!user.CanVote) break; if (BallotFlag.FindBallotFlag(session, election.ID, user.ID) == null) { FacultyVote.Visible = true; BuildUserVoteOptions(); } else FacultyVoteComplete.Visible = true; break; case ElectionPhase.ClosedPhase: if (!user.IsNEC && !user.IsAdmin) FacultyClosed.Visible = true; break; } JulioButtonHider.Visible = user.IsAdmin; CancelElection.Visible = user.IsAdmin; if (user.IsNEC && election.Phase == ElectionPhase.CertificationPhase) { ActivateTab("CertificationPhase"); NECCertificationPanel.Visible = true; BuildNECVoteTable(); if(Certification.FindCertification(session, election.ID, user.ID) != null) { NECCertifyAgreement.Visible = false; CertifyCheckBox.Visible = false; CertifyButton.Visible = false; CertifyWarning.Visible = false; NECCertificationComplete.Visible = true; } } DaysLeftInPhase(); JulioButton.Text = "Switch to Next Phase"; switch(election.Phase) { case ElectionPhase.WTSPhase: PhaseLiteral.Text = "WTS Phase"; break; case ElectionPhase.NominationPhase: PhaseLiteral.Text = "Nomination Phase"; break; case ElectionPhase.VotePhase: PhaseLiteral.Text = "Voting Phase"; break; case ElectionPhase.CertificationPhase: PhaseLiteral.Text = "Certification Phase"; if(ElectionConflict.FindElectionConflicts(session, election.ID).Count == 0) JulioButton.Text = "Close Election"; break; case ElectionPhase.ConflictPhase: PhaseLiteral.Text = "Conflict Resolution Phase"; JulioButton.Text = "Close Election"; break; case ElectionPhase.ClosedPhase: PhaseLiteral.Text = "Closed"; CancelElection.Visible = false; JulioButtonHider.Visible = false; break; } if(user.IsAdmin) { ActivateTab(election.Phase.ToString()); JulioButton.Visible = true; JulioButtonSpacerText.Visible = true; if(election.Phase >= ElectionPhase.ClosedPhase) closed_tab.Visible = true; if (election.Phase == ElectionPhase.ConflictPhase) { List<ElectionConflict> conflicts = ElectionConflict.FindElectionConflicts(session, election.ID); foreach (ElectionConflict conflict in conflicts) { DatabaseEntities.User conflictUser1 = DatabaseEntities.User.FindUser(session, conflict.FirstUser); if (conflict.Type == ConflictType.ElectedToMultipleCommittees) BuildMultipleCommitteesConflictPanel(conflictUser1, conflict.ID); if (conflict.Type == ConflictType.TooManyDeptMembers) { DatabaseEntities.User conflictUser2 = DatabaseEntities.User.FindUser(session, conflict.SecUser); BuildTooManyDeptConflictPanel(conflictUser1, conflictUser2, conflictUser2.Department, conflict.ID); } } JulioButton.Visible = conflicts.Count == 0; JulioButtonSpacerText.Visible = conflicts.Count == 0; if (conflicts.Count == 0) AdminNoConflicts.Visible = true; else DaysRemaining.Text = "The election cannot be closed while conflicts are present."; conflicts_tab.Visible = true; } if (election.Phase >= ElectionPhase.CertificationPhase) { int numberCertifications = Certification.FindCertifications(session, election.ID).Count; string req_certs = System.Configuration.ConfigurationManager.AppSettings["required_nec_certs"]; int nec_certs = req_certs != null ? int.Parse(req_certs) : 3; AdminCertCount.Text = "There are currently " + numberCertifications.ToString(); if (numberCertifications >= nec_certs) // TODO: Add a button to advance to the next phase. AdminCertCount.Text += " certifications, which is enough to proceed to the next stage."; else AdminCertCount.Text += " certification(s). More NEC members must certify the results before proceeding."; certifications_tab.Visible = true; necprogressbar.Attributes.Add("style", "width: " + Math.Min(100, numberCertifications * (100 / nec_certs)).ToString() + "%"); if(numberCertifications < nec_certs) { HtmlGenericControl pretext = new HtmlGenericControl("span"); pretext.InnerText = certifications_tab_link.Text; certifications_tab_link.Controls.Add(pretext); HtmlGenericControl badge = new HtmlGenericControl("span"); badge.Attributes["class"] = "badge badge-info"; badge.Attributes["style"] = "margin-left: 0.5em;"; badge.InnerText = numberCertifications.ToString(); certifications_tab_link.Controls.Add(badge); } } if (election.Phase >= ElectionPhase.VotePhase) { votes_tab.Visible = true; BuildAdminVoteTable(); } if (election.Phase >= ElectionPhase.NominationPhase) { nominations_tab.Visible = true; BuildAdminNominationTable(); } if(election.Phase >= ElectionPhase.WTSPhase && election.Phase < ElectionPhase.ClosedPhase) wts_tab.Visible = true; //******************************* //******** Admin WTS Load ******* //******************************* List<DatabaseEntities.CommitteeWTS> wtsList = DatabaseEntities.CommitteeWTS.FindCommitteeWTS(session, election.ID); foreach (DatabaseEntities.CommitteeWTS wts in wtsList) { DatabaseEntities.User wtsUser = DatabaseEntities.User.FindUser(session, wts.User); if(wtsUser == null) continue; TableRow tr = new TableRow(); Label revokeNameLabel = new Label(); revokeNameLabel.Text = wtsUser.FirstName + " " + wtsUser.LastName; TableCell td1 = new TableCell(); td1.Controls.Add(revokeNameLabel); Label revokeDeptLabel = new Label(); revokeDeptLabel.Text = wtsUser.Department.ToString(); TableCell td2 = new TableCell(); td2.Controls.Add(revokeDeptLabel); Button revokeButton = new Button(); revokeButton.Text = "Revoke"; revokeButton.CssClass = "btn btn-danger btn-small"; revokeButton.CommandArgument = wts.User.ToString(); revokeButton.Click += new System.EventHandler(this.wtsRevoke_Click); TableCell td3 = new TableCell(); td3.Controls.Add(revokeButton); tr.Cells.Add(td1); tr.Cells.Add(td2); tr.Cells.Add(td3); wtsAdminTable.Rows.Add(tr); } if(wtsList.Count == 0) { TableRow tr = new TableRow(); TableCell td1 = new TableCell(); td1.Controls.Add(new LiteralControl("No WTS forms have been submitted yet.")); td1.ColumnSpan = 3; tr.Controls.Add(td1); wtsAdminTable.Rows.Add(tr); } } }