@extends('layouts.admin') @section('title', $course->title) @section('page-title', trans('admin.Course')) @section('page-subtitle', $course->title) @section('content') @php $canUpdate = auth('user')->user()->has_permission('update-courses'); $canCreateExams = auth('user')->user()->has_permission('create-exams'); $canUpdateExam = auth('user')->user()->has_permission('update-exams'); $exam = $course->exam; if ($exam && $canUpdateExam) { $exam->load(['questions.options', 'questions.media']); $questionsData = $exam->questions->map(function($question){ return [ 'id' => $question->id, 'question' => $question->question, 'type' => $question->type ?: 'multiple_choice', 'options' => $question->options->pluck('option_text'), 'correct' => $question->options->search(function($option){ return $option->is_correct; }), 'attachment' => $question->attachment, ]; })->values(); $courses = collect([$course]); } @endphp
@if($course->getImage()) {{ $course->title }} @else @endif
{{ trans('admin.'.ucfirst($course->status)) }} {{ trans('admin.'.ucfirst($course->level)) }} {{ $course->category->name ?? trans('admin.Course') }}

{{ $course->title }}

{{ trans('admin.by') }} {{ $course->instructor->user->name ?? '—' }}

{{ $course->description ?: trans('admin.No description yet') }}

@if($course->exam && $canUpdateExam) @elseif($course->exam) {{ trans('admin.Edit exam') }} @elseif($canCreateExams) @endif @if($canUpdate) @endif

{{ trans('admin.Course intro') }}

{{ trans('admin.Course intro subtitle') }}
@if($course->getVideoUrl())
@if($course->video_type === 'youtube' && $course->youtube_video_id) @else @endif

{{ $course->video_title ?: trans('admin.Course intro') }}

{{ trans('admin.Visible to everyone') }}
@if($canUpdate)
@endif
@if($course->video_description)

{{ $course->video_description }}

@endif @else
🎬
{{ trans('admin.No intro video yet') }} {{ trans('admin.No intro video yet body') }} @if($canUpdate)
@endif
@endif

{{ trans('admin.Reel video') }}

{{ trans('admin.Reel video hint') }}
@if($course->hasOwnReel())
@if($course->getReelVideoType() === 'youtube') @else @endif

{{ trans('admin.Custom reel set') }}

{{ trans('admin.Visible in the Reels feed') }}
@if($canUpdate)
@endif
@else
🎬
{{ trans('admin.No reel video yet') }} {{ trans('admin.Reel video hint') }} @if($canUpdate)
@endif
@endif

{{ trans('admin.Lessons') }}

{{ $course->lessons->count() }} {{ trans('admin.Lessons') }}
@if($canUpdate) @endif
@forelse($course->lessons as $i => $lesson)
@if($canUpdate) @endif
{{ $i + 1 }}. {{ $lesson->title }}
{{ $lesson->duration ?: '—' }}
@if($canUpdate) @endif
@empty
🎬
{{ trans('admin.No lessons yet') }} {{ trans('admin.No lessons yet body') }}
@endforelse
👁
{{ $course->views_count }}
{{ trans('admin.Total views') }}
💬
{{ $course->ratings_count }}
{{ trans('admin.Reviews') }}
🎓
{{ $course->students_count }}
{{ trans('admin.Enrolled students') }}
★
{{ $course->ratings_avg_rating ? number_format($course->ratings_avg_rating, 1) : '—' }}
{{ trans('admin.Average rating') }}

{{ trans('admin.Views over time') }}

@if($course->views_count > 0) @php $max = max($viewsSeries->max(), 1); $stepX = $viewsSeries->count() > 1 ? 560 / ($viewsSeries->count() - 1) : 0; $points = $viewsSeries->values()->map(function($v, $i) use ($max, $stepX){ $x = round($i * $stepX); $y = round(150 - ($v / $max) * 130); return "{$x},{$y}"; })->implode(' '); @endphp
@else
📈
{{ trans('admin.No views yet') }}
@endif

{{ trans('admin.Recent reviews') }}

@forelse($course->ratings as $review)
{{ $review->reviewer_name ?: '—' }} {{ str_repeat('★', $review->rating) }}{{ str_repeat('☆', 5 - $review->rating) }}
{{ $review->comment }}
@empty

{{ trans('admin.No reviews yet') }}

@endforelse
@if($canUpdate) @endif @if($exam && $canUpdateExam) @include('Dashboard.exams._edit_modal') @endif @if($canCreateExams) @include('Dashboard.exams._create_modal', ['fixedCourseId' => $course->id]) @endif @endsection @section('script') @endsection