@extends('layouts.mainlayout') @section('fullwidth', true) @section('content') @php $farms = [ '2' => 'Ahus', '9' => 'Trelleborg', '6' => 'Bastad', '10' => 'Vellinge', '14' => 'Skottorp', ]; $activeFarmName = $farms[(string) $f_id] ?? 'Farm'; $latestIds = DB::table('a_stat') ->where('f_id', $f_id) ->select(DB::raw('MAX(id) AS id')) ->groupBy('year', 'name') ->pluck('id'); $statsByYear = DB::table('a_stat') ->whereIn('id', $latestIds) ->orderByDesc('year') ->get() ->groupBy('year'); $currentYear = (string) ($statsByYear->keys()->first() ?? date('Y')); $currentRows = $statsByYear->get($currentYear, collect()); $rowByName = $currentRows->keyBy('name'); $totalRow = $rowByName->get('Totat'); $totalContracts = (int) ($totalRow->cr ?? 0); $totalDays = (int) ($totalRow->days ?? 0); $averageDays = $totalContracts > 0 ? round($totalDays / $totalContracts, 1) : 0; $labels = [ 'New' => 'New contracts', 'Returning' => 'Returning contracts', 'Older' => 'Older contracts', 'Totat' => 'Total', 'Total 1- 30' => '1–30 days', 'Total 31-60' => '31–60 days', 'Total 61- 90' => '61–90 days', 'Total 91-120' => '91–120 days', 'Total 121+' => '121+ days', ]; $relationshipNames = ['New', 'Returning', 'Older']; $durationNames = ['Total 1- 30', 'Total 31-60', 'Total 61- 90', 'Total 91-120', 'Total 121+']; $trendYears = $statsByYear->keys()->sort()->values(); $trendContracts = $trendYears->map(function ($statYear) use ($statsByYear) { $total = $statsByYear->get($statYear)->firstWhere('name', 'Totat'); return (int) ($total->cr ?? 0); }); $trendAverage = $trendYears->map(function ($statYear) use ($statsByYear) { $total = $statsByYear->get($statYear)->firstWhere('name', 'Totat'); $contracts = (int) ($total->cr ?? 0); return $contracts > 0 ? round(((int) $total->days) / $contracts, 1) : 0; }); $chartData = [ 'relationship' => [ 'labels' => collect($relationshipNames)->map(fn ($name) => $labels[$name])->values(), 'series' => collect($relationshipNames)->map(fn ($name) => (int) optional($rowByName->get($name))->cr)->values(), ], 'duration' => [ 'categories' => collect($durationNames)->map(fn ($name) => $labels[$name])->values(), 'contracts' => collect($durationNames)->map(fn ($name) => (int) optional($rowByName->get($name))->cr)->values(), ], 'trend' => [ 'years' => $trendYears, 'contracts' => $trendContracts, 'averageDays' => $trendAverage, ], ]; @endphp

Farm statistics

  1. Statistics
  2. {{ $activeFarmName }}
Download CSV
Total contracts{{ number_format($totalContracts) }}{{ $currentYear }}
Average duration{{ number_format($averageDays, 1) }}days per contract
History available{{ $statsByYear->count() }}years tracked
@if($statsByYear->isEmpty())

No statistics available

There are no contract statistics for {{ $activeFarmName }} yet.

@else
Contract mix

Workforce relationship

{{ $currentYear }}
Contract length

Duration distribution

{{ $currentYear }}
Historical view

Contracts and average duration

{{ $trendYears->first() }}–{{ $trendYears->last() }}
Detailed statistics

Yearly breakdown

Contracts, total days, and average days per contract.

@foreach($statsByYear as $statYear => $rows)

{{ $statYear }}

@if((string) $statYear === $currentYear)Latest@endif
@foreach($rows as $row) @php $avg = (int) $row->cr > 0 ? round((int) $row->days / (int) $row->cr, 1) : 0; @endphp @endforeach
CategoryContractsDaysAvg.
{{ $labels[$row->name] ?? $row->name }} {{ number_format((int) $row->cr) }} {{ number_format((int) $row->days) }} {{ number_format($avg, 1) }}
@endforeach
@endif
@endsection