<?php

namespace App\Controllers\Api;

use App\Models\PenghapusanModel;
use App\Models\BarangUnitModel;

class PenghapusanController extends BaseApiController
{
    protected $penghapusan;
    protected $unit;

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

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

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

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

        if (
            empty($data['id_unit']) ||
            empty($data['tanggal']) ||
            empty($data['alasan'])
        ) {
            return $this->respondError('Data pemusnahan 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 {$unit['kode_unit']} sudah dimusnahkan",
                400
            );
        }

        // simpan ke penghapusan
        $this->penghapusan->insert([
            'id_unit' => $unit['id_unit'],
            'tanggal' => $data['tanggal'],
            'alasan' => $data['alasan'],
            'disetujui_oleh' => $data['disetujui_oleh'] ?? null,
        ]);

        // update status unit
        $this->unit->update($unit['id_unit'], [
            'status' => 'Dimusnahkan'
        ]);
/** @var object $this->request->user */
        // log aktivitas
        logAktivitas(
            $this->request->user->id_user,
            "Pemusnahan unit {$unit['kode_unit']} karena {$data['alasan']}"
        );

        return $this->respondSuccess(null, 'Unit berhasil dimusnahkan');
    }
}