From c07247bb66a3bf340dce1a2eb85fac5c0835c3cf Mon Sep 17 00:00:00 2001
From: Tim Young <tim.young@lightsys.org>
Date: Mon, 14 Aug 2017 16:13:17 -0500
Subject: [PATCH] Pieces for testing and tracking status of homework checking.

---
 EduNetworkBuilder/NB.cs                       |  1 +
 EduNetworkBuilder/Network.cs                  | 21 ++++++++++++++++++-
 .../PersonProfileForm.Designer.cs             | 13 ++++++++++++
 EduNetworkBuilder/PersonProfileForm.cs        | 17 +++++++++++++++
 4 files changed, 51 insertions(+), 1 deletion(-)

diff --git a/EduNetworkBuilder/NB.cs b/EduNetworkBuilder/NB.cs
index 15b2d41..c4178a1 100644
--- a/EduNetworkBuilder/NB.cs
+++ b/EduNetworkBuilder/NB.cs
@@ -84,6 +84,7 @@ namespace EduNetworkBuilder
         Level6_NeedVLANs, Level6_SwitchedUp,
 
     }
+    public enum HomeworkSolvedStatus { NeverChecked, CheckedFailed, CheckedSucceeded }
     public enum DebugPausePoint { none=0, packet_create=1, packet_kill=2, 
         packet_in=4, packet_out=8, packet_duplicate=16, all=63, 
         dump=256, pause=512}
diff --git a/EduNetworkBuilder/Network.cs b/EduNetworkBuilder/Network.cs
index 8cba3e0..88a5b4e 100644
--- a/EduNetworkBuilder/Network.cs
+++ b/EduNetworkBuilder/Network.cs
@@ -66,6 +66,8 @@ namespace EduNetworkBuilder
         private List<Image> PacketImages = new List<Image>();
         private List<PingTestStatus> PingTestStats = new List<PingTestStatus>();
 
+        public HomeworkSolvedStatus HomeworkStatus = HomeworkSolvedStatus.NeverChecked;
+
         /// <summary>
         /// WhatFrom: If we are launched from a homework, we remember it here.
         /// </summary>
@@ -243,6 +245,9 @@ namespace EduNetworkBuilder
                         case "sortorder":
                             double.TryParse(Individual.InnerText, out SortOrder);
                             break;
+                        case "homeworkstatus":
+                            HomeworkStatus = NB.ParseEnum<HomeworkSolvedStatus>(Individual.InnerText);
+                            break;
                         case "startinghelplevel":
                            StartingHelpLevel = NB.ParseEnum<NetTestVerbosity>(Individual.InnerText);
                            HintsToDisplay = StartingHelpLevel;
@@ -357,7 +362,9 @@ namespace EduNetworkBuilder
             writer.WriteElementString("startinghelplevel", StartingHelpLevel.ToString());
             writer.WriteElementString("vlansenabled", VLANsEnabled.ToString());
             writer.WriteElementString("VLANPacketColors", VLANPacketColors.ToString());
-            if(!StraightToFile)
+            if(HomeworkStatus != HomeworkSolvedStatus.NeverChecked)
+                writer.WriteElementString("HomeworkStatus", HomeworkStatus.ToString());
+            if (!StraightToFile)
                 writer.WriteElementString("PuzzleName", PuzzleName);
             //Save all the devices
             for (int loop = 0; loop < NetComponents.Count; loop++)
@@ -1771,6 +1778,18 @@ namespace EduNetworkBuilder
 
             return b;
         }
+
+        /// <summary>
+        /// This func tries to non-visually process all the tests, seeing if the network is
+        /// "solved."  This is for homework that is "submitted."
+        /// </summary>
+        public void CheckThatHomeworkIsSolved()
+        {
+            foreach(NetTest NT in NetTests)
+            {
+
+            }
+        }
     }
 
 }
diff --git a/EduNetworkBuilder/PersonProfileForm.Designer.cs b/EduNetworkBuilder/PersonProfileForm.Designer.cs
index 42c4f67..a67dc67 100644
--- a/EduNetworkBuilder/PersonProfileForm.Designer.cs
+++ b/EduNetworkBuilder/PersonProfileForm.Designer.cs
@@ -70,6 +70,7 @@
             this.tvClasswork = new System.Windows.Forms.TreeView();
             this.btnExit = new System.Windows.Forms.Button();
             this.cbTeacherAutoDHCP = new System.Windows.Forms.CheckBox();
+            this.bthAutoTestStudentHomework = new System.Windows.Forms.Button();
             this.tcTabControl.SuspendLayout();
             this.TabProfile.SuspendLayout();
             this.TabClasswork.SuspendLayout();
@@ -379,6 +380,7 @@
             // 
             // TabStudents
             // 
+            this.TabStudents.Controls.Add(this.bthAutoTestStudentHomework);
             this.TabStudents.Controls.Add(this.btnReadAllStudentHomework);
             this.TabStudents.Controls.Add(this.btnAllHomeworkToStudents);
             this.TabStudents.Location = new System.Drawing.Point(4, 25);
@@ -509,6 +511,16 @@
             this.cbTeacherAutoDHCP.UseVisualStyleBackColor = true;
             this.cbTeacherAutoDHCP.CheckedChanged += new System.EventHandler(this.cbTeacherAutoDHCP_CheckedChanged);
             // 
+            // bthAutoTestStudentHomework
+            // 
+            this.bthAutoTestStudentHomework.Location = new System.Drawing.Point(23, 108);
+            this.bthAutoTestStudentHomework.Name = "bthAutoTestStudentHomework";
+            this.bthAutoTestStudentHomework.Size = new System.Drawing.Size(207, 23);
+            this.bthAutoTestStudentHomework.TabIndex = 8;
+            this.bthAutoTestStudentHomework.Text = "Auto-test homework";
+            this.bthAutoTestStudentHomework.UseVisualStyleBackColor = true;
+            this.bthAutoTestStudentHomework.Click += new System.EventHandler(this.bthAutoTestStudentHomework_Click);
+            // 
             // PersonProfileForm
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
@@ -578,5 +590,6 @@
         private System.Windows.Forms.Button btnReadAllStudentHomework;
         private System.Windows.Forms.Button btnExportStudentPasswords;
         private System.Windows.Forms.CheckBox cbTeacherAutoDHCP;
+        private System.Windows.Forms.Button bthAutoTestStudentHomework;
     }
 }
\ No newline at end of file
diff --git a/EduNetworkBuilder/PersonProfileForm.cs b/EduNetworkBuilder/PersonProfileForm.cs
index 228879f..f070ef5 100644
--- a/EduNetworkBuilder/PersonProfileForm.cs
+++ b/EduNetworkBuilder/PersonProfileForm.cs
@@ -989,5 +989,22 @@ namespace EduNetworkBuilder
         {
             CurrentUser.UserSettings.AutoDHCPAllMachinesAtNetworkLoad = cbTeacherAutoDHCP.Checked;
         }
+
+        private void bthAutoTestStudentHomework_Click(object sender, EventArgs e)
+        {
+            if (CurrentUser == null) return;
+            //Test all student's homework that is ungraded.
+            foreach(PersonClass student in CurrentUser.Students)
+            {
+                foreach(SchoolworkClass homework in student.Projects)
+                {
+                    if(homework.IsSumbitted && !homework.IsGraded)
+                    {
+                        //We only need to test homework that is submitted and not graded.
+
+                    }
+                }
+            }
+        }
     }
 }
\ No newline at end of file