Esempio n. 1
0
    protected HDSchedule getSchedule(int id)
    {
        string selectScheduleDataCmdStr = "SELECT Schedule FROM Users WHERE ID = ?";
        OleDbCommand selectScheduleDataCmd = new OleDbCommand(selectScheduleDataCmdStr, conn);
        selectScheduleDataCmd.Parameters.Add(new OleDbParameter("@ID", id + ""));

        conn.Open();
        OleDbDataReader drSchedule = selectScheduleDataCmd.ExecuteReader();
        string databaseScheduleString = "";
        while (drSchedule.Read())
            if (!drSchedule["Schedule"].GetType().FullName.Equals("System.DBNull") && drSchedule["Schedule"] != null && !drSchedule["Schedule"].Equals(""))
                databaseScheduleString = (string)drSchedule["Schedule"];
        drSchedule.Close();
        conn.Close();

        HDSchedule schedule = new HDSchedule();
        schedule.setFromDatabaseString(databaseScheduleString);
        return schedule;
    }
Esempio n. 2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        HDSchedule schedule = getSchedule(Convert.ToInt32(Session["UserID"]));

        Boolean scheduleHasClasses = schedule.hasClasses();
        Boolean scheduleHasTeachers = schedule.hasTeachers();

        if (scheduleHasClasses)
        {
            ltrClasses.Text = "";
            ltrClasses.Text += "<table id='classes-table'><tr><th id='classes-table-header' colspan='6'>Classes</th></tr>";
            for (int y = 0; y < HDSchedule.DEFAULT_DAY_LENGTH; y++)
            {
                ltrClasses.Text += "<tr class='classes-row'>";
                for (int x = 0; x < HDSchedule.DEFAULT_WEEK_LENGTH; x++)
                {
                    ltrClasses.Text += "<td class='classes-cell'>";
                    string className = schedule.classes[x, y];
                    ltrClasses.Text += className;

                    ltrClasses.Text += "<div class='roster-tooltip'>";
                    ltrClasses.Text += "<div class='roster-tooltip-header'>Friends in " + className + "</div>";

                    ltrClasses.Text += "<div class='roster-tooltip-text'>";

                    List<string> friendsInClass = new List<string>();

                    string selectFriendsStringCmdStr = "SELECT Friends FROM Users WHERE ID = ?";
                    OleDbCommand selectFriendsStringCmd = new OleDbCommand(selectFriendsStringCmdStr, conn);
                    selectFriendsStringCmd.Parameters.Add(new OleDbParameter("@ID", Session["UserID"]));

                    conn.Open();
                    OleDbDataReader drFriends = selectFriendsStringCmd.ExecuteReader();
                    string friendsString = "";
                    while (drFriends.Read())
                        friendsString = (string)drFriends["Friends"];
                    drFriends.Close();
                    conn.Close();

                    if (friendsString.Length > 0)
                    {
                        string[] friendIDStrings = friendsString.Split(' ');
                        int[] friendIDs = new int[friendIDStrings.Length];
                        for (int i = 0; i < friendIDStrings.Length; i++)
                            friendIDs[i] = Convert.ToInt32(friendIDStrings[i]);

                        string selectFriendsDataCmdStr = "SELECT First_Name, Last_Name, Username, Schedule FROM Users WHERE";
                        foreach (string friendID in friendIDStrings)
                            selectFriendsDataCmdStr += " ID = " + friendID + " OR";
                        selectFriendsDataCmdStr = selectFriendsDataCmdStr.Substring(0, selectFriendsDataCmdStr.Length - 3);
                        selectFriendsDataCmdStr += " ORDER BY Username";
                        OleDbCommand selectFriendsDataCmd = new OleDbCommand(selectFriendsDataCmdStr, conn);

                        conn.Open();
                        OleDbDataReader drFriendsData = selectFriendsDataCmd.ExecuteReader();
                        while (drFriendsData.Read())
                        {
                            HDSchedule friendSchedule = new HDSchedule();
                            friendSchedule.setFromDatabaseString((string)drFriendsData["Schedule"]);
                            Comparator compare = new Comparator(schedule, friendSchedule);

                            Boolean[,] commonPeriods = compare.getCommonPeriods();
                            if (commonPeriods[x, y] == true)
                                friendsInClass.Add((string)drFriendsData["Username"]);
                        }
                        drFriendsData.Close();
                        conn.Close();
                    }

                    if (friendsInClass.Count() == 0)
                        ltrClasses.Text += "None";
                    else
                        foreach (string friendInClassName in friendsInClass)
                            ltrClasses.Text += "<a class='friend-in-class-name-item' href='User.aspx?u=" + friendInClassName + "'>" + friendInClassName + "</a><br />";

                    ltrClasses.Text += "</div>";
                    ltrClasses.Text += "</div>";

                    ltrClasses.Text += "</td>";
                }
                ltrClasses.Text += "</tr>";
            }

            ltrClasses.Text += "</table>";
        }

        if (scheduleHasTeachers)
        {
            this.scheduleFriendsInstructions.Style.Add("display", "block");
            ltrTeachers.Text = "";
            ltrTeachers.Text += "<table id='teachers-table'><tr><th id='teachers-table-header' colspan='2'>Teachers</th></tr>";

            foreach (string className in schedule.teachers.Keys)
            {
                ltrTeachers.Text += "<tr class='teachers-row'>";

                ltrTeachers.Text += "<td class='teachers-cell' onclick='#teachers-cell'>";
                ltrTeachers.Text += className;

                ltrTeachers.Text += "<div class='roster-tooltip'>";
                ltrTeachers.Text += "<div class='roster-tooltip-header'>Friends in " + className + "</div>";

                ltrTeachers.Text += "<div class='roster-tooltip-text'>";

                List<string> friendsInClass = new List<string>();

                string selectFriendsStringCmdStr = "SELECT Friends FROM Users WHERE ID = ?";
                OleDbCommand selectFriendsStringCmd = new OleDbCommand(selectFriendsStringCmdStr, conn);
                selectFriendsStringCmd.Parameters.Add(new OleDbParameter("@ID", Session["UserID"]));

                conn.Open();
                OleDbDataReader drFriends = selectFriendsStringCmd.ExecuteReader();
                string friendsString = "";
                while (drFriends.Read())
                    friendsString = (string)drFriends["Friends"];
                drFriends.Close();
                conn.Close();

                if (friendsString.Length > 0)
                {
                    string[] friendIDStrings = friendsString.Split(' ');
                    int[] friendIDs = new int[friendIDStrings.Length];
                    for (int i = 0; i < friendIDStrings.Length; i++)
                        friendIDs[i] = Convert.ToInt32(friendIDStrings[i]);

                    string selectFriendsDataCmdStr = "SELECT First_Name, Last_Name, Username, Schedule FROM Users WHERE";
                    foreach (string friendID in friendIDStrings)
                        selectFriendsDataCmdStr += " ID = " + friendID + " OR";
                    selectFriendsDataCmdStr = selectFriendsDataCmdStr.Substring(0, selectFriendsDataCmdStr.Length - 3);
                    selectFriendsDataCmdStr += " ORDER BY Username";
                    OleDbCommand selectFriendsDataCmd = new OleDbCommand(selectFriendsDataCmdStr, conn);

                    conn.Open();
                    OleDbDataReader drFriendsData = selectFriendsDataCmd.ExecuteReader();
                    while (drFriendsData.Read())
                    {
                        HDSchedule friendSchedule = new HDSchedule();
                        friendSchedule.setFromDatabaseString((string)drFriendsData["Schedule"]);
                        Comparator compare = new Comparator(schedule, friendSchedule);

                        string[] commonClasses = compare.getCommonClasses();
                        if (commonClasses.Contains(className))
                        {
                            friendsInClass.Add((string)drFriendsData["Username"]);
                        }
                    }
                    drFriendsData.Close();
                    conn.Close();
                }

                if (friendsInClass.Count() == 0)
                    ltrTeachers.Text += "None";
                else
                    foreach (string friendInClassName in friendsInClass)
                        ltrTeachers.Text += "<a class='friend-in-class-name-item' href='User.aspx?u=" + friendInClassName + "'>" + friendInClassName + "</a><br />";

                ltrTeachers.Text += "</div>";
                ltrTeachers.Text += "</div>";

                ltrTeachers.Text += "</td>";

                ltrTeachers.Text += "<td class='teachers-cell'>";
                string teacherName = "";
                schedule.teachers.TryGetValue(className, out teacherName);
                ltrTeachers.Text += teacherName;
                ltrTeachers.Text += "</td>";

                ltrTeachers.Text += "</tr>";
            }

            ltrTeachers.Text += "</table>";
        }

        if (!scheduleHasClasses && !scheduleHasTeachers)
        {
            this.btnApplyTeachers.Enabled = false;
            this.btnApplyTeachers.Style.Add("background", "rgba(100, 100, 100, .1)");
            this.btnApplyTeachers.Style.Add("color", "rgba(30, 30, 30, .3)");
            this.btnApplyTeachers.Style.Add("border", "1px solid rgba(40, 40, 40, .1)");
            this.scheduleFriendsInstructions.Style.Add("display", "none");
        }
        else if (scheduleHasClasses && !scheduleHasTeachers)
        {
            string[] classNames = schedule.getAllClassNames();
            DropDownList[] dropDowns = new DropDownList[classNames.Length];
            for (int i = 0; i < classNames.Length; i++)
            {
                dropDowns[i] = new DropDownList();
                dropDowns[i].CssClass = "teachers-drop-down";
                dropDowns[i].Items.Add(new ListItem(teacherDropdownDefaultText));

                string selectTeacherNamesCmdStr = "SELECT First_Name, Last_Name FROM Teachers  ORDER BY Last_Name ASC";
                OleDbCommand selectTeacherNamesCmd = new OleDbCommand(selectTeacherNamesCmdStr, conn);

                conn.Open();
                OleDbDataReader drTeacherNames = selectTeacherNamesCmd.ExecuteReader();
                while (drTeacherNames.Read())
                    dropDowns[i].Items.Add(new ListItem(drTeacherNames["Last_Name"] + ", " + drTeacherNames["First_Name"]));
                drTeacherNames.Close();
                conn.Close();

                dropDowns[i].Items.FindByText(teacherDropdownDefaultText).Selected = true;
            }
            for (int i = 0; i < classNames.Length; i++)
            {
                string classNameText = "<div class='teachers-class-name'>" + classNames[i] + "</div>";
                LiteralControl classNameCtrl = new LiteralControl(classNameText);
                Panel pnlClassNameAndDropdown = new Panel();
                pnlClassNameAndDropdown.CssClass = "pnlClassNameWithDropdown";
                pnlClassNameAndDropdown.Controls.Add(classNameCtrl);
                pnlClassNameAndDropdown.Controls.Add(dropDowns[i]);
                this.pnlTeacherDropdowns.Controls.Add(pnlClassNameAndDropdown);
            }
            this.scheduleFriendsInstructions.Style.Add("display", "none");
        }
        else if (scheduleHasClasses && scheduleHasTeachers)
        {
            string[] classNames = schedule.getAllClassNames();
            DropDownList[] dropDowns = new DropDownList[classNames.Length];
            for (int i = 0; i < classNames.Length; i++)
            {
                dropDowns[i] = new DropDownList();
                dropDowns[i].CssClass = "teachers-drop-down";

                string selectTeacherNamesCmdStr = "SELECT First_Name, Last_Name FROM Teachers ORDER BY Last_Name ASC";
                OleDbCommand selectTeacherNamesCmd = new OleDbCommand(selectTeacherNamesCmdStr, conn);

                conn.Open();
                OleDbDataReader drTeacherNames = selectTeacherNamesCmd.ExecuteReader();
                while (drTeacherNames.Read())
                    dropDowns[i].Items.Add(new ListItem(drTeacherNames["Last_Name"] + ", " + drTeacherNames["First_Name"]));
                drTeacherNames.Close();
                conn.Close();
            }
            for (int i = 0; i < classNames.Length; i++)
            {
                string classNameText = "<div class='teachers-class-name'>" + classNames[i] + "</div>";
                LiteralControl classNameCtrl = new LiteralControl(classNameText);
                Panel pnlClassNameAndDropdown = new Panel();
                pnlClassNameAndDropdown.CssClass = "pnlClassNameWithDropdown";
                pnlClassNameAndDropdown.Controls.Add(classNameCtrl);
                pnlClassNameAndDropdown.Controls.Add(dropDowns[i]);
                this.pnlTeacherDropdowns.Controls.Add(pnlClassNameAndDropdown);

                string teacherName = "";
                schedule.teachers.TryGetValue(classNames[i], out teacherName);
                dropDowns[i].Items.FindByText(teacherName).Selected = true;
            }
        }
    }
Esempio n. 3
0
 public Comparator(HDSchedule s1, HDSchedule s2)
 {
     this.s1 = s1;
     this.s2 = s2;
 }