{{-- Header principale --}}

Piano Alimentare Flessibile

{{ $piano->cliente->Nome ?? 'Cliente' }} @if($piano->Sesso || $piano->DataNascita) - {{ $piano->Sesso ?? '-' }} @if($piano->DataNascita) - {{ \Carbon\Carbon::parse($piano->DataNascita)->format('d/m/Y') }} @endif @endif

{{-- Informazioni Personali e Composizione Corporea --}}
Informazioni Personali
@if($piano->cliente)
Nome Cliente
{{ $piano->cliente->Nome }}
@endif
Sesso
{{ $piano->Sesso }}
Data di Nascita
{{ \Carbon\Carbon::parse($piano->DataNascita)->format('d/m/Y') }}
Peso
{{ $piano->Peso }} kg
Altezza
{{ $piano->Altezza }} cm
Obiettivo
{{ $piano->Obiettivo }}
Tipo Dieta
{{ $piano->TipoDieta ?: 'Non specificato' }}
Condizioni di salute
{{ blank($piano->Patologie) ? 'Non specificato' : (is_array($piano->Patologie) ? implode(', ', array_filter(array_map(static function ($voce) { return is_scalar($voce) ? (string) $voce : json_encode($voce, JSON_UNESCAPED_UNICODE); }, $piano->Patologie))) : (is_object($piano->Patologie) ? json_encode($piano->Patologie, JSON_UNESCAPED_UNICODE) : (string) $piano->Patologie)) }}
{{-- Composizione Corporea --}}
Composizione Corporea
@if(!empty($composizioneCorporea))
@foreach($composizioneCorporea as $chiave => $valore)
{{ $chiave }}
{{ $valore }}
@endforeach
@else Nessun dato disponibile @endif
{{-- Sezione Valutazione --}} @if($ragionamento)
Valutazione Nutrizionale

{{ $ragionamento }}

@endif {{-- Piano Dietetico Aggregato per Tipo Pasto --}}
Piano Alimentare - Opzioni per Tipo Pasto
@php $giorniSettimana = [ 'Lunedi', 'Martedi', 'Mercoledi', 'Giovedi', 'Venerdi', 'Sabato', 'Domenica' ]; // Raccogli tutti i pasti e alternative per tipo (standard + extra dinamici) $pastiAggregati = []; $etichettePasti = [ 'colazione' => 'Colazione', 'spuntino_mattutino' => 'Spuntino mattutino', 'pranzo' => 'Pranzo', 'spuntino_pomeridiano' => 'Spuntino pomeridiano', 'cena' => 'Cena', ]; foreach($giorniSettimana as $giorno) { if(isset($pianoDietetico[$giorno])) { $dettagli = $pianoDietetico[$giorno]; foreach($dettagli as $tipoPasto => $datiPasto) { if (!is_string($tipoPasto) || in_array($tipoPasto, ['totali_giorno', 'Composizione dieta'], true) || !is_array($datiPasto)) { continue; } if (!isset($pastiAggregati[$tipoPasto])) { $pastiAggregati[$tipoPasto] = ['principali' => [], 'alternative' => []]; } if (!isset($etichettePasti[$tipoPasto])) { $nomeDaJson = trim((string) ($datiPasto['_nome_pasto'] ?? '')); $etichettePasti[$tipoPasto] = $nomeDaJson !== '' ? $nomeDaJson : ucfirst(str_replace('_', ' ', $tipoPasto)); } // Raccogli pasti principali raggruppati per giorno if(isset($datiPasto['principale'])) { if(is_array($datiPasto['principale'])) { $pastoCompleto = implode(', ', $datiPasto['principale']); $pastiAggregati[$tipoPasto]['principali'][] = $pastoCompleto; } else { $pastiAggregati[$tipoPasto]['principali'][] = $datiPasto['principale']; } } } } } // Rimuovi duplicati foreach($pastiAggregati as $tipo => $dati) { $pastiAggregati[$tipo]['principali'] = array_unique($dati['principali']); } // Ordina i pasti in sequenza cronologica (standard prima, extra dopo) $ordinePastiStandard = array_keys($etichettePasti); uksort($pastiAggregati, function (string $a, string $b) use ($ordinePastiStandard): int { $posizioneA = array_search($a, $ordinePastiStandard, true); $posizioneB = array_search($b, $ordinePastiStandard, true); $rankA = $posizioneA === false ? 1000 : $posizioneA; $rankB = $posizioneB === false ? 1000 : $posizioneB; if ($rankA === $rankB) { return strcmp($a, $b); } return $rankA <=> $rankB; }); @endphp
@foreach($pastiAggregati as $tipoPasto => $dati) @php $nomePasto = $etichettePasti[$tipoPasto] ?? ucfirst(str_replace('_', ' ', $tipoPasto)); @endphp @endforeach
Pasto Opzioni Principali
{{ $nomePasto }} @if(!empty($dati['principali']))
    @foreach($dati['principali'] as $pasto)
  1. {{ $pasto }}
  2. @endforeach
@else Nessuna opzione principale @endif