aboutsummaryrefslogtreecommitdiff
path: root/lib/classes/LTI13a/ScoreRepository.php
blob: 06cf452f6eb80b1d3e64f738c3194730f029f5a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php

namespace Studip\LTI13a;

use OAT\Library\Lti1p3Ags\Model\Score\ScoreInterface;
use OAT\Library\Lti1p3Ags\Repository\ScoreRepositoryInterface;

class ScoreRepository implements ScoreRepositoryInterface
{
    public function save(ScoreInterface $score): ScoreInterface
    {
        $user_id = $score->getUserIdentifier();
        $definition_id = $score->getLineItemIdentifier();

        $grade = \Grading\Instance::findOneBySQL(
            '`definition_id` = :definition_id AND `user_id` = :user_id',
            ['definition_id' => $definition_id, 'user_id' => $user_id]
        );
        if (!$grade) {
            $grade = new \Grading\Instance();
            $grade->definition_id = $definition_id;
            $grade->user_id       = $user_id;
        }
        $grade->rawgrade = $score->getScoreGiven();
        $grade->feedback = $score->getComment();
        $grade->store();
        return $score;
    }
}