Fix semester context, attendance rosters, and billing workflows
- load global semester helpers consistently and use date-based semester defaults - fix grading and daily attendance duplicate student/section rows - keep attendance violations scoped to the current semester by default - update invoice, refund, discount, payment, and financial aid flows - add configuration cleanup migrations for duplicate calendar/semester keys - refresh parent registration/report-card and print request handling - update related models, services, views, cron notes, and test coverage
This commit is contained in:
+59
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace App\Database\Migrations;
|
||||
|
||||
use CodeIgniter\Database\Migration;
|
||||
|
||||
class AlignFallSemesterStartWithSchoolYearStart extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
if (! $this->db->tableExists('configuration')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$schoolYearStart = $this->configValue('school_year_start_date');
|
||||
if ($schoolYearStart === null || $schoolYearStart === '') {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->upsertConfigValue('fall_semester_start', $schoolYearStart);
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
}
|
||||
|
||||
private function configValue(string $key): ?string
|
||||
{
|
||||
$row = $this->db->table('configuration')
|
||||
->select('config_value')
|
||||
->where('config_key', $key)
|
||||
->orderBy('id', 'DESC')
|
||||
->get(1)
|
||||
->getRowArray();
|
||||
|
||||
return $row ? (string) $row['config_value'] : null;
|
||||
}
|
||||
|
||||
private function upsertConfigValue(string $key, string $value): void
|
||||
{
|
||||
$exists = $this->db->table('configuration')
|
||||
->select('id')
|
||||
->where('config_key', $key)
|
||||
->get(1)
|
||||
->getRowArray();
|
||||
|
||||
if ($exists) {
|
||||
$this->db->table('configuration')
|
||||
->where('config_key', $key)
|
||||
->update(['config_value' => $value]);
|
||||
return;
|
||||
}
|
||||
|
||||
$this->db->table('configuration')->insert([
|
||||
'config_key' => $key,
|
||||
'config_value' => $value,
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user