protected void Page_Load(object sender, EventArgs e) { string file_name = Server.MapPath(@"~/App_Data/tt_data.ttd"); Cerval_Configuration c; c = new Cerval_Configuration("StaffIntranet_TTD_TimetablePlanDate"); DateTime date1 = new DateTime(); try { date1 = System.Convert.ToDateTime(c.Value); } catch { date1 = DateTime.Now; } TTData tt1 = new TTData(); c = new Cerval_Configuration("StaffIntranet_UseOldTTDfile"); if (c.Value.ToUpper() == "TRUE") { tt1.Load(file_name, date1, date1, false, false, ""); } else { tt1.Load_DB(date1); //load from database } string[] r = new string[255]; string[] per = new string[5]; per[0] = "1"; per[1] = "2"; per[2] = "3"; per[3] = "4"; per[4] = "5"; int n = 0; string s1 = ""; string s = "<p><TABLE BORDER class= \"TimetableTable\" ><tr><th>Day</th> <th>1</th> <th>2</th> <th>3</th> <th>4</th> <th>5</th> </tr>"; //only going to do mon-fri period 1,2,3,4,5 string[] days = new string[5]; days[0] = "MO "; days[1] = "TU "; days[2] = "WE "; days[3] = "TH "; days[4] = "FR "; string ExcludeList = ",MAF,"; for (int d = 0; d < 5; d++) { s += "<tr><td>" + days[d] + "</td>"; for (int p = 0; p < 5; p++) { s += "<td>"; n = tt1.FindFreeStaff(d, per[p], ref r); for (int i = 0; i < n; i++) { if (r[i].Trim().Length > 0) { s1 = "," + r[i].Trim().ToUpper() + ","; if (!ExcludeList.Contains(s1)) { s += r[i] + ", "; } } } s += "</td>"; } s += "</tr>"; } s += "</table>"; s += "<br/><p>The following staff are excluded in the search above:<br/>" + ExcludeList + "</p>"; content.InnerHtml = s; }
/// <summary> /// Initialisiert eine neue Instanz der LXTimer-Klasse zum angegebenen Zeitintervall und startet diesen. /// (Threading.Timer Wrapper) /// </summary> /// <param name="action">Eine System.Action mit dem Timer als Parameter, der die auszuführende Methode darstellt.</param> /// <param name="dueTime">Die in Millisekunden angegebene Zeitspanne, die gewartet werden soll, bis callback aufgerufen wird. Geben Sie System.Threading.Timeout.Infinite(-1) an, um das Starten des Zeitgebers zu verhindern. Geben Sie 0 (null) an, um den Zeitgeber sofort zu starten.</param> /// <param name="interval"> Das in Millisekunden angegebene Zeitintervall zwischen den Aufrufen von callback. Geben Sie System.Threading.Timeout.Infinite(-1) an, um periodisches Signalisieren zu deaktivieren.</param> public LXTimer(Action <LXTimer> action, int dueTime, int interval) { Action = action; timer = new TTData(); var t = new System.Threading.Timer( new TimerCallback((ob) => { Action.Invoke((LXTimer)ob); }), this, dueTime, interval); timer.timer = t; }
protected void ButtonGenerateTT_Click(object sender, EventArgs e) { string s = ""; string file_name = Server.MapPath(@"~/App_Data/tt_data.ttd"); int p1 = 0; string[,] data = new string[30, max_rows]; //has the display data string[] staff = new string[max_rows]; int no_staff = 0; ListBox_staff.Visible = false; RadioButtonList1.Visible = false; HeaderDiv.Visible = false; Cerval_Configuration c = new Cerval_Configuration("StaffIntranet_TTD_TimetablePlanDate"); DateTime date1 = new DateTime(); try { date1 = System.Convert.ToDateTime(c.Value); } catch { date1 = DateTime.Now; } TTData tt1 = new TTData(); c = new Cerval_Configuration("StaffIntranet_UseOldTTDfile"); if (c.Value.ToUpper() == "TRUE") { tt1.Load(file_name, date1, date1, false, false, ""); } else { tt1.Load_DB(date1); } if (RadioButtonList1.SelectedValue == "Staff") { foreach (ListItem l in ListBox_staff.Items) { if (l.Selected) { s = l.Text; staff[no_staff] = l.Text.Trim().ToUpper(); no_staff++; } } } if (RadioButtonList1.SelectedValue == "Subjects") { bool found = false; foreach (TTData.TT_period t in tt1.periodlist1.m_list) { foreach (ListItem l in ListBox_staff.Items) { if (t.SetName.ToUpper().Contains(l.Text.ToUpper().Trim()) && l.Selected) { found = false; s = t.StaffCode.ToUpper().Trim(); for (int r = 0; r < no_staff; r++) { if (staff[r] == s) { found = true; break; } } if (!found) { staff[no_staff] = s; no_staff++; } } } } } if (RadioButtonList1.SelectedValue == "All") { foreach (ListItem l in ListBox_staff.Items) { if (l.Selected) { s = l.Text; staff[no_staff] = l.Text.Trim().ToUpper(); no_staff++; } } } foreach (TTData.TT_period t in tt1.periodlist1.m_list) { for (int r = 0; r < no_staff; r++) { if (t.StaffCode.Trim().ToUpper() == staff[r]) { try { p1 = System.Convert.ToInt16(t.PeriodCode); } catch { p1 = 0;//reg periods etc } if (p1 > 0) { data[t.DayNo * 5 + p1, r] = t.SetName + "<br>" + t.RoomCode; } } } } content0.InnerHtml = GenerateTimetable(data, staff, no_staff); }
protected void TT_compare() { TTData t0 = new TTData(); t0.Load(@"s:\tt_data1.ttd", DateTime.Now, DateTime.Now, false, false, "RG"); TTData t1 = new TTData(); t1.Load_DB(DateTime.Now); int n = 0; int n1 = 0; //sort out all that are the same..... foreach (TTData.TT_period p in t0.periodlist1.m_list) { p.SetName = p.SetName.Trim().ToUpper(); n++; } foreach (TTData.TT_period p in t1.periodlist1.m_list) { p.SetName = p.SetName.Trim().ToUpper(); n1++; } foreach (TTData.TT_period p in t0.periodlist1.m_list) { foreach (TTData.TT_period p1 in t1.periodlist1.m_list) { if (p.Is_SameAs(p1) && p.valid && p1.valid) { p.valid = false; p1.valid = false; n++; break; } } } n = 0; n1 = 0; foreach (TTData.TT_period p in t0.periodlist1.m_list) { if (p.valid) { n++; } } foreach (TTData.TT_period p in t1.periodlist1.m_list) { if (p.valid) { n1++; } } TextBox1.Text = ""; // now find those where only room has changed n = 0; foreach (TTData.TT_period p in t0.periodlist1.m_list) { if (p.valid) { foreach (TTData.TT_period p1 in t1.periodlist1.m_list) { if (p1.valid) { if ((p.SetName == p1.SetName) && (p.StaffId == p1.StaffId) && (p.PeriodId == p1.PeriodId)) { //assume it is the room!!! TextBox1.Text += p.SetName + "," + p.StaffCode + "," + p.DayNo.ToString() + "," + p.PeriodCode + "," + p.RoomCode; TextBox1.Text += "," + p1.SetName + "," + p1.StaffCode + "," + p1.DayNo.ToString() + "," + p1.PeriodCode + "," + p1.RoomCode; TextBox1.Text += Environment.NewLine; p.valid = false; p1.valid = false; n++; break; } } } } } TextBox1.Text += Environment.NewLine; TextBox1.Text += Environment.NewLine; // now find those where staff has changed n = 0; foreach (TTData.TT_period p in t0.periodlist1.m_list) { if (p.valid) { foreach (TTData.TT_period p1 in t1.periodlist1.m_list) { if (p1.valid) { if ((p.SetName == p1.SetName) && (p.PeriodId == p1.PeriodId)) { //assume it is the room!!! TextBox1.Text += p.SetName + "," + p.StaffCode + "," + p.DayNo.ToString() + "," + p.PeriodCode + "," + p.RoomCode; TextBox1.Text += "," + p1.SetName + "," + p1.StaffCode + "," + p1.DayNo.ToString() + "," + p1.PeriodCode + "," + p1.RoomCode; TextBox1.Text += Environment.NewLine; p.valid = false; p1.valid = false; n++; break; } } } } } n = 0; TextBox1.Text += Environment.NewLine; TextBox1.Text += Environment.NewLine; foreach (TTData.TT_period p in t0.periodlist1.m_list) { if (p.valid) { TextBox1.Text += p.SetName + "," + p.StaffCode + "," + p.DayNo.ToString() + "," + p.PeriodCode + "," + p.RoomCode; TextBox1.Text += Environment.NewLine; p.valid = false; n++; } } TextBox1.Text += Environment.NewLine; TextBox1.Text += Environment.NewLine; foreach (TTData.TT_period p in t1.periodlist1.m_list) { if (p.valid) { TextBox1.Text += ",,,,,"; TextBox1.Text += p.SetName + "," + p.StaffCode + "," + p.DayNo.ToString() + "," + p.PeriodCode + "," + p.RoomCode; TextBox1.Text += Environment.NewLine; p.valid = false; n++; } } n1 = 0; foreach (TTData.TT_period p in t0.periodlist1.m_list) { if (p.valid) { n1++; } } string s = ""; }
protected void Button_savechanges_Click(object sender, EventArgs e) { // oh deary me... recover the viewstate string[] rooms = new string[max_rows];//room names int no_rooms = 0; string[,] data = new string[30, max_rows]; //has the display data string[] data1 = new string[30 * max_rows]; long[,] pointers = new long[30, max_rows];//has the file ppointers... long[] pointers1 = new long[30 * max_rows]; Guid[,] ScheduledPeriodIds = new Guid[30, max_rows]; Guid[] ScheduledPeriodIds1 = new Guid[30 * max_rows]; data1 = (string[])ViewState["data"]; for (int r = 0; r < max_rows; r++) { for (int i = 0; i < 30; i++) { data[i, r] = data1[i + r * 30]; } } bool UseTTD = (bool)ViewState["UseTTD"]; if (UseTTD) { pointers1 = (long[])ViewState["pointers"]; for (int r = 0; r < max_rows; r++) { for (int i = 0; i < 30; i++) { pointers[i, r] = pointers1[i + r * 30]; } } } else { ScheduledPeriodIds1 = (Guid[])ViewState["ScheduledPeriodIds"]; for (int r = 0; r < max_rows; r++) { for (int i = 0; i < 30; i++) { ScheduledPeriodIds[i, r] = ScheduledPeriodIds1[i + r * 30]; } } } no_rooms = (int)ViewState["no_rooms"]; rooms = (string[])ViewState["rooms"]; string file_name = Server.MapPath(@"~/App_Data/tt_data.ttd"); Cerval_Configuration c = new Cerval_Configuration("StaffIntranet_TTD_TimetablePlanDate"); DateTime date1 = new DateTime(); try { date1 = System.Convert.ToDateTime(c.Value); } catch { date1 = DateTime.Now; } TTData tt1 = new TTData(); if (UseTTD) { tt1.Load(file_name, date1, date1, false, false, ""); } else { tt1.Load_DB(date1); } //load from database int[] room_ttcode = new int[30]; for (int i = 0; i < 30; i++) { room_ttcode[i] = -1; } for (int r = 0; r < no_rooms; r++) { for (int r1 = 0; r1 < tt1.room_count; r1++) { try { if (tt1.RoomCodes[r1].Trim() == rooms[r].Trim()) { //so the code here is r1... room_ttcode[r] = r1;// so for row r the integer index is r1 now in room_ttcode[r] } } catch {// to catch nulls in room_ttcode[] } } } //now all we have to do is go through the file and update the rooms.... if (UseTTD) { FileStream fs = new FileStream(file_name, FileMode.Open, FileAccess.ReadWrite); for (int r = 0; r < max_rows; r++) { for (int i = 0; i < 30; i++) { if (pointers[i, r] > 0) { if (room_ttcode[r] >= 0) { fs.Position = pointers[i, r] + 9; fs.WriteByte((byte)room_ttcode[r]); } } } } fs.Close(); } else { for (int r = 0; r < max_rows; r++) //for each row ie each room { for (int i = 0; i < 30; i++) //for each period { if (ScheduledPeriodIds[i, r] != Guid.Empty) //there is a set here { foreach (TTData.TT_period p in tt1.periodlist1.m_list) //find the TT_period { if (p.ScheduledPeriodId == ScheduledPeriodIds[i, r]) { // which room id for this row?? if (room_ttcode[r] >= 0) //ie we found a ref... { Guid new_room = tt1.RoomList1[room_ttcode[r]]; if (p.RoomId != new_room) { ScheduledPeriod p1 = new ScheduledPeriod(); p1.Load(p.ScheduledPeriodId); p1.m_RoomId = new_room; p1.UpdateRoom(); } } break; } } } } } } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Utility u = new Utility(); string staff_code = u.GetsStaffCodefromRequest(Request); string file_name = Server.MapPath(@"~/App_Data/tt_data.ttd"); Cerval_Configuration c = new Cerval_Configuration("StaffIntranet_TTD_TimetablePlanDate"); DateTime date1 = new DateTime(); try { date1 = System.Convert.ToDateTime(c.Value); } catch { date1 = DateTime.Now; } TTData tt1 = new TTData(); bool UseTTD = true; c = new Cerval_Configuration("StaffIntranet_UseOldTTDfile"); if (c.Value.ToUpper() == "TRUE") { tt1.Load(file_name, date1, date1, false, false, ""); } else { tt1.Load_DB(date1); //load from database UseTTD = false; } //string[] rooms = new string[max_rows];//room names //string[] rooms_t = new string[max_rows];//room names List <string> rooms = new List <string>(); List <string> subjects = new List <string>(); int no_rooms = 0; int no_rows = 0; //string[] subjects = new string[10]; int no_subjects = 0; string[,] data = new string[30, max_rows]; //has the display data long[,] pointers = new long[30, max_rows]; //has the file ppointers for TTD Guid[,] ScheduledPeriodIds = new Guid[30, max_rows]; //has period ids for db use string[] setupS = new string[20]; string[] staffS = new string[20]; string[] subS = new string[20]; char[] c1 = new char[1]; c1[0] = ','; char[] c2 = new char[1]; c2[0] = ';'; char[] c3 = new char[1]; c3[0] = ':'; staff_code = staff_code.Trim().ToUpper(); no_rooms = 0; bool found = false; c = new Cerval_Configuration("StaffIntranet_TTD_EditRoomsList"); //list has staffcode;room1,room2,room3;subject1,sub2: string[] initialS = new string[20]; string[] temp1 = new string[3]; initialS = c.Value.Split(c3); for (int i = 0; i < 9; i++) { try { temp1 = initialS[i].Split(c2); setupS[i] = temp1[1]; staffS[i] = temp1[0]; subS[i] = temp1[2]; } catch { }; } /* * setupS[0] = "P1,P2,P3,P4,P5"; staffS[0] = "LBI"; subS[0] = "PH,ET"; * setupS[1] = "P1,P2,P3,P4,P5,B1,B2,B3,B4,Q9,C1,C2,C3"; staffS[1] = "ABR"; subS[1] = "BI,PH,CH"; * setupS[2] = "C1,C2,C3"; staffS[2] = "JHO"; subS[2] = "CH"; * setupS[3] = "21,22,23,24,31,32,33,34,41"; staffS[3] = "CH"; subS[3] = "MA"; * setupS[4] = "N11,N12,N13,N14"; staffS[4] = "AAB"; subS[4] = "GE"; * setupS[5] = "11,12,13,14,L4,L5,Q6"; staffS[5] = "EWA"; subS[5] = "FR,GM,SP"; * setupS[6] = "N1,N2,N3,N4,Q7,Q8,Q13,ST11"; staffS[6] = "FRO"; subS[6] = "EN,EL,TH"; * setupS[7] = "P1,P2,P3,P4,P5,B1,B2,B3,B4,Q9,C1,C2,C3"; staffS[7] = "JA"; subS[7] = "BI,CH,PH";//testing * setupS[8] = "W12,W13,W1,W2,W3,W11,N11,N12,N13,N14,A8,A9"; staffS[8] = "GWS"; subS[8] = "RS,GE,HI"; * setupS[9] = "P1"; staffS[9] = "CC"; subS[9] = "RS,GE,HI";//testing * //find the staff */ staff_code = staff_code.Trim().ToUpper(); for (int i = 0; i < 10; i++) { if (staffS[i] == staff_code) { string [] rooms1 = setupS[i].Split(c1); found = true; foreach (string s1 in rooms1) { rooms.Add(s1); } string[] subject1 = subS[i].Split(c1); foreach (string s1 in subject1) { subjects.Add(s1); } break; } } if (!found) { return; } no_rooms = rooms.Count; no_rows = no_rooms; no_subjects = subjects.Count; foreach (string s1 in rooms) { ListItem l = new ListItem(s1, rooms.IndexOf(s1).ToString()); DropDownList_room1.Items.Add(l); DropDownList_room2.Items.Add(l); } int p1 = 0; foreach (TTData.TT_period t in tt1.periodlist1.m_list) { if (rooms.Contains(t.RoomCode.Trim().ToUpper())) { int r = rooms.IndexOf(t.RoomCode.Trim().ToUpper()); try { p1 = System.Convert.ToInt16(t.PeriodCode); } catch { p1 = 0;//reg periods etc } if (p1 > 0) { data[t.DayNo * 5 + p1, r] = t.SetName + "<br>" + t.StaffCode; pointers[t.DayNo * 5 + p1, r] = t.File_Position;// only one of these lines works! ScheduledPeriodIds[t.DayNo * 5 + p1, r] = t.ScheduledPeriodId; } } else { foreach (string s1 in subjects) { if (t.SetName.Trim().ToUpper().Contains(s1)) { try { p1 = System.Convert.ToInt16(t.PeriodCode); } catch { p1 = 0;//reg periods etc } if (p1 > 0) { // now to add room to the drop downs.... ListItem l = DropDownList_room1.Items.FindByText(t.RoomCode.Trim().ToUpper()); if (l == null) { //need to add it... l = new ListItem(t.RoomCode.Trim().ToUpper(), no_rooms.ToString()); DropDownList_room1.Items.Add(l); DropDownList_room2.Items.Add(l); data[t.DayNo * 5 + p1, no_rooms] = t.SetName + "<br>" + t.StaffCode; pointers[t.DayNo * 5 + p1, no_rooms] = t.File_Position; ScheduledPeriodIds[t.DayNo * 5 + p1, no_rooms] = t.ScheduledPeriodId; rooms.Add(t.RoomCode.Trim().ToUpper()); no_rooms++; } else { int r1 = DropDownList_room1.Items.IndexOf(l); data[t.DayNo * 5 + p1, r1] = t.SetName + "<br>" + t.StaffCode; pointers[t.DayNo * 5 + p1, r1] = t.File_Position; ScheduledPeriodIds[t.DayNo * 5 + p1, r1] = t.ScheduledPeriodId; } } } } } } string[] rooms_t = new string[no_rooms]; rooms_t = rooms.ToArray(); content0.InnerHtml = GenerateTimetable(data, rooms_t, no_rooms); //to serialise we need to put data /pointers into 1D arrays... string[] data1 = new string[30 * max_rows]; for (int r = 0; r < max_rows; r++) { for (int i = 0; i < 30; i++) { data1[i + r * 30] = data[i, r]; } } ViewState.Add("data", data1); ViewState.Add("UseTTD", UseTTD); if (!UseTTD) { Guid[] ScheduledPeriodIds1 = new Guid[30 * max_rows]; for (int r = 0; r < max_rows; r++) { for (int i = 0; i < 30; i++) { ScheduledPeriodIds1[i + r * 30] = ScheduledPeriodIds[i, r]; } } ViewState.Add("ScheduledPeriodIds", ScheduledPeriodIds1); } else { long[] pointers1 = new long[30 * max_rows]; for (int r = 0; r < max_rows; r++) { for (int i = 0; i < 30; i++) { pointers1[i + r * 30] = pointers[i, r]; } } ViewState.Add("pointers", pointers1); } ViewState.Add("rooms", rooms_t); ViewState.Add("no_rooms", no_rooms); ViewState.Add("no_rows", no_rows); ViewState.Add("UseTTd", UseTTD); } }
protected void ButtonGenerateTT_Click(object sender, EventArgs e) { string file_name = Server.MapPath(@"~/App_Data/tt_data.ttd"); int p1 = 0; string[,] data = new string[30, max_rows]; //has the display data for (int i = 0; i < 30; i++) { for (int j = 0; j < max_rows; j++) { data[i, j] = ""; } } string[] staff = new string[max_rows]; int no_staff = 0; ListBox_year.Visible = false; HeaderDiv.Visible = false; Cerval_Configuration c = new Cerval_Configuration("StaffIntranet_TTD_TimetablePlanDate"); DateTime date1 = new DateTime(); try { date1 = System.Convert.ToDateTime(c.Value); } catch { date1 = DateTime.Now; } TTData tt1 = new TTData(); c = new Cerval_Configuration("StaffIntranet_UseOldTTDfile"); if (c.Value.ToUpper() == "TRUE") { tt1.Load(file_name, date1, date1, false, false, ""); } else { tt1.Load_DB(date1); } int x = 0; foreach (TTData.TT_period t in tt1.periodlist1.m_list) { foreach (ListItem l in ListBox_year.Items) { if (t.SetName.Substring(0, 2).ToUpper().Contains(l.Text.ToUpper().Trim()) && l.Selected) { //so we want this set.... try { p1 = System.Convert.ToInt16(t.PeriodCode); } catch { p1 = 0;//reg periods etc } if (p1 > 0) { x = t.DayNo * 5 + p1; for (int i = 0; i < max_rows; i++) { if (data[x, i] == "") { data[x, i] = t.SetName + "<br>" + t.StaffCode.Trim(); if ((i + 1) > no_staff) { no_staff++; } break; } } } } } } content0.InnerHtml = GenerateTimetable(data, staff, no_staff); }