@php // Função para converter imagens em base64 otimizada para PDF function base64_img($path) { $fullPath = public_path($path); $fullPath = str_replace(['/', '\\'], DIRECTORY_SEPARATOR, $fullPath); if (!file_exists($fullPath)) { return null; } $type = pathinfo($fullPath, PATHINFO_EXTENSION); $data = file_get_contents($fullPath); return 'data:image/' . $type . ';base64,' . base64_encode($data); } // Mapeamento de ícones meteorológicos $meteocons = [ 'Ensolarado' => base64_img('pmar/assets/img/icons/weather/ensolarado.png'), 'Sol com poucas nuvens' => base64_img('pmar/assets/img/icons/weather/sol-com-poucas-nuvens.png'), 'Sol com muitas nuvens' => base64_img('pmar/assets/img/icons/weather/sol-com-muitas-nuvens.png'), 'Nublado' => base64_img('pmar/assets/img/icons/weather/nublado.png'), 'Sol com possibilidade de chuva' => base64_img('pmar/assets/img/icons/weather/sol-com-possibilidade-de-chuva.png'), 'Nublado com possibilidade de chuva' => base64_img('pmar/assets/img/icons/weather/nublado-com-possibilidade-de-chuva.png'), 'Chuvoso' => base64_img('pmar/assets/img/icons/weather/chuvoso.png'), 'Pancadas de chuva e trovoada' => base64_img('pmar/assets/img/icons/weather/pancadas-de-chuva-e-trovoada.png'), 'Pancadas de chuva' => base64_img('pmar/assets/img/icons/weather/pancadas-de-chuva.png'), 'Sem nuvens' => base64_img('pmar/assets/img/icons/weather/sem-nuvens.png'), 'Poucas nuvens' => base64_img('pmar/assets/img/icons/weather/poucas-nuvens.png'), 'Muitas nuvens' => base64_img('pmar/assets/img/icons/weather/muitas-nuvens.png'), 'Muitas nuvens com possibilidade de chuva' => base64_img('pmar/assets/img/icons/weather/muitas-nuvens-com-possibilidade-de-chuva.png'), ]; // Mapeamento de ícones de informações $iconMap = [ 'Temperatura' => base64_img('pmar/assets/img/icons/weather/temperatura.png'), 'Umidade' => base64_img('pmar/assets/img/icons/weather/umidade.png'), 'Chuva' => base64_img('pmar/assets/img/icons/weather/chuva.png'), 'Vento' => base64_img('pmar/assets/img/icons/weather/vento.png'), 'Ressaca' => base64_img('pmar/assets/img/icons/weather/ressaca.png'), 'Warning' => base64_img('pmar/assets/img/icons/weather/warning.png'), 'i' => base64_img('pmar/assets/img/icons/weather/i.png'), ]; // Cores para os níveis de ação $cores = [ 'VIGILÂNCIA' => 'green', 'OBSERVAÇÃO' => 'warning', 'ATENÇÃO' => 'danger', 'ALERTA' => 'red', 'ALERTA MÁXIMO' => 'indigo' ]; $cor = $cores[$boletim->nivel_de_acao] ?? 'secondary'; $textClass = ($cor === 'warning') ? 'text-dark' : 'text-white'; // Determinar condição atual baseada na hora $horaAtual = \Carbon\Carbon::now()->subHours(3); $hora = $horaAtual->format('H'); if ($hora >= 5 && $hora < 12) { $condicao = $boletim->estado_manha; } elseif ($hora >= 12 && $hora < 18) { $condicao = $boletim->estado_tarde; } else { $condicao = $boletim->estado_noite; } // Cores hexadecimais $corHex = [ 'green' => '#28a745', 'warning' => '#ffc107', 'danger' => '#fd7e14', 'red' => '#dc3545', 'indigo' => '#6f42c1', 'secondary' => '#6c757d' ]; @endphp
Brasão de Angra dos Reis

Boletim Meteorológico

Nº {{ $boletim->numero_boletim }}

Defesa Civil de Angra dos Reis

Logo Defesa Civil RJ

{{ \Carbon\Carbon::parse($boletim->data)->locale('pt_BR')->translatedFormat('d/m/Y (l)') }}

