Files
alrahma_sunday_school_api/app/Models/EventCharges.php
T
root e13df69885
API CI/CD / Validate (composer + pint) (push) Successful in 3m6s
API CI/CD / Test (PHPUnit) (push) Failing after 4m53s
API CI/CD / Build frontend assets (push) Successful in 1m2s
API CI/CD / Security audit (push) Failing after 59s
API CI/CD / Deploy to shared hosting (PHP) (push) Has been skipped
fix unittests issues
2026-07-07 20:56:32 -04:00

66 lines
1.9 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Support\Facades\DB;
class EventCharges extends BaseModel
{
protected $table = 'event_charges';
// ✅ legacy: useTimestamps = true (created_at/updated_at)
public $timestamps = true;
protected $fillable = ['event_id', 'parent_id', 'student_id', 'participation', 'charged', 'semester', 'school_year', 'updated_by', 'created_at', 'updated_at'];
protected $casts = [
'event_id' => 'integer',
'parent_id' => 'integer',
'student_id' => 'integer',
'participation' => 'boolean', // change if stored as string/enum
'charged' => 'boolean', // change if stored as string/enum
'updated_by' => 'integer',
];
/* Optional relationships */
public function event()
{
return $this->belongsTo(Event::class, 'event_id');
}
public function parent()
{
return $this->belongsTo(User::class, 'parent_id');
}
public function student()
{
return $this->belongsTo(Student::class, 'student_id');
}
/**
* Equivalent of legacy getChargesWithEventInfo()
* Returns rows with: event_charges.*, events.event_name, events.amount
*/
public static function getChargesWithEventInfo(?int $parentId = null, ?string $schoolYear = null, ?string $semester = null): array
{
$q = DB::table('event_charges')
->leftJoin('events', 'events.id', '=', 'event_charges.event_id')
->select('event_charges.*', 'events.event_name', 'events.amount');
if (! empty($parentId)) {
$q->where('event_charges.parent_id', $parentId);
}
if (! empty($schoolYear)) {
$q->where('event_charges.school_year', $schoolYear);
}
if (! empty($semester)) {
$q->where('event_charges.semester', $semester);
}
return $q->get()->map(fn ($r) => (array) $r)->all();
}
}