<?php
declare(strict_types=1);

function qualificationFieldDefinitions(): array
{
    return [
        'phone' => ['required_key' => 'QUALIFICATION_REQUIRE_PHONE', 'default' => true, 'label' => 'Телефон', 'field_key' => 'DEAL_PHONE_FIELD', 'field_default' => 'UF_CRM_1783332070432'],
        'city' => ['required_key' => 'QUALIFICATION_REQUIRE_CITY', 'default' => true, 'label' => 'Город', 'field_key' => 'DEAL_CITY_FIELD', 'field_default' => 'UF_CRM_1693995123245'],
        'full_name' => ['required_key' => 'QUALIFICATION_REQUIRE_FULL_NAME', 'default' => false, 'label' => 'ФИО', 'field_key' => 'DEAL_FULL_NAME_FIELD', 'field_default' => 'UF_CRM_1784807336296'],
        'branch' => ['required_key' => 'QUALIFICATION_REQUIRE_BRANCH', 'default' => false, 'label' => 'Филиал', 'field_key' => 'DEAL_BRANCH_FIELD', 'field_default' => 'UF_CRM_1764919997'],
        'interest' => ['required_key' => 'QUALIFICATION_REQUIRE_INTEREST', 'default' => false, 'label' => 'Интерес', 'field_key' => 'DEAL_INTEREST_GROUP_FIELD', 'field_default' => 'UF_CRM_1784809347681'],
    ];
}

function normalizeQualificationCustomFields($value): array
{
    $result = [];
    foreach (is_array($value) ? $value : [$value] as $item) {
        if (!is_string($item)) throw new InvalidArgumentException('Укажите коды дополнительных полей в формате UF_CRM_...');
        foreach (preg_split('/[\s,;\/]+/', trim($item)) ?: [] as $code) {
            if ($code === '') continue;
            $code = strtoupper($code);
            if (!preg_match('/^UF_CRM_[A-Z0-9_]+$/D', $code)) {
                throw new InvalidArgumentException('Некорректный код дополнительного поля: ' . $code . '. Ожидается UF_CRM_...');
            }
            $result[$code] = $code;
        }
    }
    return array_values($result);
}
