<?php

declare(strict_types=1);

header('Content-Type: application/json; charset=utf-8');

$config = require dirname(__DIR__) . '/config/database.php';

try {

    $dsn = sprintf(
        'mysql:host=%s;port=%d;dbname=%s;charset=%s',
        $config['host'],
        $config['port'],
        $config['database'],
        $config['charset']
    );

    $pdo = new PDO(
        $dsn,
        $config['username'],
        $config['password'],
        [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES => false,
        ]
    );

    $organizaciones = (int) $pdo
        ->query('SELECT COUNT(*) FROM organizaciones')
        ->fetchColumn();

    $agents = (int) $pdo
        ->query('SELECT COUNT(*) FROM agents')
        ->fetchColumn();

    $certificados = (int) $pdo
        ->query('SELECT COUNT(*) FROM certificados')
        ->fetchColumn();

    http_response_code(200);

    echo json_encode(
        [
            'status' => 'ok',
            'service' => 'MSR Nexo API',
            'database' => 'ok',
            'data' => [
                'organizaciones' => $organizaciones,
                'agents' => $agents,
                'certificados' => $certificados,
            ],
            'timestamp' => gmdate('c'),
        ],
        JSON_PRETTY_PRINT |
        JSON_UNESCAPED_SLASHES |
        JSON_UNESCAPED_UNICODE
    );

} catch (Throwable $e) {

    http_response_code(500);

    echo json_encode(
        [
            'status' => 'error',
            'service' => 'MSR Nexo API',
            'database' => 'error'
        ],
        JSON_PRETTY_PRINT
    );
}
