@extends('layouts.admin.theme') @section('title', env('APP_NAME') . ' :: ' . __("Dashboard Estratégico")) @section('content') @php $userPermissions = auth()->user()->listaPermissoes(); // Helper para mapear seções por eixo $axisMapping = [ // Nova aba dedicada à Zeladoria / PCA Digital 'zeladoria' => ['Serviços e Chamados'], // Eixo Atendimento (sem Serviços e Chamados, Comércio e Mobilidade e Transporte) 'atendimento' => ['Pesquisa de Satisfação'], 'turismo' => ['Visite Angra', 'Empresas de Turismo', 'Guias Turísticos'], 'saude' => ['Unidades de Saúde', 'Programa Fibromialgia'], 'social' => ['Educação', 'Oportunidades'], 'institucional' => ['Organograma', 'Comunicação', 'SEI! - Pontos Focais'] ]; // Função auxiliar para filtrar seções $filterSections = function ($sections, $titles) { return collect($sections)->filter(function ($section) use ($titles) { return in_array($section['title'], $titles); }); }; $sectionsZeladoria = $filterSections($sections, $axisMapping['zeladoria']); $sectionsAtendimento = $filterSections($sections, $axisMapping['atendimento']); $sectionsTurismo = $filterSections($sections, $axisMapping['turismo']); $sectionsSaude = $filterSections($sections, $axisMapping['saude']); $sectionsSocial = $filterSections($sections, $axisMapping['social']); $sectionsInstitucional = $filterSections($sections, $axisMapping['institucional']); // Coming Soon Mappings $comingSoonAtendimento = $filterSections($comingSoonSections ?? [], $axisMapping['atendimento']); $comingSoonTurismo = $filterSections($comingSoonSections ?? [], $axisMapping['turismo']); $comingSoonSaude = $filterSections($comingSoonSections ?? [], $axisMapping['saude']); $comingSoonSocial = $filterSections($comingSoonSections ?? [], $axisMapping['social']); @endphp

{{ __("Dashboard Estratégico") }}

{{ __("Prefeitura Municipal de Angra dos Reis") }} • {{ __("Atualizado em") }} {{ $generatedAt->format('d/m/Y H:i') }}

{{-- Tabs Navigation --}}
{{-- Tab: PPPs e Convênios --}}
@if(isset($pppSummary))

{{ __($pppSummary['title']) }}

{{ __($pppSummary['subtitle']) }}
@foreach ($pppSummary['metrics'] as $metric)

{{ __($metric['label']) }}

{{ is_numeric($metric['value']) ? number_format($metric['value'], 0, ',', '.') : $metric['value'] }}

@endforeach

Parcerias Público-Privadas

Acompanhe os projetos de concessão e parcerias estratégicas para o desenvolvimento da infraestrutura municipal.

Convênios e Repasses

Visualize os convênios federais, estaduais e repasses, garantindo a transparência na aplicação dos recursos.

{{ __("Distribuição da Carteira") }}
{{ __("Visão consolidada dos ativos de parcerias e convênios gerenciados pela prefeitura.") }}
@endif {{-- PPP List Container --}}

Parcerias Público-Privadas

@forelse(collect($pppSummary['highlights'] ?? [])->where('type', 'ppp') as $index => $item)
@php $porcentagem_conclusao = (int) ($item['details']['Conclusão (%)'] ?? 0); if ($porcentagem_conclusao < 40) { $progressColor = 'bg-danger'; } elseif ($porcentagem_conclusao < 70) { $progressColor = 'bg-warning'; } else { $progressColor = 'bg-success'; } $status = $item['details']['Andamento'] ?? 'Em Análise'; if (str_contains(strtolower($status), 'andamento')) { $statusColor = 'bg-primary'; } elseif (str_contains(strtolower($status), 'conclu')) { $statusColor = 'bg-success'; } elseif (str_contains(strtolower($status), 'paralis')) { $statusColor = 'bg-danger'; } else { $statusColor = 'bg-secondary'; } @endphp
{{ $status }} {{ $item['details']['Prazo de Concessão'] ?? 'Prazo n/d' }}
{{ \Illuminate\Support\Str::limit($item['title'], 60) }}

