示例#1
0
        protected override void OnEndLoadNecessaryData(ReportBookPage.LoadNecessaryData result)
        {
            base.OnEndLoadNecessaryData(result);

            Rubrics    = result.Rubrics;
            Publishers = result.Publishers;

            var rubrics = result.Rubrics.ToList();

            rubrics.Insert(0, new Rubric()
            {
                Id   = -1,
                Name = "Все"
            });
            var publishers = result.Publishers.ToList();

            publishers.Insert(0, new Publisher()
            {
                Id   = -1,
                Name = "Все"
            });

            RubricItem.Bind(rubrics, r => r.Name, Rubric);
            PublisherItem.Bind(publishers, p => p.Name, Publisher);
        }
        /// <summary>
        /// Calculates the grade for the rubric type.
        /// </summary>
        /// <param name="items">The items.</param>
        /// <param name="rItem">The rubric item.</param>
        /// <returns></returns>
        public double CalculateTypeGrade(List <GradeItemGrade> items, RubricItem rItem)
        {
            int student = 0;
            int max     = 0;

            foreach (var grade in items)
            {
                var gItem = this.GetGradeItem(grade.assignmentID);
                if (string.Equals(gItem.Type, rItem.AssignmentType, StringComparison.OrdinalIgnoreCase))
                {
                    if (grade.Graded == true)
                    {
                        student += grade.Grade;
                        max     += this.GetGradeItem(grade.assignmentID).MaxGrade;
                    }
                }
            }

            double total = 0;

            if (max != 0)
            {
                total = (double)student / (double)max;
                total = total * 100.0;
                total = total * (double)rItem.GradeWeight;
            }
            return(total);
        }
        /// <summary>
        /// Gets the assignment types by CRN.
        /// </summary>
        /// <param name="CRNCheck">The CRN of the selected course</param>
        /// <returns> A list of assignment types for the selected course</returns>
        public List <string> GetAssignmentTypesByCRN(int CRNCheck)
        {
            MySqlConnection conn = DbConnection.GetConnection();

            using (conn)
            {
                conn.Open();
                var selectQuery = "SELECT * FROM rubrics WHERE rubrics.CRN = @CRNCheck";

                using (MySqlCommand cmd = new MySqlCommand(selectQuery, conn))
                {
                    cmd.Parameters.AddWithValue("@CRNCheck", CRNCheck);
                    using (MySqlDataReader reader = cmd.ExecuteReader())
                    {
                        int assignmentTypesOrdinal = reader.GetOrdinal("assignment_types");
                        int weightPerTypeOrdinal   = reader.GetOrdinal("weight_per_type");
                        int rubricIDOrdinal        = reader.GetOrdinal("rubric_id");

                        while (reader.Read())
                        {
                            int               rubricID        = reader[rubricIDOrdinal] == DBNull.Value ? default(int) : reader.GetInt32(rubricIDOrdinal);
                            string            assignmentTypes = reader[assignmentTypesOrdinal] == DBNull.Value ? default(string) : reader.GetString(assignmentTypesOrdinal);
                            string            weightPerType   = reader[weightPerTypeOrdinal] == DBNull.Value ? default(string) : reader.GetString(weightPerTypeOrdinal);
                            List <RubricItem> rubricStuff     = new List <RubricItem>();
                            int               assingmentCount = assignmentTypes.Split('/').Length - 1;
                            int               weightCount     = weightPerType.Split('/').Length - 1;
                            String[]          types           = new String[assingmentCount];
                            String[]          weights         = new String[weightCount];
                            if (assignmentTypes != default(string))
                            {
                                types = assignmentTypes.Split('/');
                            }
                            if (weightPerType != default(string))
                            {
                                weights = weightPerType.Split('/');
                            }

                            for (int i = 0; i < types.Length; i++)
                            {
                                if (!string.IsNullOrWhiteSpace(types[i]))
                                {
                                    RubricItem rubricItem = new RubricItem(CRNCheck, types[i], Convert.ToInt32(weights[i]), i);
                                    rubricStuff.Add(rubricItem);
                                }
                            }
                            List <String> gradeTypes = new List <string>();
                            foreach (var item in rubricStuff)
                            {
                                gradeTypes.Add(item.AssignmentType);
                            }

                            return(gradeTypes);
                        }
                    }
                }
            }

            return(null);
        }
        public void TestRubricItemConstructor()
        {
            RubricItem item = new RubricItem(1, "homework", 25, 1);

            Assert.AreEqual(item.CRN, 1);
            Assert.AreEqual(item.AssignmentType, "homework");
            Assert.AreEqual(item.AssignmentWeight, 25);
            Assert.AreEqual(item.Index, 1);
        }
 private void RubricDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (this.rubricDataGrid.SelectedItem is RubricItem rubricItem)
     {
         this.originalItem             = rubricItem;
         this.assignmentTypeBox.Text   = originalItem.AssignmentType;
         this.assignmentWeightBox.Text = originalItem.AssignmentWeight.ToString();
     }
 }
