78 lines
2.6 KiB
PHP
Executable File
78 lines
2.6 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use CodeIgniter\Model;
|
|
|
|
/**
|
|
* Weekly class progress reports (one row per subject per week).
|
|
*
|
|
* unit_title stores a compact summary of unit/chapter rows: segments joined with " ; ".
|
|
* Teacher-entered custom Islamic or Quran topics use the prefix "Custom / {text}"
|
|
* (see {@see \App\Controllers\ClassProgressController::CUSTOM_UNIT_ROW_LABEL} and
|
|
* {@see \App\Controllers\ClassProgressController::splitUnitTitleForDisplay()}).
|
|
* DB column is VARCHAR(120); controller truncates to match.
|
|
*/
|
|
class ClassProgressReportModel extends Model
|
|
{
|
|
protected $table = 'class_progress_reports';
|
|
protected $primaryKey = 'id';
|
|
protected $returnType = 'array';
|
|
protected $allowedFields = [
|
|
'class_section_id',
|
|
'teacher_id',
|
|
'week_start',
|
|
'week_end',
|
|
'subject',
|
|
'unit_title',
|
|
'covered',
|
|
'homework',
|
|
'assessment',
|
|
'status',
|
|
'status_notes',
|
|
'class_notes',
|
|
'next_week_plan',
|
|
'support_needed',
|
|
'flags_json',
|
|
'attachment_path',
|
|
];
|
|
|
|
protected $useTimestamps = true;
|
|
protected $createdField = 'created_at';
|
|
protected $updatedField = 'updated_at';
|
|
|
|
/**
|
|
* Validation is performed in {@see \App\Controllers\ClassProgressController} on HTTP input.
|
|
* Rules below document schema limits and can be enabled if you set {@see $skipValidation} to false.
|
|
*/
|
|
protected $skipValidation = true;
|
|
|
|
protected $validationRules = [
|
|
'class_section_id' => 'required|integer',
|
|
'teacher_id' => 'required|integer',
|
|
'week_start' => 'required|valid_date[Y-m-d]',
|
|
'week_end' => 'required|valid_date[Y-m-d]',
|
|
'subject' => 'required|string|max_length[160]',
|
|
'unit_title' => 'permit_empty|string|max_length[120]',
|
|
'covered' => 'permit_empty|string',
|
|
'homework' => 'permit_empty|string',
|
|
'assessment' => 'permit_empty|string',
|
|
'status' => 'permit_empty|in_list[on_track,slightly_behind,behind]',
|
|
'status_notes' => 'permit_empty|string|max_length[200]',
|
|
'class_notes' => 'permit_empty|string',
|
|
'next_week_plan' => 'permit_empty|string',
|
|
'support_needed' => 'permit_empty|string',
|
|
'flags_json' => 'permit_empty|string',
|
|
'attachment_path' => 'permit_empty|string|max_length[255]',
|
|
];
|
|
|
|
protected $validationMessages = [
|
|
'unit_title' => [
|
|
'max_length' => 'Unit and chapter summary cannot exceed 120 characters.',
|
|
],
|
|
'subject' => [
|
|
'max_length' => 'Subject cannot exceed 160 characters.',
|
|
],
|
|
];
|
|
}
|