コード例 #1
0
ファイル: rubrics.cs プロジェクト: lokygb/FrontDesk
        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);
        }
コード例 #2
0
ファイル: users.cs プロジェクト: lokygb/FrontDesk
        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);
        }
コード例 #3
0
ファイル: rubrics.cs プロジェクト: lokygb/FrontDesk
        /// <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);
            }
        }
コード例 #4
0
ファイル: rubrics.cs プロジェクト: lokygb/FrontDesk
        /// <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);
        }
コード例 #5
0
ファイル: rubrics.cs プロジェクト: lokygb/FrontDesk
        /// <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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
ファイル: users.cs プロジェクト: lokygb/FrontDesk
        /// <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);
        }
コード例 #8
0
ファイル: rubrics.cs プロジェクト: lokygb/FrontDesk
        /// <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);
        }
コード例 #9
0
ファイル: rubrics.cs プロジェクト: lokygb/FrontDesk
 /// <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);
 }