示例#6
0
        public void GetCourseRubricByCRN(int CRNCheck, DataGrid grid)
        {
            if (CRNCheck <= 0)
            {
                throw new Exception("CRNCheck must be greater than or equal to 0");
            }
            MySqlConnection dbConnection = DbConnection.GetConnection();

            using (dbConnection)
            {
                dbConnection.Open();
                var selectQuery = "SELECT * FROM rubrics WHERE rubrics.CRN = @CRNCheck";

                using (MySqlCommand cmd = new MySqlCommand(selectQuery, dbConnection))
                {
                    cmd.Parameters.AddWithValue("@CRNCheck", CRNCheck);
                    using (MySqlDataReader reader = cmd.ExecuteReader())
                    {
                        int assignmentTypesOrdinal = reader.GetOrdinal("assignment_types");
                        int weightPerTypeOrdinal   = reader.GetOrdinal("weight_per_type");
                        int rubricIDOrdinal        = reader.GetOrdinal("rubric_id");

                        while (reader.Read())
                        {
                            int               rubricID        = reader[rubricIDOrdinal] == DBNull.Value ? default(int) : reader.GetInt32(rubricIDOrdinal);
                            string            assignmentTypes = reader[assignmentTypesOrdinal] == DBNull.Value ? default(string) : reader.GetString(assignmentTypesOrdinal);
                            string            weightPerType   = reader[weightPerTypeOrdinal] == DBNull.Value ? default(string) : reader.GetString(weightPerTypeOrdinal);
                            List <RubricItem> rubricStuff     = new List <RubricItem>();
                            int               assingmentCount = assignmentTypes.Split('/').Length - 1;
                            int               weightCount     = weightPerType.Split('/').Length - 1;
                            String[]          types           = new String[assingmentCount];
                            String[]          weights         = new String[weightCount];
                            if (assignmentTypes != default(string))
                            {
                                types = assignmentTypes.Split('/');
                            }
                            if (weightPerType != default(string))
                            {
                                weights = weightPerType.Split('/');
                            }

                            for (int i = 0; i < types.Length; i++)
                            {
                                if (!string.IsNullOrWhiteSpace(types[i]))
                                {
                                    RubricItem rubricItem = new RubricItem(CRNCheck, types[i], Convert.ToInt32(weights[i]), i);
                                    rubricStuff.Add(rubricItem);
                                }
                            }
                        }
                    }
                }
            }
        }
