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; } } }
protected void Page_Load(object sender, EventArgs e) { string selectPageUserDataCmdStr = "SELECT ID, First_Name, Last_Name, Username, Schedule FROM Users WHERE Username = ?"; OleDbCommand selectPageUserDataCmd = new OleDbCommand(selectPageUserDataCmdStr, conn); selectPageUserDataCmd.Parameters.Add(new OleDbParameter("@Username", Request.QueryString["u"])); conn.Open(); OleDbDataReader drPageUserData = selectPageUserDataCmd.ExecuteReader(); int pageUserID = 0; string pageUserName = ""; string pageUserScheduleString = ""; while (drPageUserData.Read()) { Boolean hasFirstName = true; Boolean hasLastName = true; string firstName = ""; string lastName = ""; if (drPageUserData["First_Name"].ToString().Trim() == "NULL" || drPageUserData["First_Name"].ToString().Trim().Equals("")) hasFirstName = false; else firstName = drPageUserData["First_Name"].ToString(); if (drPageUserData["Last_Name"].ToString().Trim() == "NULL" || drPageUserData["Last_Name"].ToString().Trim().Equals("")) hasLastName = false; else lastName = drPageUserData["Last_Name"].ToString(); pageUserID = (int)drPageUserData["ID"]; if (drPageUserData["Schedule"] != null && !drPageUserData["Schedule"].ToString().Trim().Equals("")) pageUserScheduleString = (string)drPageUserData["Schedule"]; if (hasFirstName || hasLastName) pageUserName = firstName + " " + lastName + " (" + Request.QueryString["u"] + ")"; else pageUserName = Request.QueryString["u"]; } drPageUserData.Close(); conn.Close(); this.lblName.Text = pageUserName; 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(); Boolean isFriend = false; 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]); foreach (int ifriendID in friendIDs) if (pageUserID == ifriendID) isFriend = true; } if (isFriend) this.btnFriendAddRemove.Text = "Remove from Friends"; else this.btnFriendAddRemove.Text = "Add to Friends"; HDSchedule schedule = getSchedule(Request.QueryString["u"]); HDSchedule currentUserSchedule = getSchedule(Convert.ToInt32(Session["UserID"])); Comparator compare = new Comparator(schedule, currentUserSchedule); Boolean scheduleHasClasses = schedule.hasClasses(); Boolean scheduleHasTeachers = schedule.hasTeachers(); if (scheduleHasClasses) { ltrClasses.Text = ""; ltrClasses.Text += "<table id='classes-user-table'><tr><th id='classes-table-header' colspan='6'>Classes</th></tr>"; Boolean[,] simClasses = compare.getCommonPeriods(); 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++) { if (simClasses[x, y] == true) { ltrClasses.Text += "<td class='classes-cell classes-cell-highlight'>"; ltrClasses.Text += schedule.classes[x, y]; ltrClasses.Text += "</td>"; } else { ltrClasses.Text += "<td class='classes-cell'>"; ltrClasses.Text += schedule.classes[x, y]; ltrClasses.Text += "</td>"; } } ltrClasses.Text += "</tr>"; } ltrClasses.Text += "</table>"; } if (scheduleHasTeachers) { ltrTeachers.Text = ""; ltrTeachers.Text += "<table id='teachers-user-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'>"; ltrTeachers.Text += className; 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>"; } ltrComparison.Text = ""; ltrComparison.Text += "<div id='user-comparison-text'>"; if (!currentUserSchedule.hasTeachers()) ltrComparison.Text += "<span class='user-comparison-text-header'>You have not added your schedule yet</span>"; else if (!schedule.hasClasses() && !schedule.hasTeachers()) ltrComparison.Text += "<span class='user-comparison-text-header'>This user has not added their schedule yet</span>"; else if (schedule.hasClasses() && !schedule.hasTeachers()) ltrComparison.Text += "<span class='user-comparison-text-header'>This user has not added their teachers yet</span>"; else { ltrComparison.Text += "<span class='user-comparison-text-header'>Common Classes:</span> "; foreach (string className in compare.getCommonClasses()) ltrComparison.Text += "<br />" + className; ltrComparison.Text += "<br /><br /><span class='user-comparison-text-header'>Common Frees:</span> "; foreach (string freePeriod in compare.getCommonFrees()) ltrComparison.Text += "<br />" + freePeriod; ltrComparison.Text += "<br /><br /><span class='user-comparison-text-header'>Common Lunches:</span> <br />"; foreach (string lunchPeriod in compare.getCommonLunches()) ltrComparison.Text += lunchPeriod + " "; } ltrComparison.Text += "</div>"; }