@extends('layouts.app') @section('title', $ticket->formatted_number . ' ' . $ticket->title . ' - ' . $project->name) @section('content') @php $isClient = auth()->user()->isClient(); $isTeam = $project->isTeamMember(auth()->user()); $canEdit = ! $isClient || $ticket->user_id === auth()->id(); $columnName = mb_strtolower($ticket->column->name); $isInTest = str_contains($columnName, 'test') || str_contains($columnName, 'recette'); @endphp
← Retour au tableau
{{ $ticket->formatted_number }} {{ $ticket->type_badge['label'] }} {{ $ticket->priority_badge['label'] }} {{ $ticket->column->name }} @if(! $isClient && ! $ticket->is_visible_to_client) Interne @endif @if($ticket->version) Version {{ $ticket->version->name }} @endif @foreach($ticket->labels as $label) {{ $label->name }} @endforeach

{{ $ticket->title }}

Rapporté par {{ $reporterLabel }} le {{ $ticket->created_at->format('d/m/Y à H:i') }} @if($ticket->updated_at->ne($ticket->created_at)) • mis à jour {{ $ticket->updated_at->diffForHumans() }} @endif

@if($ticket->validated_at)

Validé{{ $ticket->validatedBy ? ' par '.$ticket->validatedBy->name : '' }} le {{ $ticket->validated_at->format('d/m/Y à H:i') }}

@endif
{{ $ticket->description ?: 'Aucune description.' }}
@if(! $isClient && $ticket->system_info)
Informations système transmises automatiquement
Navigateur : {{ \Illuminate\Support\Str::limit($ticket->system_info['user_agent'] ?? 'N/A', 80) }}
Résolution : {{ $ticket->system_info['resolution'] ?? 'N/A' }}
Page : {{ $ticket->system_info['page_url'] ?? 'N/A' }}
@endif
@if($ticket->test_instructions)

Ce qu'il faut tester @if($isInTest) À essayer maintenant @endif

{{ $ticket->test_instructions }}
@endif @if($isTeam || $ticket->checklistItems->isNotEmpty())

Étapes @if($ticket->checklistProgress()) {{ $ticket->checklistProgress() }} @endif

    @forelse($ticket->checklistItems as $item)
  • @if($isTeam)
    @csrf {{ $item->content }}
    @csrf @method('DELETE')
    @else {{ $item->content }} @endif
  • @empty
  • Aucune étape. Découpez la demande en petites étapes à cocher.
  • @endforelse
@if($isTeam)
@csrf
@endif
@endif @if($isTeam || $links->isNotEmpty())

Tickets liés ({{ $links->count() }})

@if($isTeam)
@csrf
@endif
@endif

Pièces jointes ({{ $ticket->attachments->count() }})

@if($ticket->attachments->isNotEmpty()) @else

Aucune pièce jointe.

@endif
@csrf

Commentaires & échanges ({{ $comments->count() }})

@forelse($comments as $comment)
{{ $comment->authorNameFor(auth()->user()) }} @if($comment->is_internal_only) Note interne @endif
{{ $comment->created_at->format('d/m/Y H:i') }}

{{ $comment->content }}

@empty

Aucun commentaire pour le moment.

@endforelse
@csrf
@if(! $isClient) @else
@endif

Historique ({{ $history->count() }})

    @forelse($history as $activity) @include('partials.activity', ['activity' => $activity]) @empty
  • L'historique est tenu depuis le 4 octobre 2026 : rien n'a bougé depuis.
  • @endforelse
@if($canEdit)
@csrf @method('PUT')

Modifier

@if(! $isClient)
@foreach($project->labels as $label) @endforeach
@endif
@endif

Détails

Statut{{ $ticket->column->name }}
Assigné à{{ $ticket->assignee?->name ?? 'Personne' }}
Échéance{{ $ticket->due_date?->format('d/m/Y') ?? '—' }}
Version{{ $ticket->version?->name ?? '—' }}
@if($ticket->validated_at)
Validé{{ $ticket->validatedBy?->name ?? '—' }}, {{ $ticket->validated_at->format('d/m/Y') }}
@endif @if($ticket->guest_email && ! $isClient) @endif
@if(! $isClient)
@csrf @method('DELETE')
@endif
@endsection