示例#7
0
        public void UpdateCourseRubric(int crn, string assignmentType, int assignmentWeight, string original_AssignmentType, int original_AssignmentWeight, int index, int original_Index, int original_Crn)
        {
            List <RubricItem> rubric        = GetCourseRubricByCRN(original_Crn);
            RubricItem        original_item = rubric.Find(x =>
                                                          x.AssignmentType.Equals(original_AssignmentType) && x.AssignmentWeight == original_AssignmentWeight);



            string assignment_types = "";
            string weight_per_types = "";

            for (int i = 0; i < rubric.Count; i++)
            {
                if (i == original_item.Index && i != rubric.Count - 1)
                {
                    assignment_types += assignmentType + "/";
                    weight_per_types += assignmentWeight + "/";
                }
                else if (i != rubric.Count - 1)
                {
                    assignment_types += rubric[i].AssignmentType + "/";
                    weight_per_types += rubric[i].AssignmentWeight + "/";
                }
                else if (original_item.Index == i && i == rubric.Count - 1)
                {
                    assignment_types += assignmentType;
                    weight_per_types += assignmentWeight;
                }
                else
                {
                    assignment_types += rubric[i].AssignmentType;
                    weight_per_types += rubric[i].AssignmentWeight;
                }
            }
            MySqlConnection dbConnection = DbConnection.GetConnection();

            using (dbConnection)
            {
                dbConnection.Open();


                var selectQuery =
                    "UPDATE rubrics SET assignment_types=@assignment_types, weight_per_type=@weight_per_type WHERE CRN = @CRN";
                using (MySqlCommand cmd = new MySqlCommand(selectQuery, dbConnection))
                {
                    cmd.Parameters.AddWithValue("@assignment_types", assignment_types);
                    cmd.Parameters.AddWithValue("@weight_per_type", weight_per_types);
                    cmd.Parameters.AddWithValue("@CRN", original_Crn);
                    cmd.ExecuteNonQuery();
                }

                dbConnection.Close();
            }
        }
        public void TestRubricItemProperties()
        {
            RubricItem item = new RubricItem(1, "homework", 25, 1);

            item.CRN              = 3;
            item.AssignmentType   = "projects";
            item.AssignmentWeight = 40;
            item.Index            = 5;
            Assert.AreEqual(item.CRN, 3);
            Assert.AreEqual(item.AssignmentType, "projects");
            Assert.AreEqual(item.AssignmentWeight, 40);
            Assert.AreEqual(item.Index, 5);
        }
        protected void gvwWeights_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            object[] itemParts = new object[4];
            e.Values.Values.CopyTo(itemParts, 0);

            int    CRN            = int.Parse((string)itemParts[1]);
            string assignmentType = (string)itemParts[2];
            int    weight         = int.Parse((string)itemParts[3]);
            int    index          = int.Parse((string)itemParts[0]);

            RubricItem item = new RubricItem(CRN, assignmentType, weight, index);

            HttpContext.Current.Session["RubricItemToDelete"] = item;
        }
示例#10
0
        public void InsertCourseRubric(string assignmentType, int assignmentWeight, int crn)
        {
            if (assignmentType == null)
            {
                throw new Exception("Assignment type cannot be null");
            }

            if (assignmentWeight < 0)
            {
                throw new Exception("Assignment weight must be greater than or equal to zero");
            }



            List <RubricItem> rubric = GetCourseRubricByCRN(crn);
            RubricItem        item   = new RubricItem(crn, assignmentType, assignmentWeight, rubric.Count);

            rubric.Add(item);


            string assignment_types = "";
            string weight_per_types = "";

            for (int i = 0; i < rubric.Count - 1; i++)
            {
                assignment_types += rubric[i].AssignmentType + "/";
                weight_per_types += rubric[i].AssignmentWeight + "/";
            }

            assignment_types += item.AssignmentType;
            weight_per_types += item.AssignmentWeight;
            MySqlConnection dbConnection = DbConnection.GetConnection();

            using (dbConnection)
            {
                dbConnection.Open();
                var updateQuery =
                    "UPDATE rubrics SET assignment_types=@assignment_types, weight_per_type=@weight_per_type WHERE CRN = @CRN";
                using (MySqlCommand cmd = new MySqlCommand(updateQuery, dbConnection))
                {
                    cmd.Parameters.AddWithValue("@assignment_types", assignment_types);
                    cmd.Parameters.AddWithValue("@weight_per_type", weight_per_types);
                    cmd.Parameters.AddWithValue("@CRN", crn);
                    cmd.ExecuteNonQuery();
                }
                dbConnection.Close();
            }
        }
