From ab9dee91f4fb383ec2b86002e8832ec94560769f Mon Sep 17 00:00:00 2001 From: Stephen Vickers Date: Thu, 29 Aug 2024 21:08:52 +0100 Subject: [PATCH] Add submissionStarted and submissionCompleted properties to Outcome --- src/Outcome.php | 14 ++++++++++++++ src/Service/Score.php | 9 +++++++++ 2 files changed, 23 insertions(+) diff --git a/src/Outcome.php b/src/Outcome.php index d964ab7..a7964ec 100644 --- a/src/Outcome.php +++ b/src/Outcome.php @@ -86,6 +86,20 @@ class Outcome */ public ?string $comment = null; + /** + * Date submission started. + * + * @var DateTime|null $submissionStarted + */ + public ?\DateTime $submissionStarted = null; + + /** + * Date submission completed. + * + * @var DateTime|null $submissionCompleted + */ + public ?\DateTime $submissionCompleted = null; + /** * Outcome data source value. * diff --git a/src/Service/Score.php b/src/Service/Score.php index 6b68b8d..6f119ae 100644 --- a/src/Service/Score.php +++ b/src/Service/Score.php @@ -67,6 +67,15 @@ public function submit(Outcome $ltiOutcome, User $user): bool $json['scoreGiven'] = $score; $json['scoreMaximum'] = $ltiOutcome->getPointsPossible(); } + if (!empty($ltiOutcome->submissionStarted) || !empty($ltiOutcome->submissionCompleted)) { + $json['submission'] = []; + if (!empty($ltiOutcome->submissionStarted)) { + $json['submission']['startedAt'] = date_format($ltiOutcome->submissionStarted, 'Y-m-d\TH:i:s.uP'); + } + if (!empty($ltiOutcome->submissionStarted)) { + $json['submission']['submittedAt'] = date_format($ltiOutcome->submissionCompleted, 'Y-m-d\TH:i:s.uP'); + } + } $data = json_encode($json); $http = $this->send('POST', null, $data);