Files
root 608aca79b8
Deploy to Shared Hosting / Shared hosting deploy (push) Failing after 47s
Tests / PHPUnit (push) Failing after 1m19s
fix enrollment, invoice, payment and financila aid
2026-08-24 21:20:58 -04:00

84 lines
3.0 KiB
PHP

<?php
namespace App\Models;
use CodeIgniter\Model;
class SchoolYearModel extends Model
{
protected $table = 'school_years';
protected $primaryKey = 'id';
protected $returnType = 'array';
protected $useTimestamps = true;
protected $allowedFields = [
'name',
'status',
'starts_on',
'ends_on',
'description',
'registration_starts_on',
'registration_ends_on',
'registration_opens_at',
'registration_deadline_at',
'late_registration_blocked',
'administrative_exceptions_permitted',
'registration_exception_roles',
'adult_student_registration_enabled',
'tuition_due_at_registration',
'carry_over_balance_behavior',
'financial_policy_message',
'payment_plan_available',
'registration_launch_approved_at',
'registration_launch_approved_by',
'registration_email_template_version',
'fall_makeup_exam_on',
'total_instructional_weeks',
'annual_fee_includes_books',
'withdrawal_policy_version',
'previous_school_year_id',
'next_school_year_id',
'activated_at',
'closing_started_at',
'closed_at',
'archived_at',
'created_by',
'updated_by',
];
protected $validationRules = [
'name' => 'required|regex_match[/^\d{4}-\d{4}$/]|max_length[9]',
'status' => 'required|in_list[draft,active,closing,closed,archived]',
'starts_on' => 'permit_empty|valid_date[Y-m-d]',
'ends_on' => 'permit_empty|valid_date[Y-m-d]',
'registration_starts_on' => 'permit_empty|valid_date[Y-m-d]',
'registration_ends_on' => 'permit_empty|valid_date[Y-m-d]',
'registration_opens_at' => 'permit_empty|valid_date[Y-m-d H:i:s]',
'registration_deadline_at' => 'permit_empty|valid_date[Y-m-d H:i:s]',
'late_registration_blocked' => 'permit_empty|in_list[0,1]',
'administrative_exceptions_permitted' => 'permit_empty|in_list[0,1]',
'adult_student_registration_enabled' => 'permit_empty|in_list[0,1]',
'tuition_due_at_registration' => 'permit_empty|decimal',
'carry_over_balance_behavior' => 'permit_empty|in_list[information_only,payment_plan_required,submission_allowed_confirmation_blocked,submission_blocked_until_payment,admin_approval_required]',
'payment_plan_available' => 'permit_empty|in_list[0,1]',
'registration_launch_approved_at' => 'permit_empty|valid_date[Y-m-d H:i:s]',
'registration_launch_approved_by' => 'permit_empty|integer',
'fall_makeup_exam_on' => 'permit_empty|valid_date[Y-m-d]',
'total_instructional_weeks' => 'permit_empty|integer|greater_than[0]',
'annual_fee_includes_books' => 'permit_empty|in_list[0,1]',
];
public function active(): ?array
{
$rows = $this->where('status', 'active')
->orderBy('id', 'DESC')
->findAll(2);
if (count($rows) !== 1) {
return null;
}
return $rows[0];
}
}