39669-vm/center_application.php
2026-04-16 13:19:21 +00:00

233 lines
15 KiB
PHP

<?php
declare(strict_types=1);
require_once __DIR__ . '/includes/app.php';
$flash = consume_flash();
$values = application_defaults();
$errors = [];
$stats = dashboard_metrics();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
[$values, $errors] = validate_application_input($_POST);
if ($errors === []) {
try {
$applicationId = create_application($values);
set_flash('success', 'تم إرسال طلب فتح المركز بنجاح وهو الآن ظاهر في لوحة المشرف العام.');
header('Location: application_detail.php?id=' . urlencode((string) $applicationId));
exit;
} catch (Throwable $exception) {
$errors['form'] = 'تعذر حفظ الطلب حالياً. يرجى المحاولة مرة أخرى.';
}
}
}
render_page_start('طلب فتح مركز', 'apply', 'بوابة تقديم طلبات فتح المراكز الصيفية مع التحقق من بيانات التشغيل الأساسية.');
render_flash($flash);
?>
<section class="py-4 py-lg-5">
<div class="container-xxl">
<div class="page-banner mb-4 mb-lg-5">
<div class="row g-4 align-items-start">
<div class="col-lg-8">
<span class="eyebrow mb-3">صفحة مستقلة للتقديم</span>
<h1 class="page-title mb-3">طلب فتح مركز صيفي</h1>
<p class="page-copy mb-0">هذه الصفحة مخصصة بالكامل لبيانات طلب المركز: تعريف الجهة، المسؤول المباشر، الطاقة التشغيلية، وملاحظات التنفيذ قبل انتقال الملف إلى لوحة المراجعة.</p>
</div>
<div class="col-lg-4">
<div class="page-banner-panel h-100">
<div class="mini-stat-label">حالة سير الطلبات الحالية</div>
<div class="mini-stat-value"><?= e((string) $stats['all']) ?></div>
<div class="mini-stat-copy">إجمالي الطلبات المسجلة داخل النظام حتى الآن، منها <?= e((string) $stats['submitted']) ?> بانتظار الاستلام و<?= e((string) $stats['under_review']) ?> تحت المراجعة.</div>
</div>
</div>
</div>
</div>
<div class="row g-4 align-items-start">
<div class="col-lg-8">
<div class="app-card form-card">
<div class="section-head mb-4">
<div>
<div class="section-title">بيانات الطلب الأساسية</div>
<div class="section-copy">قسّمنا النموذج إلى مجموعات واضحة حتى لا تختلط بيانات المركز مع بيانات التشغيل والتواصل.</div>
</div>
<span class="header-chip">نموذج منظم</span>
</div>
<?php if (!empty($errors['form'])): ?>
<div class="alert alert-danger mb-4"><?= e($errors['form']) ?></div>
<?php endif; ?>
<form method="post" novalidate>
<div class="form-section-block mb-4">
<div class="form-section-heading">
<div>
<h2 class="form-section-title">تعريف المركز</h2>
<p class="form-section-copy">معلومات الهوية الرسمية للمركز ومكان تشغيله والفئة التي سيخدمها.</p>
</div>
</div>
<div class="row g-3">
<div class="col-md-8">
<label class="form-label" for="center_name">اسم المركز</label>
<input class="form-control <?= isset($errors['center_name']) ? 'is-invalid' : '' ?>" id="center_name" name="center_name" value="<?= e($values['center_name']) ?>" placeholder="مثال: مركز الريادة الصيفي">
<?php if (isset($errors['center_name'])): ?><div class="invalid-feedback"><?= e($errors['center_name']) ?></div><?php endif; ?>
</div>
<div class="col-md-4">
<label class="form-label" for="city">المدينة / المنطقة</label>
<input class="form-control <?= isset($errors['city']) ? 'is-invalid' : '' ?>" id="city" name="city" value="<?= e($values['city']) ?>" placeholder="العاصمة">
<?php if (isset($errors['city'])): ?><div class="invalid-feedback"><?= e($errors['city']) ?></div><?php endif; ?>
</div>
<div class="col-md-6">
<label class="form-label" for="center_type">نوع المركز</label>
<select class="form-select <?= isset($errors['center_type']) ? 'is-invalid' : '' ?>" id="center_type" name="center_type">
<option value="">اختر</option>
<?php foreach (['بنين', 'بنات', 'مختلط'] as $option): ?>
<option value="<?= e($option) ?>" <?= $values['center_type'] === $option ? 'selected' : '' ?>><?= e($option) ?></option>
<?php endforeach; ?>
</select>
<?php if (isset($errors['center_type'])): ?><div class="invalid-feedback"><?= e($errors['center_type']) ?></div><?php endif; ?>
</div>
<div class="col-md-6">
<label class="form-label" for="gender_scope">الفئة المستهدفة</label>
<select class="form-select <?= isset($errors['gender_scope']) ? 'is-invalid' : '' ?>" id="gender_scope" name="gender_scope">
<option value="">اختر</option>
<?php foreach (['طلاب', 'طالبات', 'طلاب وطالبات'] as $option): ?>
<option value="<?= e($option) ?>" <?= $values['gender_scope'] === $option ? 'selected' : '' ?>><?= e($option) ?></option>
<?php endforeach; ?>
</select>
<?php if (isset($errors['gender_scope'])): ?><div class="invalid-feedback"><?= e($errors['gender_scope']) ?></div><?php endif; ?>
</div>
</div>
</div>
<div class="form-section-block mb-4">
<div class="form-section-heading">
<div>
<h2 class="form-section-title">بيانات المسؤول والتواصل</h2>
<p class="form-section-copy">تُستخدم هذه البيانات للتواصل السريع أثناء التحقق واستكمال الملاحظات.</p>
</div>
</div>
<div class="row g-3">
<div class="col-md-6">
<label class="form-label" for="director_name">اسم مدير / مديرة المركز</label>
<input class="form-control <?= isset($errors['director_name']) ? 'is-invalid' : '' ?>" id="director_name" name="director_name" value="<?= e($values['director_name']) ?>" placeholder="الاسم الرباعي">
<?php if (isset($errors['director_name'])): ?><div class="invalid-feedback"><?= e($errors['director_name']) ?></div><?php endif; ?>
</div>
<div class="col-md-3">
<label class="form-label" for="phone">رقم الهاتف</label>
<input class="form-control <?= isset($errors['phone']) ? 'is-invalid' : '' ?>" id="phone" name="phone" value="<?= e($values['phone']) ?>" placeholder="0500000000">
<?php if (isset($errors['phone'])): ?><div class="invalid-feedback"><?= e($errors['phone']) ?></div><?php endif; ?>
</div>
<div class="col-md-3">
<label class="form-label" for="email">البريد الإلكتروني</label>
<input type="email" class="form-control <?= isset($errors['email']) ? 'is-invalid' : '' ?>" id="email" name="email" value="<?= e($values['email']) ?>" placeholder="name@example.com">
<?php if (isset($errors['email'])): ?><div class="invalid-feedback"><?= e($errors['email']) ?></div><?php endif; ?>
</div>
</div>
</div>
<div class="form-section-block mb-4">
<div class="form-section-heading">
<div>
<h2 class="form-section-title">التشغيل والجدول الزمني</h2>
<p class="form-section-copy">قدّم تقديراً للطاقة الاستيعابية والفترة الزمنية واحتياجات التنفيذ المباشرة.</p>
</div>
</div>
<div class="row g-3">
<div class="col-md-4">
<label class="form-label" for="expected_students">الطاقة الاستيعابية المتوقعة</label>
<input type="number" min="10" max="2000" class="form-control <?= isset($errors['expected_students']) ? 'is-invalid' : '' ?>" id="expected_students" name="expected_students" value="<?= e($values['expected_students']) ?>" placeholder="150">
<?php if (isset($errors['expected_students'])): ?><div class="invalid-feedback"><?= e($errors['expected_students']) ?></div><?php endif; ?>
</div>
<div class="col-md-4">
<label class="form-label" for="start_date">تاريخ البداية</label>
<input type="date" class="form-control <?= isset($errors['start_date']) ? 'is-invalid' : '' ?>" id="start_date" name="start_date" value="<?= e($values['start_date']) ?>">
<?php if (isset($errors['start_date'])): ?><div class="invalid-feedback"><?= e($errors['start_date']) ?></div><?php endif; ?>
</div>
<div class="col-md-4">
<label class="form-label" for="end_date">تاريخ النهاية</label>
<input type="date" class="form-control <?= isset($errors['end_date']) ? 'is-invalid' : '' ?>" id="end_date" name="end_date" value="<?= e($values['end_date']) ?>">
<?php if (isset($errors['end_date'])): ?><div class="invalid-feedback"><?= e($errors['end_date']) ?></div><?php endif; ?>
</div>
<div class="col-12">
<label class="form-label" for="notes">ملخص البرنامج والاحتياجات</label>
<textarea class="form-control" id="notes" name="notes" rows="5" placeholder="مثال: المسارات التعليمية، عدد القاعات، الشركاء، أو أي متطلبات تشغيلية."><?= e($values['notes']) ?></textarea>
</div>
</div>
</div>
<div class="form-section-block mb-4">
<div class="form-section-heading">
<div>
<h2 class="form-section-title">المواد الدراسية</h2>
<p class="form-section-copy">اختر المواد الدراسية المطلوب تدريسها في هذا المركز.</p>
</div>
</div>
<div class="row g-3">
<div class="col-12">
<?php $available_subjects = get_enabled_subjects(); ?>
<?php if (empty($available_subjects)): ?>
<p class="text-muted small">لا توجد مواد دراسية مفعلة حالياً.</p>
<?php else: ?>
<div class="d-flex flex-wrap gap-3 <?= isset($errors['subjects']) ? 'is-invalid' : '' ?>">
<?php foreach ($available_subjects as $subject): ?>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="subjects[]" value="<?= e((string) $subject['id']) ?>" id="subject_<?= e((string) $subject['id']) ?>" <?= in_array((string) $subject['id'], array_map('strval', $values['subjects'] ?? []), true) ? 'checked' : '' ?>>
<label class="form-check-label" for="subject_<?= e((string) $subject['id']) ?>">
<?= e((string) $subject['name']) ?>
</label>
</div>
<?php endforeach; ?>
</div>
<?php if (isset($errors['subjects'])): ?><div class="invalid-feedback d-block"><?= e($errors['subjects']) ?></div><?php endif; ?>
<?php endif; ?>
</div>
</div>
</div>
<div class="form-actions d-flex flex-wrap gap-2 pt-2">
<button class="btn btn-dark px-4" type="submit">إرسال الطلب</button>
<a class="btn btn-outline-secondary px-4" href="applications.php">العودة إلى لوحة الطلبات</a>
</div>
</form>
</div>
</div>
<div class="col-lg-4">
<div class="app-card sidebar-card mb-4">
<div class="section-title mb-3">مسار هذه الصفحة</div>
<div class="process-list">
<div class="process-item active"><span>1</span><div><strong>إدخال البيانات</strong><small>تجميع بيانات الهوية والتشغيل في صفحة واحدة.</small></div></div>
<div class="process-item"><span>2</span><div><strong>التحقق والحفظ</strong><small>الحقول الإلزامية تُراجع قبل إنشاء المرجع.</small></div></div>
<div class="process-item"><span>3</span><div><strong>الانتقال للمراجعة</strong><small>يظهر الطلب فوراً داخل لوحة المشرف العام.</small></div></div>
</div>
</div>
<div class="app-card sidebar-card mb-4">
<div class="section-title mb-3">الحد الأدنى المطلوب</div>
<ul class="check-list mb-0">
<li>اسم المركز والمنطقة التشغيلية.</li>
<li>المسؤول المباشر ووسائل التواصل.</li>
<li>نوع المركز والفئة المستهدفة.</li>
<li>الطاقة التشغيلية ومواعيد البرنامج.</li>
<li>ملخص احتياجات التنفيذ أو الشراكات.</li>
</ul>
</div>
<div class="app-card sidebar-card">
<div class="section-title mb-3">روابط الصفحة التالية</div>
<div class="quick-link-stack">
<a class="quick-link-item" href="applications.php"><strong>لوحة الطلبات</strong><span>متابعة جميع الطلبات بعد الإرسال.</span></a>
<a class="quick-link-item" href="dashboard.php"><strong>لوحة القيادة</strong><span>مراجعة المؤشرات العامة للولاية.</span></a>
<a class="quick-link-item" href="modules.php"><strong>هيكل النظام</strong><span>فهم حدود النسخة الحالية ومسار العمل.</span></a>
</div>
</div>
</div>
</div>
</div>
</section>
<?php render_page_end(); ?>