<?php

declare(strict_types=1);

if (PHP_SAPI !== 'cli') {
    http_response_code(403);
    echo "This script can be run only from CLI.\n";
    exit(1);
}

require_once __DIR__ . '/../src/config.php';
require_once __DIR__ . '/../src/logger.php';
require_once __DIR__ . '/../src/storage.php';
require_once __DIR__ . '/../src/bitrix.php';

$listCodes = [
    (string) config('SYSTEM_PROMPTS_LIST_CODE'),
    (string) config('CORRECTION_PROMPTS_LIST_CODE'),
];

$result = [
    'scope' => bitrixCallRaw('scope'),
    'configured_codes' => $listCodes,
    'lists_get_variants' => [],
    'matched_lists' => [],
];

foreach ([
    ['IBLOCK_TYPE_ID' => 'lists'],
    ['IBLOCK_TYPE_ID' => 'bitrix_processes'],
] as $params) {
    $response = bitrixCallRaw('lists.get', $params);
    $result['lists_get_variants'][] = [
        'params' => $params,
        'response' => $response,
    ];

    foreach (($response['result'] ?? []) as $list) {
        $code = (string) ($list['CODE'] ?? '');
        if (!in_array($code, $listCodes, true)) {
            continue;
        }

        $iblockTypeId = (string) ($params['IBLOCK_TYPE_ID'] ?? 'lists');
        $iblockId = (int) ($list['ID'] ?? 0);
        $fieldsResponse = bitrixCallRaw('lists.field.get', [
            'IBLOCK_TYPE_ID' => $iblockTypeId,
            'IBLOCK_ID' => $iblockId,
        ]);
        $elementsResponse = bitrixCallRaw('lists.element.get', [
            'IBLOCK_TYPE_ID' => $iblockTypeId,
            'IBLOCK_ID' => $iblockId,
        ]);

        $result['matched_lists'][] = [
            'iblock_type_id' => $iblockTypeId,
            'list' => $list,
            'fields' => $fieldsResponse,
            'elements_first_5' => [
                'raw' => array_slice((array) ($elementsResponse['result'] ?? []), 0, 5),
                'error' => $elementsResponse['error'] ?? null,
                'error_description' => $elementsResponse['error_description'] ?? null,
            ],
        ];
    }
}

echo json_encode($result, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT) . PHP_EOL;
