@extends('reports.pdf.layout') @section('title', $data['meta']['title']) @php $meta = $data['meta']; $kpis = $data['kpis']; $series = $data['monthly_series']; $open = $data['open_issues']; $fmtNum = function ($v, $unit = '') { if ($v === null) return '—'; $s = is_numeric($v) ? number_format((float) $v, is_float($v) && fmod((float) $v, 1) !== 0.0 ? 1 : 0, ',', ' ') : (string) $v; return trim($s . ' ' . $unit); }; $fmtDelta = function ($v, $unit = '%') { if ($v === null) return null; $sign = $v > 0 ? '+' : ''; return $sign . number_format((float) $v, 1, ',', ' ') . $unit; }; // Bar chart geometry — count of OT per month. $chartW = 480; $chartH = 160; $padX = 30; $padY = 20; $vals = array_map(fn ($r) => (int) $r['count'], $series); $maxV = !empty($vals) ? max($vals) : 0; if ($maxV <= 0) { $maxV = 1; } $barCount = count($series); $availW = $chartW - 2 * $padX; $barW = $barCount > 0 ? ($availW / $barCount) * 0.65 : 0; $stepX = $barCount > 0 ? $availW / max($barCount, 1) : 0; // Status badge palette. $statusColor = [ 'Open' => '#3B82F6', 'Resolved' => '#10B981', 'Closed' => '#6B7280', 'Overdue' => '#EF4444', 'Due soon' => '#F59E0B', ]; @endphp @section('content')
DADYCAR FLEET MANAGER

{{ $meta['title'] }}

Maintenance {{ $meta['code'] }} Période : {{ $meta['period']['label'] }} · {{ $meta['site_label'] }} · {{ $meta['total_vehicles'] }} véhicules · Généré le {{ $meta['generated_at']->locale('fr')->isoFormat('D MMMM YYYY') }}

Indicateurs OT

OT ouverts
{{ $fmtNum($kpis['open_ots']['value']) }}
{{ $kpis['open_ots']['delta_label'] }}
OT clôturés
{{ $fmtNum($kpis['closed_ots']['value']) }}
{{ $kpis['closed_ots']['delta_label'] }}
Délai moyen de traitement
{{ $fmtNum($kpis['avg_processing']['value']) }}{{ $kpis['avg_processing']['unit'] }}
{{ $kpis['avg_processing']['delta_label'] }}
Taux de clôture
{{ $fmtNum($kpis['closure_rate']['value']) }}{{ $kpis['closure_rate']['unit'] }}
@if ($kpis['closure_rate']['delta'] !== null)
{{ $fmtDelta($kpis['closure_rate']['delta']) }} {{ $kpis['closure_rate']['delta_label'] }}
@else
{{ $kpis['closure_rate']['delta_label'] }}
@endif

OT par mois (6 mois)

@if ($maxV > 0) @foreach ($series as $i => $r) @php $h = ($r['count'] / $maxV) * ($chartH - 2 * $padY); $cx = $padX + $i * $stepX + $stepX / 2; $bx = $cx - $barW / 2; $by = $chartH - $padY - $h; @endphp {{ $r['label'] }} {{ $r['count'] }} @endforeach @else

Aucun OT créé sur la période.

@endif

OT en cours

@if (!empty($open)) @foreach ($open as $r) @php $color = $statusColor[$r['status']] ?? '#6B7280'; @endphp @endforeach
ID Immat. Véhicule Intervention Statut Priorité Ouvert le Jours Assigné à
{{ $r['id'] }} {{ $r['plate'] }} {{ $r['vehicle'] }} {{ $r['name'] }} {{ $r['status'] }} {{ $r['priority'] }} {{ $r['opened_at'] ?? '—' }} {{ $r['days_open'] ?? '—' }} {{ $r['assignee'] }}
@else

Aucun OT en cours.

@endif @endsection