<?php

namespace App\Controllers\Api;

use App\Models\PemeliharaanModel;
use App\Models\BarangUnitModel;

class PemeliharaanController extends BaseApiController
{
    protected $pemeliharaan;
    protected $unit;

    public function __construct()
    {
        $this->pemeliharaan = new PemeliharaanModel();
        $this->unit = new BarangUnitModel();
    }

    // ======================
    // GET /api/pemeliharaan
    // ======================
    public function index()
    {
        $data = $this->pemeliharaan
            ->select('
                pemeliharaan.*,
                barang_unit.kode_unit,
                barang.nama_barang
            ')
            ->join('barang_unit', 'barang_unit.id_unit = pemeliharaan.id_unit', 'left')
            ->join('barang', 'barang.id_barang = barang_unit.id_barang', 'left')
            ->orderBy('pemeliharaan.tanggal', 'DESC')
            ->findAll();

        return $this->respondSuccess($data, 'Data pemeliharaan unit');
    }

    // ======================
    // POST /api/pemeliharaan
    // ======================
    public function store()
{
    $data = $this->request->getJSON(true);

    log_message('error', 'PAYLOAD: ' . json_encode($data));

    if (
        empty($data['id_unit']) ||
        empty($data['tanggal']) ||
        empty($data['jenis_perbaikan'])
    ) {
        return $this->respondError('Data pemeliharaan tidak lengkap', 422);
    }

    $unit = $this->unit->find((int)$data['id_unit']);
    if (!$unit) {
        return $this->respondError('Unit tidak ditemukan', 404);
    }

    if ($unit['status'] === 'Dimusnahkan') {
        return $this->respondError('Unit sudah dimusnahkan', 400);
    }

    $insertData = [
        'id_unit' => (int)$data['id_unit'],
        'tanggal' => $data['tanggal'],
        'jenis_perbaikan' => $data['jenis_perbaikan'],
        'biaya' => (int)($data['biaya'] ?? 0),
        'keterangan' => $data['keterangan'] ?? null,
    ];

    log_message('error', 'INSERT: ' . json_encode($insertData));

    if (!$this->pemeliharaan->insert($insertData)) {
        log_message('error', 'DB ERROR: ' . json_encode($this->pemeliharaan->errors()));
        return $this->respondError('Insert gagal', 500);
    }

/** @var object $this->request->user */
    logAktivitas(
        $this->request->user->id_user,
        "Pemeliharaan unit {$unit['kode_unit']} ({$data['jenis_perbaikan']})"
    );

    return $this->respondSuccess(null, 'Pemeliharaan unit berhasil dicatat');
}

}