示例#11
0
        protected override void OnEndLoadNecessaryData(BookPage.LoadNecessaryData result)
        {
            base.OnEndLoadNecessaryData(result);

            Rubrics    = result.Rubrics;
            Publishers = result.Publishers;
            Authors    = result.Authors;

            var rubrics = result.Rubrics.ToList();

            rubrics.Insert(0, new Rubric()
            {
                Id   = -1,
                Name = "Все"
            });
            var publishers = result.Publishers.ToList();

            publishers.Insert(0, new Publisher()
            {
                Id   = -1,
                Name = "Все"
            });

            var authors = result.Authors.ToList();

            authors.Insert(0, new Author()
            {
                Id         = -1,
                FirstName  = "Все",
                LastName   = "",
                MiddleName = ""
            });

            RubricItem.Bind(rubrics, r => r.Name, Rubric);
            PublisherItem.Bind(publishers, p => p.Name, Publisher);
            AuthorItem.Bind(authors, a => string.Format("{0} {1} {2}", a.LastName, a.FirstName, a.MiddleName), Author);
        }
        /// <summary>
        /// Inserts the course rubric.
        /// </summary>
        /// <param name="assignmentType">Type of the assignment.</param>
        /// <param name="assignmentWeight">The assignment weight.</param>
        ///
        public void InsertCourseRubric(int crn, string assignmentType, int assignmentWeight)
        {
            List <RubricItem> rubric = GetCourseRubricByCRN(crn);
            RubricItem        item   = new RubricItem(crn, assignmentType, assignmentWeight, rubric.Count);

            rubric.Add(item);


            string assignment_types = "";
            string weight_per_types = "";

            for (int i = 0; i < rubric.Count - 1; i++)
            {
                assignment_types += rubric[i].AssignmentType + "/";
                weight_per_types += rubric[i].AssignmentWeight + "/";
            }

            assignment_types += item.AssignmentType;
            weight_per_types += item.AssignmentWeight;
            MySqlConnection conn = DbConnection.GetConnection();

            using (conn)
            {
                conn.Open();
                var selectQuery =
                    "UPDATE rubrics SET assignment_types=@assignment_types, weight_per_type=@weight_per_type WHERE CRN = @CRN";
                using (MySqlCommand cmd = new MySqlCommand(selectQuery, conn))
                {
                    cmd.Parameters.AddWithValue("@assignment_types", assignment_types);
                    cmd.Parameters.AddWithValue("@weight_per_type", weight_per_types);
                    cmd.Parameters.AddWithValue("@CRN", crn);
                    cmd.ExecuteNonQuery();
                }
                conn.Close();
            }
        }
