{{--
    Seleção de escopos organizacionais autorizados para um projeto de Cronogramas.

    Variáveis esperadas:
      $scopeOptions     → array{structures, unidades, empresas}
      $selectedScopes  → array{structures: string[], unidades: string[], empresas: string[]}
--}}
@php
    $selectedScopes = $selectedScopes ?? ['structures' => [], 'unidades' => [], 'empresas' => []];
    $selectedStructures = $selectedScopes['structures'] ?? [];
    $selectedUnidades = $selectedScopes['unidades'] ?? [];
    $selectedEmpresas = $selectedScopes['empresas'] ?? [];

    $structuresDataset = ($scopeOptions['structures'] ?? collect())->map(function ($structure) {
        $label = trim(($structure->abbreviation ? $structure->abbreviation . ' - ' : '') . $structure->name);

        return [
            'id'    => $structure->id,
            'label' => $label,
            'search' => mb_strtolower(trim(($structure->abbreviation ?? '') . ' ' . ($structure->name ?? ''))),
        ];
    })->values()->all();

    $unidadesDataset = ($scopeOptions['unidades'] ?? collect())->map(function ($unidade) {
        $secretariaAbbrev = optional($unidade->secretaria)->abbreviation ?? '';
        $secretariaName   = optional($unidade->secretaria)->name ?? '';
        $subtitle         = trim($secretariaAbbrev ?: $secretariaName);
        $label            = $unidade->abbreviation . ' - ' . $unidade->name;

        return [
            'id'       => $unidade->id,
            'label'    => $label,
            'subtitle' => $subtitle !== '' ? $subtitle : null,
            'search'   => mb_strtolower(trim(
                ($unidade->abbreviation ?? '') . ' ' .
                ($unidade->name ?? '') . ' ' .
                $secretariaAbbrev . ' ' .
                $secretariaName
            )),
        ];
    })->values()->all();

    $empresasDataset = ($scopeOptions['empresas'] ?? collect())->map(function ($empresa) {
        $label = trim((string) ($empresa->nomeFantasia ?: $empresa->razaoSocial ?: $empresa->cnpj));
        $cnpj  = trim((string) ($empresa->cnpj ?? ''));

        return [
            'id'       => $empresa->id,
            'label'    => $label,
            'subtitle' => $cnpj !== '' && $cnpj !== $label ? $cnpj : null,
            'search'   => mb_strtolower(trim(
                ($empresa->nomeFantasia ?? '') . ' ' .
                ($empresa->razaoSocial ?? '') . ' ' .
                preg_replace('/\D/', '', $cnpj)
            )),
        ];
    })->values()->all();
@endphp

<div class="col-12">
    <fieldset class="border rounded p-3">
        <legend class="float-none w-auto px-2 fs-6 fw-semibold mb-0">
            {{ __('Escopos organizacionais autorizados') }}
            <span class="text-danger">*</span>
        </legend>
        <p class="small text-muted mb-3">
            {{ __('Selecione um ou mais escopos. Usuários só visualizam e interagem com o projeto se pertencerem a pelo menos um dos escopos selecionados (órgão, unidade ou empresa). Projetos sem escopo ficam visíveis apenas para administradores globais.') }}
        </p>

        <script type="application/json" id="project-scopes-i18n">{!! json_encode([
            'emptyResult' => __('Nenhum item encontrado para ":query".'),
        ]) !!}</script>

        <div class="row g-3">
            <div class="col-lg-4">
                @include('components.inputs._multiScopeSelector', [
                    'selectorId'   => 'scope_structures',
                    'inputName'    => 'scope_structures[]',
                    'label'        => __('Órgãos'),
                    'helpText'     => __('Secretarias, fundações e demais órgãos.'),
                    'placeholder'  => __('Pesquisar órgão por sigla ou nome... (mínimo 2 letras)'),
                    'dataset'      => $structuresDataset,
                    'selectedIds'  => $selectedStructures,
                    'errorKey'     => 'scope_structures',
                ])
            </div>

            <div class="col-lg-4">
                @include('components.inputs._multiScopeSelector', [
                    'selectorId'   => 'scope_unidades',
                    'inputName'    => 'scope_unidades[]',
                    'label'        => __('Unidades Organizacionais'),
                    'helpText'     => __('Superintendências, setores e unidades internas.'),
                    'placeholder'  => __('Pesquisar unidade por sigla ou nome... (mínimo 2 letras)'),
                    'dataset'      => $unidadesDataset,
                    'selectedIds'  => $selectedUnidades,
                    'errorKey'     => 'scope_unidades',
                ])
            </div>

            <div class="col-lg-4">
                @include('components.inputs._multiScopeSelector', [
                    'selectorId'   => 'scope_empresas',
                    'inputName'    => 'scope_empresas[]',
                    'label'        => __('Empresas'),
                    'helpText'     => __('Fornecedores e empresas externas vinculadas aos usuários.'),
                    'placeholder'  => __('Pesquisar empresa por nome ou CNPJ... (mínimo 2 letras)'),
                    'dataset'      => $empresasDataset,
                    'selectedIds'  => $selectedEmpresas,
                    'errorKey'     => 'scope_empresas',
                ])
            </div>
        </div>
    </fieldset>
</div>
