<?php

namespace App\Http\Controllers;

use App\Models\Penyakit;
use Illuminate\Http\Request;

class PenyakitController extends Controller
{
    public function index(Request $request)
{
    // jumlah data
    $perPage = $request->perPage ?? 5;

    $query = Penyakit::query();

    // SEARCH
    if ($request->search) {

        $query->where('kode', 'like', '%' . $request->search . '%')
              ->orWhere('nama', 'like', '%' . $request->search . '%');
    }

    // PAGINATION + URUT KODE
    $penyakits = $query->orderBy('kode', 'asc')
        ->paginate($perPage)
        ->withQueryString();

    return view('admin.penyakit.index', compact('penyakits', 'perPage'));
}

public function create()
{
    // ambil kode terakhir
    $lastPenyakit = Penyakit::orderBy('kode', 'desc')->first();

    // default awal
    $kode = 'P01';

    // jika ada data
    if ($lastPenyakit) {

        // ambil angka dari kode
        $lastNumber = (int) substr($lastPenyakit->kode, 1);

        // tambah 1
        $newNumber = $lastNumber + 1;

        // format P01
        $kode = 'P' . str_pad($newNumber, 2, '0', STR_PAD_LEFT);
    }

    return view('admin.penyakit.create', compact('kode'));
}

    public function store(Request $request)
    {
        $request->validate([
            'kode' => 'required|unique:penyakits',
            'nama' => 'required'
        ]);

        Penyakit::create($request->all());

        return redirect()->route('penyakit.index')
            ->with('success', 'Data berhasil ditambahkan');
    }

    public function edit($id)
    {
        $penyakit = Penyakit::findOrFail($id);
        return view('admin.penyakit.edit', compact('penyakit'));
    }

    public function update(Request $request, Penyakit $penyakit)
    {
        $request->validate([
            'nama' => 'required'
        ]);

        $penyakit->update([
            'nama' => $request->nama
        ]);

        return redirect()->route('penyakit.index')
            ->with('success', 'Data penyakit berhasil diupdate');
    }

    public function destroy($id)
    {
        Penyakit::destroy($id);

        return redirect()->route('penyakit.index')
            ->with('success', 'Data berhasil dihapus');
    }
}