<?php

namespace App\Http\Controllers;

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

class GejalaController extends Controller
{
    // TAMPIL DATA
public function index(Request $request)
{
    // jumlah data per halaman
    $perPage = $request->perPage ?? 5;

    // search
    $query = Gejala::query();

    if ($request->search) {

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

    // pagination
    $gejalas = $query->orderBy('kode', 'asc')
        ->paginate($perPage)
        ->withQueryString();

    return view('admin.gejala.index', compact('gejalas', 'perPage'));
}

    // FORM TAMBAH
public function create()
{
    // ambil kode terakhir
    $lastGejala = Gejala::orderBy('kode', 'desc')->first();

    // default awal
    $kode = 'G01';

    // jika ada data
    if ($lastGejala) {

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

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

        // format jadi G01
        $kode = 'G' . str_pad($newNumber, 2, '0', STR_PAD_LEFT);
    }

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

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

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

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

    // FORM EDIT
    public function edit($id)
    {
        $gejala = Gejala::findOrFail($id);
        return view('admin.gejala.edit', compact('gejala'));
    }

    // UPDATE
    public function update(Request $request, $id)
    {
        $gejala = Gejala::findOrFail($id);

        $request->validate([
            'kode' => 'required|unique:gejalas,kode,' . $id,
            'nama' => 'required'
        ]);

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

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

    // HAPUS
    public function destroy($id)
    {
        Gejala::destroy($id);

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