hasMany('App\Models\Session', 'chapter_id', 'id'); } public function files() { return $this->hasMany('App\Models\File', 'chapter_id', 'id'); } public function textLessons() { return $this->hasMany('App\Models\TextLesson', 'chapter_id', 'id'); } public function assignments() { return $this->hasMany('App\Models\WebinarAssignment', 'chapter_id', 'id'); } public function quizzes() { return $this->hasMany('App\Models\Quiz', 'chapter_id', 'id'); } public function chapterItems() { return $this->hasMany('App\Models\WebinarChapterItem', 'chapter_id', 'id'); } public function webinar() { return $this->hasOne('App\Models\Webinar', 'webinar_id', 'id'); } public function getDuration() { $time = 0; $time += $this->sessions->sum('duration'); $time += $this->textLessons->sum('study_time'); return $time; } public function getTopicsCount($withQuiz = false) { $count = 0; $count += $this->files->where('status', 'active')->count(); $count += $this->sessions->where('status', 'active')->count(); $count += $this->textLessons->where('status', 'active')->count(); $count += $this->assignments->where('status', 'active')->count(); if ($withQuiz) { $count += $this->quizzes->where('status', 'active')->count(); } return $count; } }