<?php

namespace App\Controllers;
use App\Controllers\BaseController;
use App\Models\HomeSettingModel;

class KritikSaran extends BaseController
{
    public function kirim()
    {
        // 1. Ambil data dari form
        $nama  = trim($this->request->getPost('nama') ?? '');
        $nowa  = trim($this->request->getPost('nowa') ?? '');
        $pesan = trim($this->request->getPost('pesan') ?? '');

        // 2. Validasi: Jangan simpan jika data utama kosong
        if (empty($nama) || empty($pesan)) {
            session()->setFlashdata('error_pesan', 'Nama dan Pesan wajib diisi.');
            return redirect()->to(base_url());
        }

        // 3. Handle Upload Single Photo
        $uploadedFiles = [];
        $img = $this->request->getFile('foto'); // Gunakan getFile, bukan getFiles
        
        if ($img && $img->isValid() && !$img->hasMoved()) {
            $uploadPath = FCPATH . 'uploads/kritik';
            if (!is_dir($uploadPath)) mkdir($uploadPath, 0777, true);
            
            $newName = $img->getRandomName();
            $img->move($uploadPath, $newName);
            
            // Kita tetap masukkan ke dalam array agar view admin yang sudah ada tetap berfungsi sempurna
            $uploadedFiles[] = $newName; 
        }

        // 4. Proses Simpan Data
        $settingModel = new HomeSettingModel();
        $raw = $settingModel->where('key_name', 'kritik_saran_list')->first();
        
        $list = $raw ? json_decode($raw['value_text'], true) : [];
        if (!is_array($list)) $list = [];

        $newItem = [
            'id'      => uniqid('ks_'),
            'tanggal' => date('Y-m-d H:i:s'),
            'nama'    => $nama,
            'nowa'    => $nowa,
            'pesan'   => $pesan,
            'foto'    => $uploadedFiles 
        ];

        // Taruh data terbaru di urutan paling atas
        array_unshift($list, $newItem);

        // 5. Simpan ke database
        $finalData = json_encode($list);
        if ($raw) {
            $settingModel->where('key_name', 'kritik_saran_list')->set(['value_text' => $finalData])->update();
        } else {
            $settingModel->insert(['key_name' => 'kritik_saran_list', 'value_text' => $finalData]);
        }

        // 6. Selesai, kembali ke Home
        session()->setFlashdata('success_pesan', 'Terima kasih! Kritik & saranmu berhasil dikirim.');
        return redirect()->to(base_url()); 
    }
}