<?php

declare(strict_types=1);

namespace App\Controllers;

use App\Core\Controller;
use App\Core\Request;
use App\Core\Session;
use App\Core\Tenant;
use App\Models\Category;
use App\Services\AuditService;

class CategoryController extends Controller
{
    public function index(Request $request): void
    {
        $companyId = (int) Tenant::companyId();

        $this->render('categorias/index', [
            'title' => 'Categorías',
            'categories' => (new Category())->all([], $companyId),
        ]);
    }

    public function store(Request $request): never
    {
        $companyId = (int) Tenant::companyId();
        $name = trim((string) $request->input('nombre', ''));

        Session::setOldInput($request->all());

        if ($name === '') {
            flash('error', 'El nombre de categoría es obligatorio.');
            redirect('categorias');
        }

        $id = (new Category())->create([
            'empresa_id' => $companyId,
            'nombre' => $name,
            'descripcion' => $request->input('descripcion'),
            'activo' => 1,
            'created_at' => date('Y-m-d H:i:s'),
        ]);

        Session::clearOldInput();
        AuditService::track('categorias.crear', 'Categoría creada ID: ' . $id);
        flash('success', 'Categoría creada correctamente.');
        redirect('categorias');
    }
}
