load->database(); $this->load->model('santri_model'); // ini penting! $this->load->model('sejarah_model'); // ini penting! } public function loginWaliSantri() { // Ambil input JSON $post = json_decode(file_get_contents("php://input"), true); if (!$post) { echo json_encode([ "status" => "failed", "message" => "Data tidak dikirim dengan benar." ]); return; } $email_or_NIS = $post['email_or_NIS'] ?? null; $password = $post['password'] ?? null; if (empty($email_or_NIS) || empty($password)) { echo json_encode([ "status" => "failed", "message" => "Email/NIS dan password wajib diisi." ]); return; } // JOIN wali dan santri $this->db->select('tb_wali_santri.*, tb_santri.NIS, tb_santri.nama_santri as nama_santri, tb_santri.*'); $this->db->from('tb_wali_santri'); $this->db->join('tb_santri', 'tb_santri.id_santri = tb_wali_santri.id_santri'); $this->db->group_start(); $this->db->where('tb_wali_santri.email', $email_or_NIS); $this->db->or_where('tb_santri.NIS', $email_or_NIS); $this->db->group_end(); $this->db->where('tb_wali_santri.password', $password); // pastikan field password sesuai $query = $this->db->get(); $result = $query->row(); if ($result) { $id_santri = $result->id_santri; // Ambil data terkait santri $prestasi = $this->db->get_where('tb_prestasi_santri', ['id_santri' => $id_santri])->result(); $pelanggaran = $this->db->get_where('tb_pelanggaran_santri', ['id_santri' => $id_santri])->result(); $spp = $this->db->get_where('tb_informasi_spp_santri', ['id_santri' => $id_santri])->result(); // Data umum $kegiatan = $this->db->get('tb_kegiatan')->result(); $berita = $this->db->get('tb_berita')->result(); $sejarah = $this->db->get('tb_sejarah')->result(); echo json_encode([ "status" => "success", "wali_santri" => $result, "santri" => [ "id_santri" => $result->id_santri, "NIS" => $result->NIS, "nama" => $result->nama_santri ], "prestasi" => $prestasi, "pelanggaran" => $pelanggaran, "spp" => $spp, "kegiatan" => $kegiatan, "berita" => $berita, "sejarah" => $sejarah ]); } else { echo json_encode([ "status" => "failed", "message" => "Email/NIS atau password salah." ]); } } public function getDataSantri() { $id_santri = $this->input->get('id_santri'); $NIS = $this->input->get('NIS'); $email = $this->input->get('email'); if ($id_santri) { $data = $this->santri_model->get_data_by_id_santri($id_santri); // pastikan model ini ada } else if ($NIS) { $data = $this->santri_model->get_data_by_nis($NIS); } else if ($email) { $data = $this->santri_model->get_data_by_email_wali($email); } else { echo json_encode([ "status" => false, "message" => "Parameter id_santri, NIS atau email harus diisi" ]); return; } if ($data) { echo json_encode([ "status" => true, "data" => $data ]); } else { echo json_encode([ "status" => false, "message" => "Data tidak ditemukan" ]); } } public function getSejarah() { $this->load->model('sejarah_model'); $data = $this->sejarah_model->get_sejarah(); // ambil dari model if ($data) { echo json_encode([ 'status' => true, 'data' => $data ]); } else { echo json_encode([ 'status' => false, 'message' => 'Data sejarah tidak ditemukan' ]); } } public function getKegiatan() { $query = $this->db->get('tb_kegiatan'); if ($query->num_rows() > 0) { $data = $query->result(); echo json_encode([ 'status' => true, 'data' => $data ]); } else { echo json_encode([ 'status' => false, 'message' => 'Tidak ada kegiatan ditemukan' ]); } } public function getBerita() { $this->db->select('judul, tanggal, gambar, deskripsi'); $this->db->from('tb_berita'); $this->db->order_by('tanggal', 'DESC'); $query = $this->db->get(); if ($query->num_rows() > 0) { $data = $query->result(); // Tambahkan base URL agar Glide di Android bisa load gambarnya foreach ($data as &$row) { $row->gambar = base_url('assets/img/berita/' . $row->gambar); } echo json_encode([ 'status' => true, 'data' => $data ]); } else { echo json_encode([ 'status' => false, 'message' => 'Data berita tidak ditemukan' ]); } } // Kirim chat dari Android public function sendChat() { header('Content-Type: application/json'); $sender = $this->input->post('sender'); // 'wali' atau 'admin' $id_wali_santri = $this->input->post('id_wali_santri'); $message = $this->input->post('message'); if (!$sender || !$id_wali_santri || !$message) { echo json_encode([ 'status' => false, 'message' => 'Semua field wajib diisi.' ]); return; } $data = [ 'sender' => $sender, 'id_wali_santri' => $id_wali_santri, 'message' => $message ]; $this->db->insert('chat', $data); echo json_encode([ 'status' => true, 'message' => 'Pesan berhasil dikirim.' ]); } // Ambil chat berdasarkan wali santri (untuk Android) public function getChatByWali($id_wali_santri) { $this->db->select('chat.*, tb_wali_santri.nama_wali_santri, tb_santri.nama_santri'); $this->db->from('chat'); $this->db->join('tb_wali_santri', 'tb_wali_santri.id_wali_santri = chat.id_wali_santri'); $this->db->join('tb_santri', 'tb_santri.id_santri = tb_wali_santri.id_santri'); $this->db->where('chat.id_wali_santri', $id_wali_santri); $this->db->order_by('chat.timestamp', 'ASC'); $query = $this->db->get(); $result = $query->result(); echo json_encode([ 'status' => true, 'data' => $result ]); } public function saveToken() { $input = json_decode(file_get_contents("php://input"), true); $id_wali_santri = $input['id_wali_santri']; $token = $input['token']; if ($id_wali_santri && $token) { $data = [ 'id_wali_santri' => $id_wali_santri, 'token' => $token, 'created_at' => date('Y-m-d H:i:s') ]; // Jika sudah ada token, update $existing = $this->db->get_where('fcm_tokens', ['id_wali_santri' => $id_wali_santri])->row(); if ($existing) { $this->db->where('id_wali_santri', $id_wali_santri)->update('fcm_tokens', $data); } else { $this->db->insert('fcm_tokens', $data); } echo json_encode(['status' => 'success']); } else { echo json_encode(['status' => 'failed']); } } }