NÍVEL DE AÇÃO: {{ $boletim->nivel_de_acao }}
{{ $boletim->temperatura_minima }}° / {{ $boletim->temperatura_maxima }}°
{{ $condicao }}

Previsão por Período

Manhã
{{ $boletim->estado_manha }}

{{ $boletim->estado_manha }}

Tarde
{{ $boletim->estado_tarde }}

{{ $boletim->estado_tarde }}

Noite
{{ $boletim->estado_noite }}

{{ $boletim->estado_noite }}

Destaques de Hoje

Temperatura
Temperatura
{{ $boletim->temperatura_minima }}° / {{ $boletim->temperatura_maxima }}°
Mín/Máx
Umidade
Umidade do ar
{{ $boletim->umidade_minima }}% / {{ $boletim->umidade_maxima }}%
Mín/Máx
Chuva
Probabilidade de Chuva
{{ $boletim->probabilidade_chuva }}%
Probabilidade
Volume de Chuva
Volume de Chuva
{{ $boletim->volume_chuva }} mm
Precipitação

Tábua de Marés

{{ $tabuaTresDias['anterior']['dataFormatada'] }}

@if($tabuaTresDias['anterior']['dados'])
    @foreach($tabuaTresDias['anterior']['dados'] as $m)
  • {{ $m['hora'] }} {{ number_format($m['altura'], 2, ',', '.') }} m
  • @endforeach
@else Dados não disponíveis @endif

{{ $tabuaTresDias['atual']['dataFormatada'] }}

@if($tabuaTresDias['atual']['dados'])
    @foreach($tabuaTresDias['atual']['dados'] as $m)
  • {{ $m['hora'] }} {{ number_format($m['altura'], 2, ',', '.') }} m
  • @endforeach
@else Dados não disponíveis @endif

{{ $tabuaTresDias['seguinte']['dataFormatada'] }}

@if($tabuaTresDias['seguinte']['dados'])
    @foreach($tabuaTresDias['seguinte']['dados'] as $m)
  • {{ $m['hora'] }} {{ number_format($m['altura'], 2, ',', '.') }} m
  • @endforeach
@else Dados não disponíveis @endif
 

Informações Complementares

Nível de Ação
{{ $boletim->nivel_de_acao }}

Legenda:

VIGILÂNCIA - Normalidade
OBSERVAÇÃO - Risco Baixo
ATENÇÃO - Risco Moderado
ALERTA - Risco Elevado
ALERTA MÁXIMO - Risco Crítico
Chuva
Avisos Meteorológicos
@php $temAvisoAtivado = $boletim->status_aviso_chuva == 'ATIVADO' || $boletim->status_aviso_vento == 'ATIVADO' || $boletim->status_aviso_ressaca == 'ATIVADO'; @endphp @if (!$temAvisoAtivado)

Estamos sem avisos meteorológicos para nossa região.

@else
@if ($boletim->status_aviso_chuva == 'ATIVADO') @endif @if ($boletim->status_aviso_vento == 'ATIVADO') @endif @if ($boletim->status_aviso_ressaca == 'ATIVADO') @endif

Chuva

Chuva

Vento

Vento

Ressaca

Ressaca
@if ($temAvisoAtivado)

Fonte: Instituto Nacional de Meteorologia

@endif @endif
Chuva
CEMADEN

Responsável: {{ $boletim->creator->name ?? __('Não informado') }}

Sobreaviso: {{ $boletim->sobreavisoCemaden->nome ?? 'Nenhum sobreaviso definido' }}

 
@if($boletim->acoes_programadas || $boletim->observacao)

Informações Adicionais

@if($boletim->acoes_programadas)
Ações Programadas da Defesa Civil

{{ $boletim->acoes_programadas }}

@endif @if($boletim->observacao)
Observação

{{ $boletim->observacao }}

@endif
 
@endif

Cadastre-se para receber os ALERTAS da Defesa Civil pelos QR Codes abaixo:

Alertas via WhatsApp
QR Code WhatsApp
Alertas via Telegram
QR Code Telegram
Alertas via SMS por CEP
QR Code Alertas CEP
Áreas de Risco e Pontos de Apoio
QR Code Áreas de Risco