<?php

namespace App\Http\Controllers;

use App\Http\Requests\CategoriaRequest;
use App\Models\Categoria;
use Illuminate\Http\RedirectResponse;
use Illuminate\View\View;

class CategoriaController extends Controller
{
    public function index(): View
    {
        $categorias = Categoria::orderBy('nombre')->paginate(15);

        return view('catalogos.categorias.index', compact('categorias'));
    }

    public function create(): View
    {
        return view('catalogos.categorias.create');
    }

    public function store(CategoriaRequest $request): RedirectResponse
    {
        Categoria::create($request->validated());

        return redirect()->route('categorias.index')->with('status', 'Categoría registrada correctamente.');
    }

    public function edit(Categoria $categoria): View
    {
        return view('catalogos.categorias.edit', compact('categoria'));
    }

    public function update(CategoriaRequest $request, Categoria $categoria): RedirectResponse
    {
        $categoria->update($request->validated());

        return redirect()->route('categorias.index')->with('status', 'Categoría actualizada correctamente.');
    }

    public function toggle(Categoria $categoria): RedirectResponse
    {
        $categoria->update(['active' => ! $categoria->active]);

        return redirect()->route('categorias.index')->with('status', 'Estado de la categoría actualizado.');
    }
}
