<?php

declare(strict_types=1);

if (PHP_SAPI !== 'cli') {
    http_response_code(403);
    exit(1);
}

require_once __DIR__ . '/../src/config.php';
require_once __DIR__ . '/../src/storage.php';
require_once __DIR__ . '/../src/history.php';
require_once __DIR__ . '/../src/crm.php';

$phoneField = (string) config('DEAL_PHONE_FIELD', 'UF_CRM_1783332070432');
$cityField = (string) config('DEAL_CITY_FIELD', 'UF_CRM_1693995123245');
$interestField = (string) config('DEAL_INTEREST_GROUP_FIELD', 'UF_CRM_1784809347681');

$cases = [
    'qualifies_with_pending_fields' => [
        'deal' => ['CATEGORY_ID' => '0', 'STAGE_ID' => 'NEW'],
        'fields' => [$phoneField => '+7 (950) 627-39-43', $cityField => '123'],
        'interest' => 'техника',
        'expected' => true,
    ],
    'qualifies_with_existing_deal_fields' => [
        'deal' => [
            'CATEGORY_ID' => '0',
            'STAGE_ID' => 'NEW',
            $phoneField => '+7 (950) 627-39-43',
            $cityField => '123',
            $interestField => 'техника',
        ],
        'fields' => [],
        'interest' => '',
        'expected' => true,
    ],
    'missing_city' => [
        'deal' => ['CATEGORY_ID' => '0', 'STAGE_ID' => 'NEW'],
        'fields' => [$phoneField => '+7 (950) 627-39-43'],
        'interest' => 'техника',
        'expected' => false,
    ],
    'qualifies_with_empty_interest' => [
        'deal' => ['CATEGORY_ID' => '0', 'STAGE_ID' => 'NEW'],
        'fields' => [$phoneField => '+7 (950) 627-39-43', $cityField => '123'],
        'interest' => '',
        'expected' => true,
    ],
    'wrong_category' => [
        'deal' => ['CATEGORY_ID' => '26', 'STAGE_ID' => 'C26:NEW'],
        'fields' => [$phoneField => '+7 (950) 627-39-43', $cityField => '123'],
        'interest' => 'техника',
        'expected' => false,
    ],
    'wrong_interest' => [
        'deal' => ['CATEGORY_ID' => '0', 'STAGE_ID' => 'NEW'],
        'fields' => [$phoneField => '+7 (950) 627-39-43', $cityField => '123'],
        'interest' => 'запчасти',
        'expected' => false,
    ],
    'already_qualified' => [
        'deal' => ['CATEGORY_ID' => '0', 'STAGE_ID' => '37'],
        'fields' => [$phoneField => '+7 (950) 627-39-43', $cityField => '123'],
        'interest' => 'техника',
        'expected' => false,
    ],
];

$results = [];
$failed = false;
foreach ($cases as $name => $case) {
    $decision = qualifyRetailDealForTechnique($case['deal'], $case['fields'], $case['interest']);
    $actual = ($decision['should_update'] ?? false) === true;
    $passed = $actual === $case['expected'];
    $failed = $failed || !$passed;
    $results[$name] = [
        'passed' => $passed,
        'expected' => $case['expected'],
        'actual' => $actual,
        'decision' => $decision,
    ];
}

echo json_encode([
    'ok' => !$failed,
    'results' => $results,
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT) . PHP_EOL;

exit($failed ? 1 : 0);
