@extends('layouts.app') @section('title', ($session->structure_snapshot['day_name'] ?? 'Allenamento').' · FranCoach') @php $isCompleted = $session->status === \App\Enums\SessionStatus::Completed; $timer = $session->timer_state ?? [ 'remaining_seconds' => (int) config('francoach.default_rest_timer_seconds', 60), 'duration_seconds' => (int) config('francoach.default_rest_timer_seconds', 60), 'is_running' => false, 'ends_at_ms' => null, 'sound_enabled' => true, ]; @endphp @section('content')
@if ($isCompleted)
@if ($session->personal_records)
Nuovi record personali: {{ collect($session->personal_records)->map(fn ($record) => $record['exercise_name'].' '.$record['weight_kg'].' kg')->join(', ') }}
@endif @if ($session->previous_comparison)
Confronto precedente: volume {{ $session->previous_comparison['volume_difference_kg'] >= 0 ? '+' : '' }}{{ $session->previous_comparison['volume_difference_kg'] }} kg, completamento {{ $session->previous_comparison['completion_difference'] >= 0 ? '+' : '' }}{{ $session->previous_comparison['completion_difference'] }}%.
@endif @if ($canEdit)

Puoi modificare i valori fino al {{ $session->edit_deadline_at?->format('d/m/Y H:i') }}.

@endif @endif @if (! $isCompleted) @endif
@foreach ($session->exercises as $exerciseIndex => $sessionExercise) @php $snapshot = $sessionExercise->exercise_snapshot ?? []; $prescription = $sessionExercise->prescription_snapshot ?? []; $executionGifPath = $snapshot['execution_gif_path'] ?? $sessionExercise->exercise?->execution_gif_path; $coverImagePath = $snapshot['cover_image_path'] ?? $sessionExercise->exercise?->cover_image_path; $exerciseMediaPath = $executionGifPath ?: $coverImagePath; $repetitionLabels = $sessionExercise->sets->map(function ($set) { if ($set->planned_technique === \App\Enums\WorkoutTechnique::DropSet && collect($set->planned_drop_segments)->isNotEmpty()) { return collect($set->planned_drop_segments) ->pluck('reps') ->filter(fn ($reps) => $reps !== null) ->join(' → '); } if ($set->planned_reps_min === null) { return null; } return $set->planned_reps_max && $set->planned_reps_max !== $set->planned_reps_min ? $set->planned_reps_min.'–'.$set->planned_reps_max : (string) $set->planned_reps_min; })->filter(); $uniqueRepetitions = $repetitionLabels->unique()->values(); $seriesPrescription = $uniqueRepetitions->count() === 1 ? $sessionExercise->sets->count().'x'.$uniqueRepetitions->first() : $repetitionLabels->map(fn ($reps, $index) => 'S'.($index + 1).': '.$reps)->join(' · '); $restPrescription = $sessionExercise->sets->pluck('planned_rest_seconds')->filter(fn ($value) => $value !== null)->unique()->join('/'); $rirPrescription = $sessionExercise->sets->pluck('planned_rir')->filter(fn ($value) => $value !== null)->unique()->join('/'); @endphp
Allenamento in corso Esercizio {{ $exerciseIndex + 1 }} di {{ $session->exercises->count() }}
FranCoach workout

{{ $sessionExercise->exercise_name }}

@if ($snapshot['short_description'] ?? null)

{{ $snapshot['short_description'] }}

@elseif ($snapshot['full_description'] ?? null)

{{ $snapshot['full_description'] }}

@endif
{{ $seriesPrescription ?: $sessionExercise->sets->count().' serie' }} @if ($restPrescription)Rest {{ $restPrescription }} sec@endif @if ($rirPrescription !== '')RIR {{ $rirPrescription }}@endif
@if ($prescription['superset_group'] ?? null) Superset · {{ $prescription['block_name'] ?? $prescription['superset_group'] }} @elseif ($prescription['block_name'] ?? null) {{ $prescription['block_name'] }} @endif @if ($prescription['coach_notes'] ?? null)

Nota coach{{ $prescription['coach_notes'] }}

@endif
@if ($exerciseMediaPath)
{{ $executionGifPath ? 'Esecuzione di' : 'Copertina di' }} {{ $sessionExercise->exercise_name }}
@endif
@if ($snapshot['video_url'] ?? null) @endif @if ($snapshot['execution'] ?? null)
Istruzioni

{{ $snapshot['execution'] }}

@endif @if ($sessionExercise->previous_performance)
Storico recente
@foreach ($sessionExercise->previous_performance['history'] ?? [] as $history) @endforeach
Data Serie
{{ \Illuminate\Support\Carbon::parse($history['performed_at'])->format('d/m') }} {{ collect($history['sets'])->map(fn ($set) => ($set['weight_kg'] ?? '—').' kg × '.($set['reps'] ?? '—'))->join(' · ') }}
@endif
@if ($snapshot['video_url'] ?? null)
@endif @if ($sessionExercise->is_skipped)
Esercizio saltato.
@else

Serie

@foreach ($sessionExercise->sets as $setIndex => $set) @php $dropSegments = collect($set->drop_segments ?? $set->planned_drop_segments); $plannedDropSegments = collect($set->planned_drop_segments); $isDropSet = $set->planned_technique === \App\Enums\WorkoutTechnique::DropSet; $hasNextSet = $setIndex < $sessionExercise->sets->count() - 1; if ($isDropSet && $dropSegments->isEmpty()) { $dropSegments = collect([['reps' => null, 'weight_kg' => null], ['reps' => null, 'weight_kg' => null]]); } @endphp
{{ $set->set_number }}
@if ($isDropSet)
Drop set {{ $dropSegments->count() }} fasi
@else
@if ($hasNextSet && $canEdit) @endif
@if ($hasNextSet && $canEdit) @endif
@endif
Dettagli serie {{ $set->set_number }}
{{ $set->planned_technique?->label() ?? 'Normale' }} @if ($isDropSet)
@foreach ($dropSegments as $dropIndex => $dropSegment) @php $plannedDropSegment = $plannedDropSegments->get($dropIndex, []); $plannedRepetitions = $plannedDropSegment['reps'] ?? null; @endphp
Fase {{ $dropIndex + 1 }}
@endforeach
@endif
@if ($set->is_manual && $canEdit && ! $isCompleted) @endif
@endforeach @if ($canEdit && ! $isCompleted) @endif
@endif
@if ($sessionExercise->media->isNotEmpty())
@foreach ($sessionExercise->media as $media)
@if ($media->isImage()) {{ $media->original_name }} @else @endif @if ($canEdit)
@csrf @method('DELETE')
@endif @endforeach
@endif @if ($canEdit)
@csrf
@endif
@endforeach
@if (! $isCompleted)
@csrf @method('DELETE')
@endif
@if (! $isCompleted) @endif @endsection