Empresa
{{ $item['details']['Empresa'] ?? 'A definir' }}
Valor Estimado do Contrato
{{ $item['details']['Valor Estimado do Contrato'] ?? '-' }}
Observações
{{ $item['details']['Observações'] ?? '-' }}
Conclusão do Projeto {{ $porcentagem_conclusao }}%
@empty

Nenhuma PPP encontrada.

@endforelse
{{-- Convenio List Container --}}

Convênios e Repasses

@forelse(collect($pppSummary['highlights'] ?? [])->where('type', 'convenio') as $index => $item)
@php $porcentagem_conclusao = (int) ($item['details']['Porcentagem'] ?? 0); if ($porcentagem_conclusao < 40) { $progressColor = 'bg-danger'; } elseif ($porcentagem_conclusao < 70) { $progressColor = 'bg-warning'; } else { $progressColor = 'bg-success'; } $status = $item['details']['Status / Plataforma'] ?? 'N/A'; if (str_contains(strtolower($status), 'execução') || str_contains(strtolower($status), 'andamento')) { $statusColor = 'bg-primary'; } elseif (str_contains(strtolower($status), 'conclu')) { $statusColor = 'bg-success'; } elseif (str_contains(strtolower($status), 'cancel')) { $statusColor = 'bg-danger'; } else { $statusColor = 'bg-secondary'; } @endphp
{{ $status }} {{ $item['details']['Data'] ?? 'Data n/d' }}
{{ \Illuminate\Support\Str::limit($item['title'], 60) }}

Executor / Ordenador
{{ $item['details']['Executor / Ordenador'] ?? '-' }}
Concedente
{{ $item['details']['Concedente'] ?? '-' }}
Valor Global
{{ $item['details']['Valor Global'] ?? '-' }}
Repasse
{{ $item['details']['Repasse'] ?? '-' }}
Conclusão do Projeto {{ $porcentagem_conclusao }}%
@empty

Nenhum convênio encontrado.

@endforelse
{{-- Tab: Projetos e Programas (mesmas abas do módulo, foco em consulta + priorizar/ordenar) --}}
@if(!empty($projetosProgramasDashboardEmbed)) @include('admin.projetosProgramas.embedded-dashboard-estrategico', $projetosProgramasDashboardEmbed) @else

{{ __('Conteúdo indisponível para o seu perfil.') }}

@endif
{{-- Tab: Zeladoria do Município (PCA Digital) --}}
@php $pca = $pcaDashboard ?? []; $ocorrenciasPorStatus = $pca['ocorrenciasPorStatus'] ?? []; $variacaoAnual = (float) ($pca['variacaoAnual'] ?? 0); $variacaoColor = $variacaoAnual >= 0 ? 'text-success' : 'text-danger'; $variacaoIcon = $variacaoAnual >= 0 ? 'fa-arrow-trend-up' : 'fa-arrow-trend-down'; $variacaoBg = $variacaoAnual >= 0 ? 'success' : 'danger'; @endphp
Geral
{{ __('Total Geral') }}

{{ number_format($pca['totalAberto'] ?? 0, 0, ',', '.') }}

Hoje
{{ __('Aberto hoje') }}

{{ number_format($pca['quantidadeAbertoHoje'] ?? 0, 0, ',', '.') }}

Mês
{{ __('Este mês') }}

{{ number_format($pca['abertoMesAtual'] ?? 0, 0, ',', '.') }}

Ano
{{ __('Ano atual') }}

{{ number_format($pca['abertoAnoAtual'] ?? 0, 0, ',', '.') }}

Anterior
{{ __('Ano passado') }}

{{ number_format($pca['abertoAnoPassado'] ?? 0, 0, ',', '.') }}

Var.
{{ __('Variação') }}

{{ number_format($variacaoAnual, 2) }}%