示例#13
0
        public bool DeleteCourseRubric(int crn, string assignmentType, int assignmentWeight, string original_AssignmentType, int original_AssignmentWeight, int index, int original_Index, int original_Crn)
        {
            List <RubricItem> rubric        = GetCourseRubricByCRN(original_Crn);
            RubricItem        original_item = rubric.Find(x =>
                                                          x.AssignmentType.Equals(original_AssignmentType) && x.AssignmentWeight == original_AssignmentWeight);
            bool            canDelete    = false;
            MySqlConnection dbConnection = DbConnection.GetConnection();

            using (dbConnection)
            {
                dbConnection.Open();
                var selectQuery =
                    "SELECT * from grade_defs WHERE grade_defs.grade_type = @type_to_check AND grade_defs.course_CRN = @CRNCheck";
                using (MySqlCommand cmd = new MySqlCommand(selectQuery, dbConnection))
                {
                    cmd.Parameters.AddWithValue("@type_to_check", original_item.AssignmentType);
                    cmd.Parameters.AddWithValue("@CRNCheck", original_Crn);
                    using (MySqlDataReader reader = cmd.ExecuteReader())
                    {
                        int totalPointsOrdinal = reader.GetOrdinal("grade_total_points");
                        int gradeTypeOrdinal   = reader.GetOrdinal("grade_type");
                        if (reader.Read())
                        {
                            canDelete = false;
                        }
                        else
                        {
                            canDelete = true;
                        }
                    }

                    dbConnection.Close();
                }
            }

            if (canDelete)
            {
                string assignment_types = "";
                string weight_per_types = "";
                for (int i = 0; i < rubric.Count; i++)
                {
                    if (i == original_item.Index && i == rubric.Count - 1)
                    {
                        if (assignment_types.Length > 1)
                        {
                            assignment_types = assignment_types.Substring(0, assignment_types.Length - 1);
                            weight_per_types = weight_per_types.Substring(0, weight_per_types.Length - 1);
                        }
                    }
                    else if (i == original_item.Index)
                    {
                    }
                    else if (i != rubric.Count - 1)
                    {
                        assignment_types += rubric[i].AssignmentType + "/";
                        weight_per_types += rubric[i].AssignmentWeight + "/";
                    }
                    else
                    {
                        assignment_types += rubric[i].AssignmentType;
                        weight_per_types += rubric[i].AssignmentWeight;
                    }
                }

                dbConnection = DbConnection.GetConnection();
                using (dbConnection)
                {
                    dbConnection.Open();
                    var selectQuery =
                        "UPDATE rubrics SET assignment_types=@assignment_types, weight_per_type=@weight_per_type WHERE CRN = @CRN";
                    using (MySqlCommand cmd = new MySqlCommand(selectQuery, dbConnection))
                    {
                        cmd.Parameters.AddWithValue("@assignment_types", assignment_types);
                        cmd.Parameters.AddWithValue("@weight_per_type", weight_per_types);
                        cmd.Parameters.AddWithValue("@CRN", original_item.CRN);
                        cmd.ExecuteNonQuery();
                    }

                    dbConnection.Close();
                }
            }

            return(canDelete);
        }
        /// <summary>
        /// Updates the course rubric.
        /// </summary>
        /// <param name="crn">The CRN.</param>
        /// <param name="assignmentType">Type of the assignment.</param>
        /// <param name="assignmentWeight">The assignment weight.</param>
        /// <param name="original_AssignmentType">Type of the original assignment.</param>
        /// <param name="original_AssignmentWeight">The original assignment weight.</param>
        /// <param name="index">The index.</param>
        /// <param name="original_Index">Index of the original.</param>
        /// <param name="original_Crn">The original CRN.</param>
        public void UpdateCourseRubric(int crn, string assignmentType, int assignmentWeight, string original_AssignmentType, int original_AssignmentWeight, int index, int original_Index, int original_Crn)
        {
            List <RubricItem> rubric        = GetCourseRubricByCRN(crn);
            RubricItem        original_item = rubric.Find(x =>
                                                          x.AssignmentType.Equals(original_AssignmentType) && x.AssignmentWeight == original_AssignmentWeight);



            string assignment_types = "";
            string weight_per_types = "";

            for (int i = 0; i < rubric.Count; i++)
            {
                if (i == original_item.Index && i != rubric.Count - 1)
                {
                    assignment_types += assignmentType + "/";
                    weight_per_types += assignmentWeight + "/";
                }
                else if (i != rubric.Count - 1)
                {
                    assignment_types += rubric[i].AssignmentType + "/";
                    weight_per_types += rubric[i].AssignmentWeight + "/";
                }
                else if (original_item.Index == i && i == rubric.Count - 1)
                {
                    assignment_types += assignmentType;
                    weight_per_types += assignmentWeight;
                }
                else
                {
                    assignment_types += rubric[i].AssignmentType;
                    weight_per_types += rubric[i].AssignmentWeight;
                }
            }
            MySqlConnection conn = DbConnection.GetConnection();

            using (conn)
            {
                conn.Open();


                var selectQuery =
                    "UPDATE rubrics SET assignment_types=@assignment_types, weight_per_type=@weight_per_type WHERE CRN = @CRN";
                using (MySqlCommand cmd = new MySqlCommand(selectQuery, conn))
                {
                    cmd.Parameters.AddWithValue("@assignment_types", assignment_types);
                    cmd.Parameters.AddWithValue("@weight_per_type", weight_per_types);
                    cmd.Parameters.AddWithValue("@CRN", crn);
                    cmd.ExecuteNonQuery();
                }

                StudentDAL     studentGetter = new StudentDAL();
                List <Student> students      = studentGetter.GetStudentsByCRN(crn);
                foreach (var student in students)
                {
                    var updateQuery =
                        "UPDATE grade_items SET grade_type = @newType WHERE grade_item_id = (SELECT grade_items.grade_item_id FROM grade_belongs_to_courses WHERE grade_belongs_to_courses.courses_CRN = @CRN  AND grade_belongs_to_courses.grade_item_id = grade_items.grade_item_id AND grade_items.grade_type = @oldType AND grade_items.student_uid = @studentUID)";
                    using (MySqlCommand cmd = new MySqlCommand(updateQuery, conn))
                    {
                        cmd.Parameters.AddWithValue("@newType", assignmentType);
                        cmd.Parameters.AddWithValue("@oldType", original_AssignmentType);
                        cmd.Parameters.AddWithValue("@CRN", crn);
                        cmd.Parameters.AddWithValue("@studentUID", student.StudentUID);
                        cmd.ExecuteNonQuery();
                    }
                }
                conn.Close();
            }
        }