public void SynchronizePoints() { Courses courseda = new Courses(m_ident); Assignments asstda = new Assignments(m_ident); int total = 0; Course.CourseList courses = courseda.GetAll(); foreach (Course course in courses) { Assignment.AssignmentList assts = courseda.GetAssignments(course.ID); foreach (Assignment asst in assts) { Rubric arub = asstda.GetRubric(asst.ID); Rubric.RubricList rubs = Flatten(arub); Components.Submission.SubmissionList subs = asstda.GetSubmissions(asst.ID); foreach (Rubric rub in rubs) { foreach (Components.Submission sub in subs) { m_dp.UpdateRubricSubPoints(rub.ID, sub.ID); total++; } } } } System.Diagnostics.Trace.WriteLine(total); }
public ExportRow GetAsstExport(Components.Submission sub, int asstID, out double totpoints) { Rubrics rubda = new Rubrics(m_ident); ExportRow row = new ExportRow(); //Get all rubric entries for the assignment Rubric rub = new Assignments(m_ident).GetRubric(asstID); Rubric.RubricList rublist = rubda.Flatten(rub); //Tally //Cats double points = 0; foreach (Rubric rubent in rublist) { if (sub == null) { row.Fields.Add("0"); } else { double catpoints = rubda.GetPoints(rubent.ID, sub.ID); points += catpoints; row.Fields.Add(catpoints.ToString()); } } //Total row.Fields.Insert(0, points.ToString()); totpoints = points; return(row); }
/// <summary> /// Sort in somewhat topological order /// </summary> private void FlattenRubric(Rubric.RubricList rublist, Rubric rub) { Rubric.RubricList children = GetChildren(rub.ID); foreach (Rubric child in children) { FlattenRubric(rublist, child); } if (!IsHeading(rub)) { rublist.Add(rub); } }
/// <summary> /// Retally the points /// </summary> private double RetallyPoints(Rubric rub) { double points = 0.0; if (rub.Points >= 0.0 && rub.ParentID >= 0) { points += rub.Points; } Rubric.RubricList chil = GetChildren(rub.ID); foreach (Rubric crub in chil) { points += RetallyPoints(crub); } return(points); }
/// <summary> /// Get earned points for a rubric /// Direct Provider layer call /// </summary> public double GetPoints(int rubID, int subID) { double points; //Check for an entry, if none, compute, otherwise return if (!m_dp.GetRubricPoints(rubID, subID, out points)) { Rubric trub = GetInfo(rubID); Rubric.RubricList rubs = Flatten(trub); foreach (Rubric rub in rubs) { m_dp.UpdateRubricSubPoints(rub.ID, subID); } m_dp.GetRubricPoints(rubID, subID, out points); } return(points); }
private DataTable TabulateUsers(User.UserList users) { DataTable resulttab = new DataTable(); int asstID = GetAsstID(); Rubrics rubda = new Rubrics(Globals.CurrentIdentity); Principals prinda = new Principals(Globals.CurrentIdentity); Rubric asstrub = new Assignments(Globals.CurrentIdentity).GetRubric(asstID); //Add rubric columns to data grid Rubric.RubricList flatrub = rubda.Flatten(asstrub); resulttab.Columns.Add("UserName"); resulttab.Columns.Add("Status"); resulttab.Columns.Add("Total"); foreach (Rubric rub in flatrub) { AddRubricColumn(rub.Name, rub.Name); resulttab.Columns.Add(rub.Name); } //Add user data to the datatable foreach (User user in users) { Components.Submission sub = prinda.GetLatestSubmission(user.PrincipalID, asstID); DataRow row = resulttab.NewRow(); if (sub == null) { continue; } row["UserName"] = user.UserName; row["Status"] = sub.Status; row["Total"] = rubda.GetPoints(asstrub.ID, sub.ID).ToString() + "/" + asstrub.Points.ToString(); foreach (Rubric rub in flatrub) { row[rub.Name] = GetRubricPoints(rub, sub.ID) + "/" + rub.Points.ToString(); } resulttab.Rows.Add(row); } return(resulttab); }
/// <summary> /// Get the heading row for an export /// </summary> public ExportRow GetAsstExportHeading(int asstID) { Rubrics rubda = new Rubrics(m_ident); ExportRow row = new ExportRow(); //Get all rubric entries for the assignment Assignment asst = new Assignments(m_ident).GetInfo(asstID); Rubric rub = new Assignments(m_ident).GetRubric(asstID); Rubric.RubricList rublist = rubda.Flatten(rub); //Total row.Fields.Add(asst.Description + " Total"); foreach (Rubric rubent in rublist) { row.Fields.Add(rubent.Name); } return(row); }
/// <summary> /// Delete a rubric entry /// </summary> public bool Delete(int rubID) { //check permission Rubric rub = GetInfo(rubID); Assignment asst = new Assignments(m_ident).GetInfo(rub.AsstID); Authorize(asst.CourseID, "deleterubric", asst.ID, null); //Delete children Rubric.RubricList chil = GetChildren(rubID); foreach (Rubric c in chil) { Delete(c.ID); } //Delete any underlying evaluation if (rub.EvalID >= 0) { new Evaluations(m_ident).Delete(rub.EvalID); } //Delete entry m_dp.DeleteRubricEntry(rubID); //Retally points and update root entry if (rub.ParentID >= 0) { Rubric root = new Assignments(m_ident).GetRubric(rub.AsstID); root.Points = RetallyPoints(root); m_dp.UpdateRubricEntry(root); } //Log Log("Deleted rubric entry: " + rub.Name, rub.AsstID); return(true); }
/// <summary> /// Return an asst rubric in the form of a list /// </summary> public Rubric.RubricList Flatten(Rubric rub) { Rubric.RubricList rublist = new Rubric.RubricList(); FlattenRubric(rublist, rub); return(rublist); }