{{ __('Status por Categoria') }}
@php $statusConfig = [ 'ABERTO' => ['color' => 'warning', 'icon' => 'fa-folder-open', 'label' => 'Aberto'], 'CONCLUÍDO' => ['color' => 'success', 'icon' => 'fa-check-circle', 'label' => 'Concluído'], 'OUVIDORIA' => ['color' => 'info', 'icon' => 'fa-headset', 'label' => 'Ouvidoria'], 'SEM ÓRGÃO' => ['color' => 'secondary', 'icon' => 'fa-building', 'label' => 'Sem órgão'], 'SENDO AVALIADO' => ['color' => 'primary', 'icon' => 'fa-hourglass-half', 'label' => 'Em Avaliação'], 'REPROVADO' => ['color' => 'danger', 'icon' => 'fa-times-circle', 'label' => 'Reprovado'], 'MANUTENÇÃO EM ANDAMENTO' => ['color' => 'dark', 'icon' => 'fa-tools', 'label' => 'Em Manutenção'], ]; @endphp
@foreach ($statusConfig as $status => $config)
{{ __($config['label']) }}

{{ $ocorrenciasPorStatus[$status] ?? 0 }}

@endforeach
{{-- Gráfico últimos 7 dias + ranking --}}
{{ __('Ocorrências nos últimos 7 dias') }}
{{ __('Ranking Últimos 7 dias') }}
    @forelse (($pca['rankingUsuarios'] ?? []) as $index => $item)
  • {{ $index + 1 }} {{ $item->name ?? __('Usuário Desconhecido') }}
    {{ $item->total_chamados }}
  • @empty
  • {{ __('Nenhuma ocorrência registrada.') }}
  • @endforelse
{{-- Gráfico mensal --}}
{{ __('Ocorrências Mensais') }}
{{ __('Ocorrências por dia em') }} {{ \Carbon\Carbon::createFromFormat('!m', $pca['mesSelecionado'] ?? now()->month)->locale('pt_BR')->translatedFormat('F') }}/{{ $pca['anoSelecionado'] ?? now()->year }}
{{-- Gráfico anual --}}
{{ __('Ocorrências Anuais') }}
{{ __('Ocorrências por mês nos últimos anos') }}
{{-- Variáveis JS para reaproveitar os mesmos gráficos do módulo Ocorrências PCA --}}
{{-- Tab: Atendimento e Serviços (Oculto) --}} {{--
... (conteúdo comentado) ...
--}} {{-- Tab: Turismo --}}
@foreach ($sectionsTurismo as $section) @include('admin.dashboard-estrategico.partials._section_card', ['section' => $section, 'userPermissions' => $userPermissions]) @endforeach @foreach ($comingSoonTurismo as $mock) @include('admin.dashboard-estrategico.partials._coming_soon_card', ['mock' => $mock]) @endforeach
{{-- Tab: Saúde --}}
{{-- Card: Programa Fibromialgia --}} @php $fibroSection = $sectionsSaude->where('title', 'Programa Fibromialgia')->first(); @endphp @if($fibroSection)
{{ __($fibroSection['title']) }}
{{ __($fibroSection['subtitle']) }}
@foreach ($fibroSection['metrics'] as $metric)

{{ __($metric['label']) }}

{{ number_format((int) ($metric['value'] ?? 0), 0, ',', '.') }}

@endforeach
{{ __("Situação das Carteirinhas") }}
@endif {{-- Card: Unidades de Saúde --}} @php $unidadeSection = $sectionsSaude->where('title', 'Unidades de Saúde')->first(); @endphp @if($unidadeSection)
{{ __($unidadeSection['title']) }}
{{ __($unidadeSection['subtitle']) }}
@foreach ($unidadeSection['metrics'] as $metric)

{{ __($metric['label']) }}

{{ number_format((int) ($metric['value'] ?? 0), 0, ',', '.') }}

@endforeach
@endif @foreach ($comingSoonSaude as $mock) @include('admin.dashboard-estrategico.partials._coming_soon_card', ['mock' => $mock]) @endforeach
{{-- Tab: Social e Educação (Oculto) --}} {{--
... (conteúdo comentado) ...
--}} {{-- Tab: Gestão Institucional --}}
{{-- Card de Gráfico: Produção de Comunicação --}}
{{ __("Produção de Comunicação") }}
{{ __("Notícias x Boletins") }}
{{-- Cards de Seção: Organograma, Comunicação, SEI --}} @foreach ($sectionsInstitucional as $section) @include('admin.dashboard-estrategico.partials._section_card', ['section' => $section, 'userPermissions' => $userPermissions]) @endforeach
@push('after-scripts') {{-- Modal Detalhes PPP --}} {{-- Modal Detalhes Convênio --}} @endpush @endsection