<?php declare(strict_types=1); namespace Xentral\Modules\LearningDashboard\Data; final class Lesson implements \JsonSerializable { /** @var string */ private $name; /** @var array|Task[] */ private $tasks; /** * Lesson constructor. * * @param string $name */ public function __construct(string $name) { $this->name = $name; } /** @param Task $task */ public function addTask(Task $task) { $this->tasks[] = $task; } public function getProgress() { $totalSteps = 0; $completedSteps = 0; foreach ($this->tasks as $task) { $taskProgress = $task->getProgress(); $totalSteps += $taskProgress['total']; $completedSteps += $taskProgress['complete']; } return [ 'total' => $totalSteps, 'completed' => $completedSteps, ]; } /** @return array */ public function jsonSerialize() { return [ 'name' => $this->name, 'progress' => $this->getProgress(), 'tasks' => $this->tasks, ]; } }