<?php

namespace App\Models;

use CodeIgniter\Model;

class ModelLaporan extends Model
{

    protected $table = 'tagihan'; // Menggunakan tabel tagihan sebagai default
    protected $primaryKey = 'tagihan_id';
    protected $allowedFields = []; // Disesuaikan jika ada input data

    // Mengambil semua data laporan dengan join
    public function getAllData()
    {
        return $this->db->table($this->table)
            ->select('
                tagihan.tagihan_id,
                pelanggan.pelanggan_id, 
                pelanggan.nama_pelanggan, 
                pelanggan.alamat, 
                pelanggan.telepon, 
                pelanggan.email, 
                paket_internet.nama_paket, 
                paket_internet.kecepatan, 
                paket_internet.harga, 
                pelanggan.status AS status_pelanggan, 
                tagihan.jatuh_tempo, 
                tagihan.total, 
                tagihan.status_tagihan, 
                tagihan.created_at AS tanggal_tagihan,
                tagihan.tanggal_mulai,
                tagihan.tanggal_akhir
            ')
            ->join('pelanggan', 'tagihan.pelanggan_id = pelanggan.pelanggan_id', 'left')
            ->join('paket_internet', 'pelanggan.paket_id = paket_internet.paket_id', 'left')
            ->orderBy('tagihan.jatuh_tempo', 'DESC')
            ->get()
            ->getResultArray();
    }

    // Filter laporan berdasarkan tanggal
    public function filterLaporan($tanggalAwal, $tanggalAkhir)
    {
        return $this->db->table($this->table)
            ->select('
                tagihan.tagihan_id,
                pelanggan.pelanggan_id, 
                pelanggan.nama_pelanggan, 
                pelanggan.alamat, 
                pelanggan.telepon, 
                pelanggan.email, 
                paket_internet.nama_paket, 
                paket_internet.kecepatan, 
                paket_internet.harga, 
                pelanggan.status AS status_pelanggan, 
                tagihan.jatuh_tempo, 
                tagihan.total, 
                tagihan.status_tagihan, 
                tagihan.created_at AS tanggal_tagihan,
                tagihan.tanggal_mulai,
                tagihan.tanggal_akhir
            ')
            ->join('pelanggan', 'tagihan.pelanggan_id = pelanggan.pelanggan_id', 'left')
            ->join('paket_internet', 'pelanggan.paket_id = paket_internet.paket_id', 'left')
            ->where('tagihan.created_at >=', $tanggalAwal)
            ->where('tagihan.created_at <=', $tanggalAkhir)
            ->orderBy('tagihan.created_at', 'DESC')
            ->get()
            ->getResultArray();
    }
}
