0 ? get_application($applicationId) : null; $isApprovedSchool = $application && (string) $application['status'] === 'approved'; $errors = []; $cycleContext = ['cycles' => [], 'selected' => null, 'active' => null, 'read_only' => false]; $selectedCycle = null; $selectedCycleId = 0; $isCycleReadOnly = false; $cycleLabel = 'لا توجد دورة بعد'; $values = [ 'assessment_type_id' => '', 'teacher_id' => '', 'assessed_on' => date('Y-m-d'), 'assessment_max_score' => 0.0, 'has_criteria' => false, 'criteria' => [], 'entries' => [], ]; if ($application && $isApprovedSchool) { $cycleContext = resolve_school_cycle_context((int) $application['id'], $application, $requestedCycleId); $selectedCycle = $cycleContext['selected']; $selectedCycleId = $selectedCycle ? (int) ($selectedCycle['id'] ?? 0) : 0; $isCycleReadOnly = (bool) $cycleContext['read_only']; $cycleLabel = $selectedCycle ? (string) $selectedCycle['cycle_name'] : $cycleLabel; } $assessmentOptions = $isApprovedSchool && $selectedCycleId > 0 ? school_assessment_type_options_by_cycle((int) $application['id'], $selectedCycleId, false) : []; $teacherOptions = $isApprovedSchool && $selectedCycleId > 0 ? school_teacher_options_by_cycle((int) $application['id'], $selectedCycleId, true) : []; $students = $isApprovedSchool && $selectedCycleId > 0 ? list_school_students_by_cycle((int) $application['id'], $selectedCycleId, $search, 0, 0, ['enrollment_status' => 'active']) : []; $selectedAssessmentId = $requestedAssessmentId; if ($selectedAssessmentId <= 0 && $assessmentOptions !== []) { $keys = array_keys($assessmentOptions); $selectedAssessmentId = (int) ($keys[0] ?? 0); } if ($selectedAssessmentId > 0) { $values['assessment_type_id'] = (string) $selectedAssessmentId; } if ($_SERVER['REQUEST_METHOD'] === 'POST' && $application) { if (!$isApprovedSchool) { $errors['form'] = 'لا يمكن إدخال الدرجات قبل اعتماد المركز.'; } elseif ($selectedCycleId <= 0) { $errors['form'] = 'يرجى إنشاء دورة موسمية أولاً من صفحة المركز.'; } elseif ($isCycleReadOnly) { $errors['form'] = 'هذه الدورة مؤرشفة للقراءة فقط. افتح دورة جديدة أو اختر دورة نشطة لإدخال درجات جديدة.'; } else { [$values, $errors, $selectedAssessmentMeta] = validate_assessment_scores_batch_input((int) $application['id'], $selectedCycleId, $_POST); $selectedAssessmentId = (int) ($values['assessment_type_id'] ?? 0); if ($errors === []) { try { $savedRows = save_assessment_scores_in_cycle((int) $application['id'], $selectedCycleId, $values); set_flash('success', 'تم حفظ درجات ' . $savedRows . ' طالب/طالبة في هذا التقييم.'); header('Location: ' . school_page_url('assessment_score_sheet.php', (int) $application['id'], $selectedCycleId) . '&assessment_id=' . urlencode((string) $selectedAssessmentId) . ($search !== '' ? '&search=' . urlencode($search) : '')); exit; } catch (Throwable $exception) { $errors['form'] = 'تعذر حفظ الدرجات حالياً. يرجى المحاولة مرة أخرى.'; } } } } $selectedAssessment = $selectedAssessmentId > 0 ? ($assessmentOptions[$selectedAssessmentId] ?? null) : null; $criteria = $isApprovedSchool && $selectedCycleId > 0 && $selectedAssessmentId > 0 ? list_assessment_criteria_by_assessment((int) $application['id'], $selectedCycleId, $selectedAssessmentId, true) : []; $hasCriteria = $criteria !== []; if ($_SERVER['REQUEST_METHOD'] !== 'POST') { $values['has_criteria'] = $hasCriteria; $values['criteria'] = $criteria; if ($hasCriteria) { $values['assessment_max_score'] = round(array_reduce($criteria, static function (float $carry, array $criterion): float { return $carry + (float) ($criterion['max_score'] ?? 0); }, 0.0), 2); } elseif ($selectedAssessment) { $values['assessment_max_score'] = (float) ($selectedAssessment['max_score'] ?? 0); } } $scoreMap = $isApprovedSchool && $selectedCycleId > 0 && $selectedAssessmentId > 0 ? school_assessment_score_map_by_assessment((int) $application['id'], $selectedCycleId, $selectedAssessmentId) : []; if ($_SERVER['REQUEST_METHOD'] !== 'POST' && $scoreMap !== []) { $firstRecord = reset($scoreMap); if (is_array($firstRecord)) { if (!empty($firstRecord['teacher_id'])) { $values['teacher_id'] = (string) ((int) $firstRecord['teacher_id']); } if (!empty($firstRecord['assessed_on'])) { $values['assessed_on'] = (string) $firstRecord['assessed_on']; } } } $criteriaMetrics = $isApprovedSchool && $selectedCycleId > 0 && $selectedAssessmentId > 0 ? school_assessment_criteria_metrics((int) $application['id'], $selectedCycleId, $selectedAssessmentId) : ['total' => 0, 'active' => 0, 'active_max_score' => 0.0]; $scoreMetrics = $isApprovedSchool && $selectedCycleId > 0 && $selectedAssessmentId > 0 ? school_assessment_score_metrics_by_cycle((int) $application['id'], $selectedCycleId, $selectedAssessmentId) : ['total' => 0, 'present' => 0, 'absent' => 0, 'excused' => 0, 'average_score' => 0.0, 'latest_date' => '']; $pageTitle = $application && $selectedAssessment ? 'ورقة رصد: ' . (string) $selectedAssessment['title'] . ' — ' . (string) $application['center_name'] : 'ورقة رصد الدرجات'; $pageDescription = $hasCriteria ? 'صفحة مستقلة لرصد درجات الطلاب حسب البنود التفصيلية داخل تقييم واحد.' : 'صفحة مستقلة ومبسطة لإدخال درجات الطلاب داخل تقييم واحد فقط.'; $scoreListUrl = $application ? school_page_url('assessment_scores.php', (int) $application['id'], $selectedCycleId) : 'assessment_scores.php'; $assessmentsUrl = $application ? school_page_url('assessments.php', (int) $application['id'], $selectedCycleId) : 'assessments.php'; $criteriaUrl = $application ? school_page_url('assessment_criteria.php', (int) $application['id'], $selectedCycleId) . '&assessment_id=' . urlencode((string) $selectedAssessmentId) : 'assessment_criteria.php'; $approvedSchoolUrl = $application ? school_page_url('approved_school.php', (int) $application['id'], $selectedCycleId) : 'approved_school.php'; $maxScoreLabel = score_display((float) ($values['assessment_max_score'] ?? 0.0)); $averageScoreLabel = ($selectedAssessment && (int) $scoreMetrics['present'] > 0) ? score_display((float) $scoreMetrics['average_score']) . ' / ' . ($maxScoreLabel !== '' ? $maxScoreLabel : '0') : 'لا يوجد'; $latestScoreDate = $scoreMetrics['latest_date'] !== '' ? (string) $scoreMetrics['latest_date'] : 'لا يوجد'; if (!$application) { http_response_code(404); } render_page_start($pageTitle, 'approved', $pageDescription, (string) ($application['favicon'] ?? '')); render_flash($flash); ?>
المدرسة غير موجودة

تحقق من رابط المدرسة أو ارجع إلى قائمة المراكز المعتمدة.

المراكز المعتمدة
الدرجات تُفتح بعد الاعتماد

اعتمد المركز أولاً حتى تتمكن من فتح ورقة الرصد.

اختر تقييماً أولاً

هذه الصفحة تعمل لتقييم واحد فقط حتى تكون عملية الرصد أوضح وأسهل.

الرجوع إلى قائمة التقييمات
صفحة رصد مستقلة

' . e($cycleLabel) . '' . ' حتى يتمكن المعلم من إدخال الدرجات بسرعة وبدون عناصر مشتتة.' ?>

الدرجة النهائية الوزن % بنود نشطة
تم رصدهم
سجلات محفوظة لهذا التقييم
متوسط الدرجات
للطلبة الحاضرين فقط
البنود النشطة
مجموعها
آخر تحديث
آخر تاريخ حفظ
هذه الدورة مؤرشفة، لذلك الصفحة معروضة للقراءة فقط.
لا يوجد طلاب مطابقون

جرّب البحث بكلمة أخرى أو أضف طلاباً من سجل الطلاب.

نمط الورقة
يجب إدخال جميع البنود النشطة للطالب الحاضر، ثم سيُحسب المجموع تلقائياً.
تعديل البنود
هذا التقييم ما يزال بدرجة واحدة. إذا كنت تريد بنوداً مثل الحفظ والطلاقة والتجويد، افتح إعداد بنود التقييم.
الطالب الحالة من المجموع الدرجة ملاحظة آخر حفظ
/
يتم حفظ الصفوف التي تحتوي على بيانات فقط، ويمكنك الرجوع لاحقاً لتعديل نفس الورقة.