<?php

namespace App\Models;

use CodeIgniter\Model;

class ModelPasien extends Model

{
    protected $table = 'pasien'; // Nama tabel di database
    protected $primaryKey = 'id_pasien'; // Primary key tabel
    protected $allowedFields = [
        'no_rm',
        'nik',
        'no_bpjs',
        'nama_lengkap',
        'tempat_lahir',
        'tanggal_lahir',
        'jenis_kelamin',
        'agama',
        'status_perkawinan',
        'pekerjaan',
        'alamat',
        'provinsi',
        'kab_kota',
        'no_hp',
        'email',
        'created_at',
        'updated_at'
    ];

    protected $useTimestamps = true; // Jika kamu ingin created_at dan updated_at otomatis

    /**
     * Fungsi untuk mendapatkan semua data produk
     *
     * @return array
     */
    public function getAllData()
    {
        return $this->orderBy('id_pasien', 'DESC')->findAll();
    }

    public function getDatatables($search = '', $limit = 10, $offset = 0)
    {
        $builder = $this->table($this->table);

        if (!empty($search)) {
            $builder->groupStart()
                ->like('icdx', $search)
                ->orLike('nama_pasien', $search)
                ->orLike('jenis_kelamin', $search)
                ->orLike('alamat', $search)
                ->groupEnd();
        }

        $builder->orderBy('created_at', 'DESC');

        // Hanya tambahkan limit jika nilai limit tidak -1
        if ($limit != -1) {
            $builder->limit($limit, $offset);
        }

        return $builder->get()->getResult();
    }

    public function countFiltered($search = '')
    {
        $builder = $this->table($this->table);

        if (!empty($search)) {
            $builder->groupStart()
                ->like('icdx', $search)
                ->orLike('nama_pasien', $search)
                ->orLike('jenis_kelamin', $search)
                ->orLike('alamat', $search)
                ->groupEnd();
        }

        return $builder->countAllResults();
    }

    public function countAllPasien()
    {
        return $this->countAll();
    }



    /**
     * Fungsi untuk menambahkan data baru
     *
     * @param array $data
     * @return bool
     */
    public function tambahData($data)
    {
        return $this->insert($data);
    }

    /**
     * Fungsi untuk memperbarui data
     *
     * @param int $id_pasien
     * @param array $data
     * @return bool
     */
    public function updateData($id_pasien, $data)
    {
        return $this->update($id_pasien, $data);
    }

    /**
     * Fungsi untuk menghapus data
     *
     * @param int $id_pasien
     * @return bool
     */
    public function deleteData($id_pasien)
    {
        return $this->delete($id_pasien);
    }
}
