0 ? get_application($applicationId) : null; $isApprovedCenter = $application && (string) ($application['status'] ?? '') === 'approved'; $errors = []; $values = ['criteria' => []]; $cycleContext = ['cycles' => [], 'selected' => null, 'active' => null, 'read_only' => false]; $selectedCycle = null; $selectedCycleId = 0; $isCycleReadOnly = false; $cycleLabel = 'لا توجد دورة بعد'; $buildCenterAssessmentsUrl = static function (int $targetApplicationId = 0, int $targetCycleId = 0, array $extra = []): string { $params = []; if ($targetApplicationId > 0) { $params['id'] = $targetApplicationId; } if ($targetCycleId > 0) { $params['cycle'] = $targetCycleId; } foreach ($extra as $key => $value) { if ($value === '' || $value === null) { continue; } $params[$key] = $value; } return 'center_assessments.php' . ($params !== [] ? '?' . http_build_query($params) : ''); }; $buildCenterAssessmentCriteriaUrl = static function (int $targetApplicationId = 0, int $targetCycleId = 0, int $targetAssessmentId = 0, array $extra = []) : string { $params = []; if ($targetApplicationId > 0) { $params['id'] = $targetApplicationId; } if ($targetCycleId > 0) { $params['cycle'] = $targetCycleId; } if ($targetAssessmentId > 0) { $params['assessment_id'] = $targetAssessmentId; } foreach ($extra as $key => $value) { if ($value === '' || $value === null) { continue; } $params[$key] = $value; } return 'center_assessment_criteria.php' . ($params !== [] ? '?' . http_build_query($params) : ''); }; if ($isApprovedCenter) { $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'] ?? false); $cycleLabel = $selectedCycle ? (string) ($selectedCycle['cycle_name'] ?? $cycleLabel) : $cycleLabel; } $assessmentOptions = $isApprovedCenter && $selectedCycleId > 0 ? center_assessment_type_options_by_cycle((int) $application['id'], $selectedCycleId, false) : []; $selectedAssessmentId = $requestedAssessmentId; if ($selectedAssessmentId <= 0 && $assessmentOptions !== []) { $keys = array_keys($assessmentOptions); $selectedAssessmentId = (int) ($keys[0] ?? 0); } if ($_SERVER['REQUEST_METHOD'] === 'POST' && $application) { $selectedAssessmentId = filter_input(INPUT_POST, 'assessment_id', FILTER_VALIDATE_INT) ?: $selectedAssessmentId; if (!$isApprovedCenter) { $errors['form'] = 'لا يمكن إعداد بنود تقييم المركز قبل اعتماد المركز.'; } elseif ($selectedCycleId <= 0) { $errors['form'] = 'يرجى إنشاء دورة موسمية أولاً من صفحة المركز.'; } elseif ($isCycleReadOnly) { $errors['form'] = 'هذه الدورة مؤرشفة للقراءة فقط. اختر دورة نشطة لتعديل البنود.'; } elseif ($selectedAssessmentId <= 0 || !isset($assessmentOptions[$selectedAssessmentId])) { $errors['form'] = 'يرجى اختيار تقييم مركز صحيح أولاً.'; } else { [$values, $errors] = validate_center_assessment_criteria_input((int) $application['id'], $selectedCycleId, $selectedAssessmentId, $_POST); if ($errors === []) { try { $savedRows = save_center_assessment_criteria_in_cycle((int) $application['id'], $selectedCycleId, $selectedAssessmentId, $values); set_flash('success', 'تم حفظ ' . $savedRows . ' بند/بنود لتقييم المركز.'); header('Location: ' . $buildCenterAssessmentCriteriaUrl((int) $application['id'], $selectedCycleId, $selectedAssessmentId)); exit; } catch (Throwable $exception) { $errors['form'] = 'تعذر حفظ البنود حالياً. يرجى المحاولة مرة أخرى.'; } } } } $selectedAssessment = $selectedAssessmentId > 0 ? ($assessmentOptions[$selectedAssessmentId] ?? null) : null; $criteriaRows = $isApprovedCenter && $selectedCycleId > 0 && $selectedAssessmentId > 0 ? list_center_assessment_criteria_by_assessment((int) $application['id'], $selectedCycleId, $selectedAssessmentId, false) : []; $criteriaMetrics = $isApprovedCenter && $selectedCycleId > 0 && $selectedAssessmentId > 0 ? center_assessment_criteria_metrics((int) $application['id'], $selectedCycleId, $selectedAssessmentId) : ['total' => 0, 'active' => 0, 'active_max_score' => 0.0]; if ($_SERVER['REQUEST_METHOD'] !== 'POST') { $values['criteria'] = []; foreach ($criteriaRows as $criterion) { $values['criteria'][] = [ 'id' => (int) ($criterion['id'] ?? 0), 'title' => (string) ($criterion['title'] ?? ''), 'max_score' => rtrim(rtrim(number_format((float) ($criterion['max_score'] ?? 0), 2, '.', ''), '0'), '.'), 'notes' => (string) ($criterion['notes'] ?? ''), 'is_active' => ((int) ($criterion['is_active'] ?? 0) === 1) ? '1' : '0', ]; } if ($values['criteria'] === []) { $values['criteria'][] = ['id' => 0, 'title' => 'الالتزام التشغيلي', 'max_score' => '10', 'notes' => '', 'is_active' => '1']; $values['criteria'][] = ['id' => 0, 'title' => 'جودة التنفيذ', 'max_score' => '10', 'notes' => '', 'is_active' => '1']; $values['criteria'][] = ['id' => 0, 'title' => 'التواصل والتقارير', 'max_score' => '10', 'notes' => '', 'is_active' => '1']; } } $pageTitle = $application && $selectedAssessment ? 'بنود تقييم المركز: ' . (string) ($selectedAssessment['title'] ?? '') . ' — ' . (string) ($application['center_name'] ?? '') : 'بنود تقييم المراكز'; $pageDescription = 'إدارة البنود التفصيلية لكل تقييم مركز داخل الدورة الموسمية، مع تحديث الدرجة القصوى تلقائياً من مجموع البنود النشطة.'; $assessmentsUrl = $application ? $buildCenterAssessmentsUrl((int) $application['id'], $selectedCycleId) : 'center_assessments.php'; if (!$application) { http_response_code(404); } render_page_start($pageTitle, 'admin', $pageDescription); render_flash($flash); ?>
المركز غير موجود

تحقق من الرابط أو ارجع إلى صفحة تقييم المراكز.

تقييم المراكز
البنود تُفتح بعد الاعتماد

اعتمد المركز أولاً حتى تتمكن من إعداد بنود تقييمه.

أنشئ دورة أولاً

يجب اختيار دورة موسمية للمركز قبل إعداد بنود التقييم.

الرجوع إلى تقييمات المركز
اختر تقييماً أولاً

ابدأ من صفحة تقييمات المراكز ثم افتح البنود للتقييم المطلوب.

الرجوع إلى تقييمات المركز
مرحلة 2 — بنود تقييم المراكز

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

الوزن %
التقييم المحدد
عدد البنود النشطة حالياً داخل هذا التقييم.
الرجوع إلى التقييمات الدرجة الحالية لهذا التقييم:
إجمالي البنود
كل البنود المحفوظة لهذا التقييم.
البنود النشطة
هي التي تدخل في الرصد النهائي.
مجموع البنود النشطة
يحدّث الدرجة القصوى للتقييم تلقائياً.
الحالة
هذه الدورة مؤرشفة، لذلك الصفحة معروضة للقراءة فقط.
بنود تقييم المركز
يمكنك إضافة بنود جديدة أو إخفاء بند قديم دون حذفه من السجل.
$criterion): ?>
اسم البند الدرجة ملاحظات الحالة الإجراء
>
> > قراءة فقط أوقفه
سيتم تحديث الدرجة النهائية لهذا التقييم تلقائياً إلى مجموع البنود النشطة.