Files
alrahma_sunday_school/app/Database/Migrations/2026-08-07-000100_AddReviewDecisionEnrollmentStatus.php
root 1ef2800f12
Tests / PHPUnit (push) Successful in 1m26s
fix enrollment for the new school-year
2026-08-07 23:43:31 -04:00

64 lines
1.8 KiB
PHP

<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class AddReviewDecisionEnrollmentStatus extends Migration
{
private const STATUSES_WITH_REVIEW_DECISION = [
'admission under review',
'review & decision',
'payment pending',
'enrolled',
'withdraw under review',
'refund pending',
'withdrawn',
'waitlist',
'denied',
];
private const STATUSES_WITHOUT_REVIEW_DECISION = [
'admission under review',
'payment pending',
'enrolled',
'withdraw under review',
'refund pending',
'withdrawn',
'waitlist',
'denied',
];
public function up()
{
$this->modifyEnrollmentStatusEnum(self::STATUSES_WITH_REVIEW_DECISION);
}
public function down()
{
if ($this->db->tableExists('enrollments')) {
$this->db->table('enrollments')
->where('enrollment_status', 'review & decision')
->update(['enrollment_status' => 'admission under review']);
}
$this->modifyEnrollmentStatusEnum(self::STATUSES_WITHOUT_REVIEW_DECISION);
}
private function modifyEnrollmentStatusEnum(array $statuses): void
{
if (! $this->db->tableExists('enrollments') || ! $this->db->fieldExists('enrollment_status', 'enrollments')) {
return;
}
if (! in_array($this->db->DBDriver, ['MySQLi', 'MySQL'], true)) {
return;
}
$enumValues = implode(',', array_map(static fn (string $status): string => "'" . str_replace("'", "''", $status) . "'", $statuses));
$this->db->query(
"ALTER TABLE `enrollments` MODIFY `enrollment_status` ENUM({$enumValues}) NOT NULL DEFAULT 'admission under review'"
);
}
}