/** * Method: GenerateGradeFile(QString _activityID) * * Description: * Obtains the grades for all students in a course that is tied to the _activityID, obtains the grades for those * students for that activity, and then stores each student grade file line in the returned QList<QString> * (formatted for writing to a file using the CSVProcessor). * * Attributes: * QString _activityID - the id of the activity to get grades for * * Author: Joshua Campbell * * Version: 1 */ QList<QString> RubricItemGrade::GenerateGradeFile(QString _activityID) { Activity activityModel; QMap<QString, QString> activityMap = activityModel.GetActivityByID(_activityID); activityModel.SetParameters(activityMap); QList<QMap<QString, QString> > rubricMapList = activityModel.getRubric(); QListIterator<QMap<QString, QString> > rubricMapListIterator(rubricMapList); Student s; QList<QString> studentList = s.getEnrolledStudentIDs(activityMap["courseID"]); QList<QString> gradeOutput; for (size_t i = 0; i < studentList.count(); i++) { std::ostringstream oss; oss << studentList[i].toStdString(); while(rubricMapListIterator.hasNext()) { QMap<QString, QString> tempMap = rubricMapListIterator.next(); QList<QMap<QString, QString> > itemGrades = GetGradesByItemID(tempMap["rubricItemID"]); QListIterator<QMap<QString, QString> > itemGradesIterator(itemGrades); while (itemGradesIterator.hasNext()) { QMap<QString, QString> tempItemGrade = itemGradesIterator.next(); if (tempItemGrade["studentID"] == studentList[i]) { oss << "," << tempItemGrade["mark"].toStdString(); } } } oss << "\n"; gradeOutput.push_back(oss.str().c_str()); } return gradeOutput; }
/** * Method: GetActivityGradesByStudentID(QString _activityID, QString _studentID) * * Description: * Returns a list of RubricItemGrades in the form of a map (table columns and values) for a particular activity and * a particular student. * * Attributes: * QString _activityID - the activity the grades belong to * QString _studentID - the student the grades belong to * * Author: Joshua Campbell * * Version: 1 */ QList<QMap<QString, QString> > RubricItemGrade::GetActivityGradesByStudentID(QString _activityID, QString _studentID) { QList<QMap<QString, QString> > gradeItems; Activity activityModel; QMap<QString, QString> activityMap = activityModel.GetActivityByID(_activityID); activityModel.SetParameters(activityMap); QList<QMap<QString, QString> > rubricMapList = activityModel.getRubric(); QListIterator<QMap<QString, QString> > rubricMapListIterator(rubricMapList); if (rubricMapListIterator.hasNext()) { QMap<QString, QString> rubric = rubricMapListIterator.next(); std::ostringstream oss; oss << "SELECT RubricItemGrade.gradeID, RubricItemGrade.mark, RubricItemGrade.groupID, RubricItemGrade.studentID, "; oss << "RubricItemGrade.markerPrivilege, RubricItemGrade.markerID, RubricItemGrade.rubricItemID "; oss << "FROM RubricItemGrade JOIN RubricItem ON RubricItemGrade.rubricItemID = RubricItem.rubricItemID "; oss << "WHERE RubricItem.rubricID='" << rubric["rubricID"].toStdString().c_str() << "' AND "; oss << "RubricItemGrade.studentID='" << _studentID.toStdString().c_str() << "';"; QSqlQuery * query = DBA.__query(oss.str().c_str()); gradeItems = parseResult(query); if (gradeItems.size() > 0) { DEBUG(DEBUG_ALRM, gradeItems[0]["markerPrivilege"]); } } return gradeItems; }