@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
There are no contract statistics for {{ $activeFarmName }} yet.
Contracts, total days, and average days per contract.
| Category | Contracts | Days | Avg. |
|---|---|---|---|
| {{ $labels[$row->name] ?? $row->name }} | {{ number_format((int) $row->cr) }} | {{ number_format((int) $row->days) }} | {{ number_format($avg, 1) }} |