where('appointment_date', $date)->countAllResults(); } public function getRecentActivity(int $limit = 6): array { return $this->select("appointments.status, appointments.appointment_date, appointments.appointment_time, TRIM(CONCAT(COALESCE(u1.first_name, ''), ' ', COALESCE(u1.last_name, ''))) AS patient_name, TRIM(CONCAT(COALESCE(u2.first_name, ''), ' ', COALESCE(u2.last_name, ''))) AS doctor_name") ->join('patients p', 'p.id = appointments.patient_id') ->join('users u1', 'u1.id = p.user_id') ->join('doctors d', 'd.id = appointments.doctor_id') ->join('users u2', 'u2.id = d.user_id') ->orderBy('appointments.id', 'DESC') ->findAll($limit); } public function getAdminAppointments(): array { return $this->asObject() ->select("appointments.*, TRIM(CONCAT(COALESCE(u1.first_name, ''), ' ', COALESCE(u1.last_name, ''))) AS patient_name, TRIM(CONCAT(COALESCE(u2.first_name, ''), ' ', COALESCE(u2.last_name, ''))) AS doctor_name") ->join('patients p', 'p.id = appointments.patient_id') ->join('users u1', 'u1.id = p.user_id') ->join('doctors d', 'd.id = appointments.doctor_id') ->join('users u2', 'u2.id = d.user_id') ->findAll(); } public function deleteByDoctorId(int $doctorId): void { $this->where('doctor_id', $doctorId)->delete(); } public function deleteByPatientId(int $patientId): void { $this->where('patient_id', $patientId)->delete(); } protected $beforeUpdate = []; protected $afterUpdate = []; protected $beforeFind = []; protected $afterFind = []; protected $beforeDelete = []; protected $afterDelete = []; }