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
| Pasto |
Opzioni Principali |
@foreach($pastiAggregati as $tipoPasto => $dati)
@php
$nomePasto = $etichettePasti[$tipoPasto] ?? ucfirst(str_replace('_', ' ', $tipoPasto));
@endphp
|
{{ $nomePasto }}
|
@if(!empty($dati['principali']))
@foreach($dati['principali'] as $pasto)
- {{ $pasto }}
@endforeach
@else
Nessuna opzione principale
@endif
|
@endforeach