<?php

namespace App\Controllers;

use App\Models\PetaniModel;

class Petani extends BaseController
{
    protected $petaniM;
    public function __construct()
    {
        $this->petaniM = new PetaniModel();
    }

    public function index()
    {
        $data = ['title' => 'Data Petani', 'petani' => $this->petaniM->findAll()];
        return view('petani/index', $data);
    }

    public function simpan()
    {
        $this->petaniM->save($this->request->getPost());
        return redirect()->to('/petani')->with('success', 'Data petani <b>berhasil ditambahkan</b> ke sistem.');
    }

    public function update($id)
    {
        $this->petaniM->update($id, $this->request->getPost());
        return redirect()->to('/petani')->with('success', 'Perubahan data petani <b>berhasil disimpan</b>.');
    }

    public function hapus($id)
{
    // Cek dahulu apakah data memang ada
    $data = $this->petaniM->find($id); // sesuaikan dengan model aktif (misal: $this->pupukM)
    if (!$data) {
        return redirect()->back()->with('error', 'Data tidak ditemukan atau sudah dihapus.');
    }

    // Blokir Admin agar tidak menghapus akun sendiri (Khusus Controller User)
    if (isset($data['id_user']) && $id == session()->get('id_user')) {
        return redirect()->back()->with('error', 'Gagal! Anda tidak dapat menghapus akun Anda sendiri.');
    }

    // KUNCI UTAMA: Menggunakan try-catch untuk menjinakkan error database
    try {
        $this->petaniM->delete($id); // sesuaikan dengan model aktif Anda
        
        return redirect()->back()->with('success', 'Data berhasil <b>dihapus permanen</b> dari sistem.');

    } catch (\CodeIgniter\Database\Exceptions\DatabaseException $e) {
        
        // Periksa apakah pesan error mengandung kode constraint 1451
        if ($e->getCode() === 1451 || strpos($e->getMessage(), '1451') !== false) {
            // Kembalikan pesan ramah bahasa Indonesia ke View
            return redirect()->back()->with('error', '⚠️ <b>Gagal Menghapus!</b> Data ini tidak boleh dihapus karena sudah terikat dengan riwayat dokumen transaksi e-RDKK / Penebusan pupuk.');
        }

        // Jika terjadi error database jenis lainnya
        return redirect()->back()->with('error', 'Terjadi kesalahan database: ' . $e->getMessage());
    }
}
}
