Update Saqel Platform: 2026-09-12 13:38:49
This commit is contained in:
@@ -117,6 +117,70 @@ class SuperAdminController
|
||||
$response->json(['status' => 'success', 'data' => [], 'measurement_status' => 'unavailable']);
|
||||
}
|
||||
|
||||
public function publicationBundles(Request $request, Response $response): void
|
||||
{
|
||||
$bundles = Database::select(
|
||||
"SELECT pb.id, pb.uuid, pb.bundle_version, pb.status, pb.published_at, pb.created_at,
|
||||
cl.title AS lesson_title, cl.curriculum_edition, s.name AS subject_name, g.name AS grade_name
|
||||
FROM publication_bundles pb
|
||||
JOIN curriculum_lessons cl ON cl.id = pb.curriculum_lesson_id
|
||||
JOIN curriculum_units cu ON cu.id = cl.unit_id
|
||||
JOIN curriculum_courses cc ON cc.id = cu.course_id
|
||||
JOIN subjects s ON s.id = cc.subject_id
|
||||
JOIN grade_levels g ON g.id = cc.grade_level_id
|
||||
ORDER BY pb.id DESC LIMIT 100"
|
||||
);
|
||||
$submissions = Database::select(
|
||||
"SELECT vv.id AS version_id, vv.uuid AS version_uuid, vv.version_number, vv.status, vv.created_at,
|
||||
t.full_name AS teacher_name, cl.title AS lesson_title
|
||||
FROM video_versions vv
|
||||
JOIN teacher_submissions ts ON ts.id = vv.teacher_submission_id
|
||||
JOIN teachers t ON t.id = ts.teacher_id
|
||||
JOIN curriculum_lessons cl ON cl.id = ts.curriculum_lesson_id
|
||||
ORDER BY vv.id DESC LIMIT 100"
|
||||
);
|
||||
$response->json([
|
||||
'status' => 'success',
|
||||
'data' => [
|
||||
'bundles' => $bundles,
|
||||
'submissions' => $submissions,
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
public function reviewSubmission(Request $request, Response $response): void
|
||||
{
|
||||
$body = $request->getBody();
|
||||
$versionUuid = trim((string)($body['version_uuid'] ?? ''));
|
||||
$decision = (string)($body['decision'] ?? ''); // 'approved' or 'rejected'
|
||||
|
||||
if (!in_array($decision, ['approved', 'rejected'], true) || $versionUuid === '') {
|
||||
$response->status(422)->json(['status' => 'error', 'message' => 'بيانات مراجعة النسخة غير صالحة']);
|
||||
return;
|
||||
}
|
||||
|
||||
$version = Database::selectOne(
|
||||
"SELECT vv.id, vv.teacher_submission_id FROM video_versions vv WHERE vv.uuid = ? LIMIT 1",
|
||||
[$versionUuid]
|
||||
);
|
||||
if (!$version) {
|
||||
$response->status(404)->json(['status' => 'error', 'message' => 'نسخة الفيديو غير موجودة']);
|
||||
return;
|
||||
}
|
||||
|
||||
$status = $decision === 'approved' ? 'published' : 'rejected';
|
||||
Database::query("UPDATE video_versions SET status = ?, reviewed_at = NOW() WHERE id = ?", [$status, (int)$version['id']]);
|
||||
|
||||
if ($decision === 'approved') {
|
||||
Database::query(
|
||||
"UPDATE teacher_submissions SET status = 'published', current_published_video_version_id = ? WHERE id = ?",
|
||||
[(int)$version['id'], (int)$version['teacher_submission_id']]
|
||||
);
|
||||
}
|
||||
|
||||
$response->json(['status' => 'success', 'message' => $decision === 'approved' ? 'تم اعتماد ونشر النسخة بنجاح' : 'تم رفض النسخة']);
|
||||
}
|
||||
|
||||
private function count(string $table): int
|
||||
{
|
||||
$row = Database::selectOne("SELECT COUNT(*) AS count_value FROM `{$table}`");
|
||||
|
||||
Reference in New Issue
Block a user