diff --git a/app/Controllers/Tindakan.php b/app/Controllers/Tindakan.php new file mode 100644 index 0000000..5fc7403 --- /dev/null +++ b/app/Controllers/Tindakan.php @@ -0,0 +1,164 @@ +request->getGet('q'); + + $builder = $db->table('register_ambulans r') + ->select('r.id, r.register, p.nama, p.rm') + ->join('pasien p', 'p.rm = r.rm', 'left'); + + if ($q) { + $builder->groupStart() + ->like('p.nama', $q) + ->orLike('r.register', $q) + ->orLike('p.rm', $q) + ->groupEnd(); + } + + $data['pasien'] = $builder->orderBy('r.id', 'DESC') + ->get() + ->getResultArray(); + + return view('tindakan/pilih_pasien', $data); + } + + // ========================= + // AMBIL DATA TARIF (JSON AJAX) + // ========================= + public function tarif() + { + $db = \Config\Database::connect(); + + $data = $db->table('tindakan_tarif') + ->orderBy('uraian', 'ASC') + ->get() + ->getResultArray(); + + return $this->response->setJSON($data); + } + + // ========================= + // SIMPAN TRANSAKSI TINDAKAN + // ========================= + public function simpan() + { + $db = \Config\Database::connect(); + + $input = json_decode($this->request->getPost('data'), true); + + if (!$input) { + return $this->response->setJSON([ + 'status' => 'error', + 'message' => 'Data kosong' + ]); + } + + // ========================= + // SIMPAN HEADER TRANSAKSI + // ========================= + $db->table('tindakan_transaksi')->insert([ + 'register_id' => $input['register_id'], + 'tanggal' => $input['tanggal'], + 'nama_pasien' => $input['namaPasien'], + 'register' => $input['register'], + 'kuitansi' => $input['kuitansi'], + 'petugas' => $input['petugas'], + 'total' => $input['total'] + ]); + + $transaksi_id = $db->insertID(); + + // ========================= + // SIMPAN DETAIL TINDAKAN + // ========================= + foreach ($input['items'] as $item) { + + $db->table('tindakan_detail')->insert([ + 'transaksi_id' => $transaksi_id, + 'kode' => $item['kode'], + 'uraian' => $item['uraian'], + 'jumlah' => $item['jumlah'], + 'harga' => $item['harga'], + 'subtotal' => $item['jumlah'] * $item['harga'] + ]); + } + + return $this->response->setJSON([ + 'status' => 'success', + 'message' => 'Tindakan berhasil disimpan', + 'transaksi_id' => $transaksi_id + ]); + } + + // ========================= + // LIST TRANSAKSI (OPSIONAL) + // ========================= + public function pasienList() + { + $db = \Config\Database::connect(); + + $data = $db->table('register_ambulans r') + ->select('r.id, r.register, p.nama') + ->join('pasien p', 'p.rm = r.rm', 'left') + ->orderBy('r.id', 'DESC') + ->get() + ->getResultArray(); + + return $this->response->setJSON($data); + } + + // ========================= + // DETAIL TRANSAKSI (OPSIONAL) + // ========================= + public function detail($id) + { + $db = \Config\Database::connect(); + + $header = $db->table('tindakan_transaksi') + ->where('id', $id) + ->get() + ->getRowArray(); + + $detail = $db->table('tindakan_detail') + ->where('transaksi_id', $id) + ->get() + ->getResultArray(); + + return view('tindakan/detail', [ + 'header' => $header, + 'detail' => $detail + ]); + } + + public function input($id) + { + $db = \Config\Database::connect(); + + $pasien = $db->table('register_ambulans r') + ->select('r.id, r.register, p.nama') + ->join('pasien p', 'p.rm = r.rm', 'left') + ->where('r.id', $id) + ->get() + ->getRowArray(); + + if (!$pasien) { + return redirect()->to('/tindakan')->with('error', 'Pasien tidak ditemukan'); + } + + return view('tindakan/inputtindakan', [ + 'pasien' => $pasien + ]); + } +} \ No newline at end of file