@if($progetti->isEmpty())

Nessun progetto associato

Questa anagrafica non è attualmente associata ad alcun progetto.

@else
@foreach($progetti as $progetto)
{{-- Intestazione della card --}}

{{ $progetto->title }}

{{-- Badge per lo stato (attivo/completato) --}} @php $isActive = $progetto->end_date ? $progetto->end_date->isFuture() : true; $badgeClass = $isActive ? 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800' : 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-gray-100 text-gray-800'; $badgeText = $isActive ? 'Attivo' : 'Completato'; @endphp {{ $badgeText }}
{{-- Contenuto della card --}}
{{-- Informazioni progetto --}}
{{-- Acronimo e CUP --}}
@if($progetto->acronym)
Acronimo
{{ $progetto->acronym }}
@endif
CUP
{{ $progetto->cup_code ?? 'Non specificato' }}
{{-- Date progetto --}}
Periodo @php $dataInizio = $progetto->start_date ? $progetto->start_date->format('d/m/Y') : '-'; $dataFine = $progetto->end_date ? $progetto->end_date->format('d/m/Y') : '-'; @endphp
{{ $dataInizio }} {{ $dataFine }}
{{-- Work Packages --}}
Work Packages assegnati
@php $personaleOre = $progetto->personale->where('anagrafica_id', $anagrafica->id); $totaleOre = $personaleOre->sum('ore_da_svolgere'); $totaleOreRendicontate = $personaleOre->sum('ore_rendicontate'); $percentualeCompletamento = $totaleOre > 0 ? round(($totaleOreRendicontate / $totaleOre) * 100, 1) : 0; @endphp @if($personaleOre->isNotEmpty())
@foreach($personaleOre as $assegnazione) @php $wp = $progetto->workPackages->firstWhere('id', $assegnazione->work_package_id); @endphp @if($wp)
{{-- Indicatore WP colorato --}} @php $wpColors = ['bg-blue-500', 'bg-green-500', 'bg-amber-500', 'bg-rose-500', 'bg-purple-500', 'bg-cyan-500']; $colorIndex = crc32($wp->code) % count($wpColors); $wpColor = $wpColors[$colorIndex]; @endphp
{{ $wp->code }}
{{ $wp->title }}
Ore rendicontate: {{ $assegnazione->ore_rendicontate ?? 0 }} / {{ $assegnazione->ore_da_svolgere }}
{{ $assegnazione->ore_da_svolgere }} ore
@if($assegnazione->contratto) @php $compenso = $assegnazione->contratto->costo_lordo_aziendale ?? $assegnazione->contratto->compenso ?? $assegnazione->contratto->compenso_lordo_contratto ?? 0; $costoOrario = $compenso && $assegnazione->contratto->ore_totali > 0 ? number_format($compenso / $assegnazione->contratto->ore_totali, 2, ',', '.') : '-'; @endphp
€{{ $costoOrario }}/h
@endif
@endif @endforeach
@else
Nessun Work Package assegnato
@endif
{{-- Riepilogo --}} @if($personaleOre->isNotEmpty())
Riepilogo allocazione
{{-- Ore totali --}}
Ore totali
{{ $totaleOre }}
{{-- Ore rendicontate --}}
Ore rendicontate
{{ $totaleOreRendicontate }}
{{-- Percentuale completamento --}}
Completamento
{{ $percentualeCompletamento }}%
{{-- Costo totale progetto --}} @php $costoTotaleProgetto = 0; foreach($personaleOre as $ore) { if($ore->contratto && $ore->contratto->ore_totali > 0) { $compenso = $ore->contratto->costo_lordo_aziendale ?? $ore->contratto->compenso ?? $ore->contratto->compenso_lordo_contratto ?? 0; $costoOrario = $compenso / $ore->contratto->ore_totali; $costoTotaleProgetto += $costoOrario * $ore->ore_da_svolgere; } } @endphp
Costo totale
€{{ number_format($costoTotaleProgetto, 2, ',', '.') }}
{{-- Barra di progresso --}}
@endif
@endforeach
@endif