<?php

namespace App\Controllers;

use App\Models\KeuanganModel;

class Keuangan extends BaseController
{
    protected $keuanganM;

    public function __construct()
    {
        $this->keuanganM = new KeuanganModel();
    }

    public function index()
    {
        $db = \Config\Database::connect();

        // Menggunakan LEFT JOIN agar transaksi manual tetap tampil
        $builder = $db->table('keuangan');
        $builder->select('keuangan.*, petani.nama_petani');
        $builder->join('transaksi_penebusan', 'transaksi_penebusan.id_transaksi = keuangan.id_referensi_transaksi', 'left');
        $builder->join('petani', 'petani.id_petani = transaksi_penebusan.id_petani', 'left');
        $builder->orderBy('keuangan.tanggal', 'ASC');
        $builder->orderBy('keuangan.id_kas', 'ASC');

        $kas = $builder->get()->getResultArray();

        $data = [
            'title' => 'Buku Kas Umum & Laporan Keuangan',
            'kas'   => $kas
        ];
        return view('keuangan/index', $data);
    }
    
    public function simpan_manual()
    {
        $keuanganM = new KeuanganModel();
        
        $jenis = $this->request->getPost('jenis'); // 'masuk' atau 'keluar'
        $nominal = (float)$this->request->getPost('nominal');
        
        // Ambil saldo terakhir dari baris kas paling bawah
        $saldoTerakhir = $keuanganM->orderBy('id_kas', 'DESC')->first()['saldo_akhir'] ?? 0;

        // Kalkulasi saldo akhir otomatis berdasarkan jenis kas
        $saldo_akhir = ($jenis == 'masuk') ? ($saldoTerakhir + $nominal) : ($saldoTerakhir - $nominal);

        // Simpan data ke database
        $keuanganM->insert([
            'tanggal'     => $this->request->getPost('tanggal'),
            'keterangan'  => $this->request->getPost('keterangan'),
            'jenis'       => $jenis,
            'kategori'    => $this->request->getPost('kategori'),
            'nominal'     => $nominal,
            'saldo_akhir' => $saldo_akhir
        ]);

        return redirect()->to('/keuangan')->with('success', 'Data kas manual <b>berhasil disimpan</b>.');
    }

    public function cetak()
    {
        $db = \Config\Database::connect();

        $builder = $db->table('keuangan');
        $builder->select('keuangan.*, petani.nama_petani');
        $builder->join('transaksi_penebusan', 'transaksi_penebusan.id_transaksi = keuangan.id_referensi_transaksi', 'left');
        $builder->join('petani', 'petani.id_petani = transaksi_penebusan.id_petani', 'left');
        $builder->orderBy('keuangan.tanggal', 'ASC');
        $builder->orderBy('keuangan.id_kas', 'ASC');

        $kas = $builder->get()->getResultArray();

        $data = [
            'title' => 'Cetak Laporan Buku Kas',
            'kas'   => $kas
        ];

        return view('keuangan/cetak', $data);
    }
}
