remaining failures are now broader contract/workflow assertions and route/API behavior issues
API CI/CD / Validate (composer + pint) (push) Successful in 2m47s
API CI/CD / Test (PHPUnit) (push) Failing after 3m5s
API CI/CD / Build frontend assets (push) Failing after 5m22s
API CI/CD / Security audit (push) Failing after 34s
API CI/CD / Deploy to shared hosting (PHP) (push) Has been skipped
API CI/CD / Validate (composer + pint) (push) Successful in 2m47s
API CI/CD / Test (PHPUnit) (push) Failing after 3m5s
API CI/CD / Build frontend assets (push) Failing after 5m22s
API CI/CD / Security audit (push) Failing after 34s
API CI/CD / Deploy to shared hosting (PHP) (push) Has been skipped
This commit is contained in:
@@ -19,7 +19,7 @@ class EventChargeService
|
|||||||
->where('enrollments.school_year', $schoolYear)
|
->where('enrollments.school_year', $schoolYear)
|
||||||
->whereIn('enrollments.enrollment_status', ['enrolled', 'payment pending'])
|
->whereIn('enrollments.enrollment_status', ['enrolled', 'payment pending'])
|
||||||
->get()
|
->get()
|
||||||
->map(fn ($row) => (array) $row)
|
->map(fn ($row) => $row->toArray())
|
||||||
->all();
|
->all();
|
||||||
|
|
||||||
$parentIds = [];
|
$parentIds = [];
|
||||||
@@ -152,7 +152,7 @@ class EventChargeService
|
|||||||
$charges = EventCharges::query()
|
$charges = EventCharges::query()
|
||||||
->where('event_id', $eventId)
|
->where('event_id', $eventId)
|
||||||
->get()
|
->get()
|
||||||
->map(fn ($row) => (array) $row)
|
->map(fn ($row) => $row->toArray())
|
||||||
->all();
|
->all();
|
||||||
|
|
||||||
$parentIds = [];
|
$parentIds = [];
|
||||||
|
|||||||
@@ -675,7 +675,7 @@ class ReportCardService
|
|||||||
$query->where('student_class.school_year', $schoolYear);
|
$query->where('student_class.school_year', $schoolYear);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $query->get()->map(fn ($r) => (array) $r)->all();
|
return $query->get()->map(fn ($r) => $r->toArray())->all();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function normalizeSemester(?string $input): string
|
private function normalizeSemester(?string $input): string
|
||||||
|
|||||||
@@ -19,25 +19,25 @@ CREATE TABLE `users` (
|
|||||||
`firstname` varchar(255) NOT NULL,
|
`firstname` varchar(255) NOT NULL,
|
||||||
`lastname` varchar(255) NOT NULL,
|
`lastname` varchar(255) NOT NULL,
|
||||||
`gender` enum('Male','Female') DEFAULT NULL,
|
`gender` enum('Male','Female') DEFAULT NULL,
|
||||||
`cellphone` varchar(25) NOT NULL,
|
`cellphone` varchar(25) DEFAULT NULL,
|
||||||
`email` varchar(255) NOT NULL,
|
`email` varchar(255) NOT NULL,
|
||||||
`address_street` varchar(255) NOT NULL,
|
`address_street` varchar(255) DEFAULT NULL,
|
||||||
`apt` varchar(25) DEFAULT NULL,
|
`apt` varchar(25) DEFAULT NULL,
|
||||||
`city` varchar(255) NOT NULL,
|
`city` varchar(255) DEFAULT NULL,
|
||||||
`state` varchar(25) NOT NULL,
|
`state` varchar(25) DEFAULT NULL,
|
||||||
`zip` varchar(25) NOT NULL,
|
`zip` varchar(25) DEFAULT NULL,
|
||||||
`accept_school_policy` tinyint(1) NOT NULL,
|
`accept_school_policy` tinyint(1) DEFAULT '0',
|
||||||
`is_verified` tinyint(1) NOT NULL DEFAULT '0',
|
`is_verified` tinyint(1) NOT NULL DEFAULT '0',
|
||||||
`status` varchar(10) NOT NULL DEFAULT 'Inactive',
|
`status` varchar(10) NOT NULL DEFAULT 'Inactive',
|
||||||
`is_suspended` tinyint(1) NOT NULL DEFAULT '0',
|
`is_suspended` tinyint(1) NOT NULL DEFAULT '0',
|
||||||
`failed_attempts` int DEFAULT '0',
|
`failed_attempts` int DEFAULT '0',
|
||||||
`password` varchar(255) NOT NULL,
|
`password` varchar(255) DEFAULT NULL,
|
||||||
`created_at` datetime DEFAULT NULL,
|
`created_at` datetime DEFAULT NULL,
|
||||||
`updated_at` datetime DEFAULT NULL,
|
`updated_at` datetime DEFAULT NULL,
|
||||||
`token` varchar(255) DEFAULT NULL,
|
`token` varchar(255) DEFAULT NULL,
|
||||||
`account_id` varchar(255) DEFAULT NULL,
|
`account_id` varchar(255) DEFAULT NULL,
|
||||||
`user_type` enum('primary','secondary','tertiary') DEFAULT 'primary',
|
`user_type` enum('primary','secondary','tertiary') DEFAULT 'primary',
|
||||||
`semester` varchar(255) NOT NULL,
|
`semester` varchar(255) DEFAULT NULL,
|
||||||
`school_year` varchar(9) DEFAULT NULL,
|
`school_year` varchar(9) DEFAULT NULL,
|
||||||
`rfid_tag` varchar(100) DEFAULT NULL,
|
`rfid_tag` varchar(100) DEFAULT NULL,
|
||||||
`last_failed_at` datetime DEFAULT NULL
|
`last_failed_at` datetime DEFAULT NULL
|
||||||
|
|||||||
@@ -15,22 +15,22 @@ return new class extends Migration
|
|||||||
SqliteCompat::statement(<<<'SQL'
|
SqliteCompat::statement(<<<'SQL'
|
||||||
CREATE TABLE `students` (
|
CREATE TABLE `students` (
|
||||||
`id` int UNSIGNED NOT NULL,
|
`id` int UNSIGNED NOT NULL,
|
||||||
`school_id` char(100) COLLATE utf8mb4_general_ci NOT NULL,
|
`school_id` char(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`firstname` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
|
`firstname` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
|
||||||
`lastname` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
|
`lastname` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
|
||||||
`dob` date DEFAULT NULL,
|
`dob` date DEFAULT NULL,
|
||||||
`age` int NOT NULL,
|
`age` int DEFAULT NULL,
|
||||||
`gender` varchar(10) COLLATE utf8mb4_general_ci NOT NULL,
|
`gender` varchar(10) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`is_active` tinyint(1) NOT NULL DEFAULT '1',
|
`is_active` tinyint(1) NOT NULL DEFAULT '1',
|
||||||
`registration_grade` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`registration_grade` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`is_new` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1 = new student, 0 = returning student',
|
`is_new` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1 = new student, 0 = returning student',
|
||||||
`photo_consent` tinyint(1) NOT NULL,
|
`photo_consent` tinyint(1) DEFAULT NULL,
|
||||||
`parent_id` int NOT NULL,
|
`parent_id` int DEFAULT NULL,
|
||||||
`registration_date` datetime DEFAULT NULL,
|
`registration_date` datetime DEFAULT NULL,
|
||||||
`tuition_paid` tinyint(1) NOT NULL DEFAULT '0',
|
`tuition_paid` tinyint(1) NOT NULL DEFAULT '0',
|
||||||
`rfid_tag` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`rfid_tag` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`semester` varchar(10) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`semester` varchar(10) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`year_of_registration` varchar(25) COLLATE utf8mb4_general_ci NOT NULL,
|
`year_of_registration` varchar(25) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`school_year` varchar(9) COLLATE utf8mb4_general_ci DEFAULT NULL
|
`school_year` varchar(9) COLLATE utf8mb4_general_ci DEFAULT NULL
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
SQL
|
SQL
|
||||||
|
|||||||
@@ -15,15 +15,15 @@ return new class extends Migration
|
|||||||
SqliteCompat::statement(<<<'SQL'
|
SqliteCompat::statement(<<<'SQL'
|
||||||
CREATE TABLE `parents` (
|
CREATE TABLE `parents` (
|
||||||
`id` int NOT NULL,
|
`id` int NOT NULL,
|
||||||
`secondparent_firstname` varchar(100) COLLATE utf8mb4_general_ci NOT NULL,
|
`secondparent_firstname` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`secondparent_lastname` varchar(100) COLLATE utf8mb4_general_ci NOT NULL,
|
`secondparent_lastname` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`secondparent_gender` enum('Male','Female') COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`secondparent_gender` enum('Male','Female') COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`secondparent_email` varchar(150) COLLATE utf8mb4_general_ci NOT NULL,
|
`secondparent_email` varchar(150) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`secondparent_phone` varchar(15) COLLATE utf8mb4_general_ci NOT NULL,
|
`secondparent_phone` varchar(15) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`firstparent_id` int NOT NULL,
|
`firstparent_id` int DEFAULT NULL,
|
||||||
`secondparent_id` int NOT NULL,
|
`secondparent_id` int DEFAULT NULL,
|
||||||
`semester` varchar(10) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`semester` varchar(10) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`school_year` varchar(20) COLLATE utf8mb4_general_ci NOT NULL,
|
`school_year` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ CREATE TABLE `student_class` (
|
|||||||
`student_id` int NOT NULL,
|
`student_id` int NOT NULL,
|
||||||
`class_section_id` int DEFAULT NULL,
|
`class_section_id` int DEFAULT NULL,
|
||||||
`is_event_only` tinyint UNSIGNED NOT NULL DEFAULT '0',
|
`is_event_only` tinyint UNSIGNED NOT NULL DEFAULT '0',
|
||||||
`semester` varchar(255) NOT NULL,
|
`semester` varchar(255) DEFAULT NULL,
|
||||||
`school_year` varchar(25) DEFAULT NULL,
|
`school_year` varchar(25) DEFAULT NULL,
|
||||||
`description` text,
|
`description` text,
|
||||||
`created_at` datetime DEFAULT NULL,
|
`created_at` datetime DEFAULT NULL,
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ CREATE TABLE `teacher_class` (
|
|||||||
`class_section_id` int DEFAULT NULL,
|
`class_section_id` int DEFAULT NULL,
|
||||||
`teacher_id` int DEFAULT NULL,
|
`teacher_id` int DEFAULT NULL,
|
||||||
`position` enum('main','ta') COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`position` enum('main','ta') COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`semester` varchar(25) COLLATE utf8mb4_general_ci NOT NULL,
|
`semester` varchar(25) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`school_year` varchar(25) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`school_year` varchar(25) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`description` text COLLATE utf8mb4_general_ci,
|
`description` text COLLATE utf8mb4_general_ci,
|
||||||
`created_at` datetime DEFAULT NULL,
|
`created_at` datetime DEFAULT NULL,
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ CREATE TABLE `classSection` (
|
|||||||
`class_section_name` varchar(100) NOT NULL,
|
`class_section_name` varchar(100) NOT NULL,
|
||||||
`created_at` datetime DEFAULT NULL,
|
`created_at` datetime DEFAULT NULL,
|
||||||
`updated_at` datetime DEFAULT NULL,
|
`updated_at` datetime DEFAULT NULL,
|
||||||
`semester` varchar(255) NOT NULL,
|
`semester` varchar(255) DEFAULT NULL,
|
||||||
`school_year` varchar(9) DEFAULT NULL
|
`school_year` varchar(9) DEFAULT NULL
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
|
||||||
SQL
|
SQL
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ return new class extends Migration
|
|||||||
CREATE TABLE `classes` (
|
CREATE TABLE `classes` (
|
||||||
`id` int UNSIGNED NOT NULL,
|
`id` int UNSIGNED NOT NULL,
|
||||||
`class_name` varchar(100) NOT NULL,
|
`class_name` varchar(100) NOT NULL,
|
||||||
`schedule` varchar(100) NOT NULL,
|
`schedule` varchar(100) DEFAULT NULL,
|
||||||
`capacity` int NOT NULL,
|
`capacity` int DEFAULT NULL,
|
||||||
`semester` varchar(255) NOT NULL,
|
`semester` varchar(255) DEFAULT NULL,
|
||||||
`school_year` varchar(9) DEFAULT NULL
|
`school_year` varchar(9) DEFAULT NULL
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
|
||||||
SQL
|
SQL
|
||||||
|
|||||||
@@ -17,14 +17,14 @@ CREATE TABLE `enrollments` (
|
|||||||
`id` int UNSIGNED NOT NULL,
|
`id` int UNSIGNED NOT NULL,
|
||||||
`student_id` int UNSIGNED NOT NULL,
|
`student_id` int UNSIGNED NOT NULL,
|
||||||
`class_section_id` int UNSIGNED DEFAULT NULL,
|
`class_section_id` int UNSIGNED DEFAULT NULL,
|
||||||
`parent_id` int UNSIGNED NOT NULL,
|
`parent_id` int UNSIGNED DEFAULT NULL,
|
||||||
`enrollment_date` date NOT NULL,
|
`enrollment_date` date DEFAULT NULL,
|
||||||
`enrollment_status` enum('admission under review','payment pending','enrolled','withdraw under review','refund pending','withdrawn','waitlist','denied') COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'admission under review',
|
`enrollment_status` enum('admission under review','payment pending','enrolled','withdraw under review','refund pending','withdrawn','waitlist','denied') COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'admission under review',
|
||||||
`withdrawal_date` date DEFAULT NULL,
|
`withdrawal_date` date DEFAULT NULL,
|
||||||
`is_withdrawn` tinyint(1) NOT NULL DEFAULT '0',
|
`is_withdrawn` tinyint(1) NOT NULL DEFAULT '0',
|
||||||
`admission_status` enum('pending','accepted','denied') COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'pending',
|
`admission_status` enum('pending','accepted','denied') COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'pending',
|
||||||
`semester` varchar(25) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`semester` varchar(25) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`school_year` varchar(25) COLLATE utf8mb4_general_ci NOT NULL,
|
`school_year` varchar(25) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`created_at` datetime DEFAULT NULL,
|
`created_at` datetime DEFAULT NULL,
|
||||||
`updated_at` datetime DEFAULT NULL
|
`updated_at` datetime DEFAULT NULL
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
|||||||
+1
@@ -72,6 +72,7 @@ return new class extends Migration
|
|||||||
$exists = DB::table('configuration')->where('config_key', 'promotion.section_capacity')->exists();
|
$exists = DB::table('configuration')->where('config_key', 'promotion.section_capacity')->exists();
|
||||||
if (! $exists) {
|
if (! $exists) {
|
||||||
DB::table('configuration')->insert([
|
DB::table('configuration')->insert([
|
||||||
|
'id' => 10000,
|
||||||
'config_key' => 'promotion.section_capacity',
|
'config_key' => 'promotion.section_capacity',
|
||||||
'config_value' => '20',
|
'config_value' => '20',
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -0,0 +1,81 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
$this->addColumns('classes', [
|
||||||
|
'created_at' => fn (Blueprint $table) => $table->timestamp('created_at')->nullable(),
|
||||||
|
'updated_at' => fn (Blueprint $table) => $table->timestamp('updated_at')->nullable(),
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->addColumns('event_charges', [
|
||||||
|
'created_by' => fn (Blueprint $table) => $table->unsignedInteger('created_by')->nullable(),
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->addColumns('students', [
|
||||||
|
'created_at' => fn (Blueprint $table) => $table->timestamp('created_at')->nullable(),
|
||||||
|
'updated_at' => fn (Blueprint $table) => $table->timestamp('updated_at')->nullable(),
|
||||||
|
'badge_scan' => fn (Blueprint $table) => $table->string('badge_scan', 100)->nullable(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
$this->dropColumns('students', ['badge_scan', 'updated_at', 'created_at']);
|
||||||
|
$this->dropColumns('event_charges', ['created_by']);
|
||||||
|
$this->dropColumns('classes', ['updated_at', 'created_at']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array<string, callable(Blueprint): void> $columns
|
||||||
|
*/
|
||||||
|
private function addColumns(string $table, array $columns): void
|
||||||
|
{
|
||||||
|
if (! Schema::hasTable($table)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$missing = array_filter(
|
||||||
|
array_keys($columns),
|
||||||
|
static fn (string $column): bool => ! Schema::hasColumn($table, $column)
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($missing === []) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Schema::table($table, function (Blueprint $blueprint) use ($columns, $missing): void {
|
||||||
|
foreach ($missing as $column) {
|
||||||
|
$columns[$column]($blueprint);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param list<string> $columns
|
||||||
|
*/
|
||||||
|
private function dropColumns(string $table, array $columns): void
|
||||||
|
{
|
||||||
|
if (! Schema::hasTable($table)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$existing = array_filter(
|
||||||
|
$columns,
|
||||||
|
static fn (string $column): bool => Schema::hasColumn($table, $column)
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($existing === []) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Schema::table($table, function (Blueprint $blueprint) use ($existing): void {
|
||||||
|
$blueprint->dropColumn($existing);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user