<?php

namespace Modules\IA\Controllers;

use Gestoreasy\Core\Http\Request;
use Gestoreasy\Core\Http\Response;
use Modules\IA\Services\RecomendacoesService;

class RecomendacoesController {
    public function getRecomendacoesProduto(Request $req): Response {
        try {
            $tenantId = \Gestoreasy\Core\Tenant\TenantContext::getTenantId();
            $productId = (int)($req->get('params')[0] ?? 0);
            $limite = (int)($req->query['limite'] ?? 5);

            if (!$productId) {
                return new Response(422, ['error' => ['code' => 'validation_error', 'message' => 'product_id é obrigatório']]);
            }

            $service = new RecomendacoesService($tenantId);
            $recomendacoes = $service->getRecomendacoesProduto($productId, $limite);

            return Response::json(['data' => $recomendacoes]);
        } catch (\Exception $e) {
            return new Response(500, ['error' => ['code' => 'error', 'message' => $e->getMessage()]]);
        }
    }

    public function getRecomendacoesCliente(Request $req): Response {
        try {
            $tenantId = \Gestoreasy\Core\Tenant\TenantContext::getTenantId();
            $clienteId = (int)($req->get('params')[0] ?? 0);
            $limite = (int)($req->query['limite'] ?? 5);

            if (!$clienteId) {
                return new Response(422, ['error' => ['code' => 'validation_error', 'message' => 'cliente_id é obrigatório']]);
            }

            $service = new RecomendacoesService($tenantId);
            $recomendacoes = $service->getRecomendacoesCliente($clienteId, $limite);

            return Response::json(['data' => $recomendacoes]);
        } catch (\Exception $e) {
            return new Response(500, ['error' => ['code' => 'error', 'message' => $e->getMessage()]]);
        }
    }
}

