Commit 5903c64f authored by Mahmoud Aglan's avatar Mahmoud Aglan

fix(sports): disable card button until subscription is paid

Step 4 now shows contextual messages:
- Default: "waiting for coach assessment"
- After assessment: "waiting for subscription payment"
- After payment: enables card generation button

Also refines the lookup block: only refuse entry when status is
completed/assessed AND card_generated=1 (fully done). Players who
still need to finish steps are redirected to resume.
Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
parent 2c686f52
...@@ -86,7 +86,7 @@ class RegistrationWizardController extends Controller ...@@ -86,7 +86,7 @@ class RegistrationWizardController extends Controller
$existingReg = null; $existingReg = null;
if ($nationalId !== '') { if ($nationalId !== '') {
$existingReg = $db->selectOne( $existingReg = $db->selectOne(
"SELECT r.id, r.status FROM sa_registrations r "SELECT r.id, r.status, r.card_generated FROM sa_registrations r
INNER JOIN sa_players p ON p.id = r.player_id INNER JOIN sa_players p ON p.id = r.player_id
WHERE p.national_id = ? AND r.status IN ('in_progress','completed','assessed') AND p.is_archived = 0 WHERE p.national_id = ? AND r.status IN ('in_progress','completed','assessed') AND p.is_archived = 0
ORDER BY r.id DESC LIMIT 1", ORDER BY r.id DESC LIMIT 1",
...@@ -95,7 +95,7 @@ class RegistrationWizardController extends Controller ...@@ -95,7 +95,7 @@ class RegistrationWizardController extends Controller
} }
if (!$existingReg && $memberId > 0) { if (!$existingReg && $memberId > 0) {
$existingReg = $db->selectOne( $existingReg = $db->selectOne(
"SELECT r.id, r.status FROM sa_registrations r "SELECT r.id, r.status, r.card_generated FROM sa_registrations r
INNER JOIN sa_players p ON p.id = r.player_id INNER JOIN sa_players p ON p.id = r.player_id
WHERE p.member_id = ? AND r.status IN ('in_progress','completed','assessed') AND p.is_archived = 0 WHERE p.member_id = ? AND r.status IN ('in_progress','completed','assessed') AND p.is_archived = 0
ORDER BY r.id DESC LIMIT 1", ORDER BY r.id DESC LIMIT 1",
...@@ -103,7 +103,9 @@ class RegistrationWizardController extends Controller ...@@ -103,7 +103,9 @@ class RegistrationWizardController extends Controller
); );
} }
if ($existingReg) { if ($existingReg) {
if (in_array($existingReg['status'], ['completed', 'assessed'], true)) { if (in_array($existingReg['status'], ['completed', 'assessed'], true)
&& (int) ($existingReg['card_generated'] ?? 0) === 1
) {
return $this->json([ return $this->json([
'success' => false, 'success' => false,
'error' => 'هذا اللاعب مسجل بالفعل وأكمل جميع الخطوات — لا يمكن التسجيل مرة أخرى', 'error' => 'هذا اللاعب مسجل بالفعل وأكمل جميع الخطوات — لا يمكن التسجيل مرة أخرى',
......
...@@ -170,17 +170,31 @@ ...@@ -170,17 +170,31 @@
<div style="width:80px;height:80px;border-radius:50%;background:#ECFDF5;margin:0 auto 16px;display:flex;align-items:center;justify-content:center;"> <div style="width:80px;height:80px;border-radius:50%;background:#ECFDF5;margin:0 auto 16px;display:flex;align-items:center;justify-content:center;">
<i data-lucide="check-circle" style="width:40px;height:40px;color:#059669;"></i> <i data-lucide="check-circle" style="width:40px;height:40px;color:#059669;"></i>
</div> </div>
<?php if (($registration['payment_status'] ?? 'unpaid') === 'paid'): ?>
<h3 style="margin:0 0 8px;font-size:18px;font-weight:700;color:#059669;">تم التسجيل بنجاح!</h3>
<p style="color:#6B7280;font-size:14px;margin:0;">تم دفع الاشتراك — يمكنك الآن إنشاء الكارت</p>
<?php elseif (in_array($registration['status'] ?? '', ['assessed'], true)): ?>
<h3 style="margin:0 0 8px;font-size:18px;font-weight:700;color:#059669;">تم التقييم!</h3>
<p style="color:#6B7280;font-size:14px;margin:0;">تم تقييم اللاعب — في انتظار دفع الاشتراك من الكاشير</p>
<?php else: ?>
<h3 style="margin:0 0 8px;font-size:18px;font-weight:700;color:#059669;">تم التسجيل بنجاح!</h3> <h3 style="margin:0 0 8px;font-size:18px;font-weight:700;color:#059669;">تم التسجيل بنجاح!</h3>
<p style="color:#6B7280;font-size:14px;margin:0;">تم دفع رسوم التسجيل — اللاعب في انتظار التقييم الفني من المدرب</p> <p style="color:#6B7280;font-size:14px;margin:0;">تم دفع رسوم التسجيل — اللاعب في انتظار التقييم الفني من المدرب</p>
<?php endif; ?>
</div> </div>
</div> </div>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:10px;"> <div style="display:grid;grid-template-columns:1fr 1fr;gap:10px;">
<a href="/sa/registration/<?= (int) $registration['id'] ?>/print-form" target="_blank" class="btn btn-outline" style="padding:14px;font-size:14px;border-radius:10px;min-height:50px;text-align:center;"> <a href="/sa/registration/<?= (int) $registration['id'] ?>/print-form" target="_blank" class="btn btn-outline" style="padding:14px;font-size:14px;border-radius:10px;min-height:50px;text-align:center;">
<i data-lucide="printer" style="width:16px;height:16px;vertical-align:middle;margin-left:4px;"></i> طباعة الاستمارة <i data-lucide="printer" style="width:16px;height:16px;vertical-align:middle;margin-left:4px;"></i> طباعة الاستمارة
</a> </a>
<?php if (($registration['payment_status'] ?? 'unpaid') === 'paid'): ?>
<button type="button" id="btnGenerateCard" class="btn btn-primary" style="padding:14px;font-size:14px;border-radius:10px;min-height:50px;" <?= (int) ($registration['card_generated'] ?? 0) ? 'disabled' : '' ?>> <button type="button" id="btnGenerateCard" class="btn btn-primary" style="padding:14px;font-size:14px;border-radius:10px;min-height:50px;" <?= (int) ($registration['card_generated'] ?? 0) ? 'disabled' : '' ?>>
<i data-lucide="credit-card" style="width:16px;height:16px;vertical-align:middle;margin-left:4px;"></i> إنشاء الكارت <i data-lucide="credit-card" style="width:16px;height:16px;vertical-align:middle;margin-left:4px;"></i> إنشاء الكارت
</button> </button>
<?php else: ?>
<button type="button" class="btn btn-primary" style="padding:14px;font-size:14px;border-radius:10px;min-height:50px;opacity:0.5;cursor:not-allowed;" disabled>
<i data-lucide="credit-card" style="width:16px;height:16px;vertical-align:middle;margin-left:4px;"></i> إنشاء الكارت
</button>
<?php endif; ?>
</div> </div>
<?php if ((int) ($registration['card_generated'] ?? 0)): ?> <?php if ((int) ($registration['card_generated'] ?? 0)): ?>
<div style="margin-top:10px;display:grid;grid-template-columns:1fr 1fr;gap:10px;"> <div style="margin-top:10px;display:grid;grid-template-columns:1fr 1fr;gap:10px;">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment