Tutors mainly add results for sheets, i.e. contribute to the Exercise Management and Sheets section.
Parameter: Exercise Identifier and Group Identifier
With the plain tutor right, a tutor can see all the groups in the corresponding exercise of the Exercise Management and Sheets section, as well as the sheets and other generic information. For each group right he can also see all the students which are signed up and their results.
assignTeam(ident uid, ident id, ident studentId, ident teamId) { assume exists /account[uid]/tutor[id]/group[/exercise[id]/student[studentId]/group]; # implies the existence of the student, the exercise, the group and enough rights by a tutor account assume not exists /exercise[id]/student[studentId]/team; insert /exercise[id]/student[studentId]/team teamId; }
leaveTeam(ident uid, ident id, ident studentId) { assume exists /account[uid]/tutor[id]/group[/exercise[id]/student[studentId]/group]; # implies the existence of the student, the exercise, the group and enough rights by a tutor account assume exists /exercise[id]/student[studentId]/team; remove /exercise[id]/student[studentId]/team; }
addResult(ident uid, ident id, ident studentId, ident sheetId, double points) { assume exists /account[uid]/assistant[id] || exists /account[uid]/tutor[id]/group[/exercise[id]/student[studentId]/group]; assume exists /exercise[id]/student[studentId]; # implies the existence of the exercise assume exists /exercise[id]/sheet[sheetId]; # dito assume not exists /exercise[id]/student[studentId]/result[sheetId]; assume points >= 0 && points <= /exercise[id]/sheet[sheetId]/maxPoints; insert /exercise[id]/student[studentId] <result sheet=[sheetId] points=[points] />; }
changeResult(ident uid, ident id, ident studentId, ident sheetId, double points) { assume exists /account[uid]/assistant[id] || exists /account[uid]/tutor[id]/group[/exercise[id]/student[studentId]/group]; assume exists /exercise[id]/student[studentId]; # implies the existence of the exercise assume exists /exercise[id]/sheet[sheetId]; # dito assume points >= 0 && points <= /exercise[id]/sheet[sheetId]/maxPoints; assume exists /exercise[id]/student[studentId]/result[sheetId]; update /exercise[id]/student[studentId]/result[sheetId]/points points; }
removeResult(ident uid, ident id, ident studentId, ident sheetId) { assume exists /account[uid]/assistant[id] || exists /account[uid]/tutor[id]/group[/exercise[id]/student[studentId]/group]; assume exists /exercise[id]/student[studentId]/result[sheetId]; # implies the existence of pretty much everything remove /exercise[id]/student[studentId]/result[sheetId]; }