{{-- Template pour un élément d'activité individuel --}} @php // Récupérer le type d'activité et les métadonnées // Vérifier si l'activité est un objet ou un tableau if (is_object($activity)) { $activityType = $activity->activity_type ?? 'unknown'; // S'assurer que les métadonnées sont un tableau if (isset($activity->metadata)) { if (is_string($activity->metadata)) { $metadata = json_decode($activity->metadata, true) ?? []; } else { $metadata = (array)$activity->metadata; } } else { $metadata = []; } } else { $activityType = $activity['activity_type'] ?? 'unknown'; // S'assurer que les métadonnées sont un tableau if (isset($activity['metadata'])) { if (is_string($activity['metadata'])) { $metadata = json_decode($activity['metadata'], true) ?? []; } else { $metadata = (array)$activity['metadata']; } } else { $metadata = []; } } // Débogage des métadonnées - en commentaire HTML pour ne pas perturber la structure if (env('APP_DEBUG', false)) { // Stocker le débogage pour l'insérer plus tard $debugOutput = ''; } else { $debugOutput = ''; } // Si les métadonnées ont été passées directement, les utiliser if (isset($metadata) && !empty($metadata)) { // Déjà défini, ne rien faire } // Log pour débogage \Log::debug('BLADE - Métadonnées dans activity_item:', [ 'activity_type' => $activityType, 'metadata' => $metadata, 'has_changes' => isset($metadata['changes']), 'has_title_changes' => isset($metadata['changes']) && isset($metadata['changes']['title']) ]); @endphp
{{-- Marqueur de la timeline avec couleur spécifique selon le type d'activité --}}
@if($activityType == 'creation') @endif @if(strpos($activityType, 'priority') !== false) @endif @if(strpos($activityType, 'deadline') !== false) @endif @if(strpos($activityType, 'dt_') !== false) @endif @if($activityType == 'update' && isset($metadata['changes']) && isset($metadata['changes']['title'])) @endif @if($activityType == 'update' && isset($metadata['changes']) && isset($metadata['changes']['description'])) @endif
@if($activityType == 'creation')
Création de l'intervention nº {{ $metadata['intervention_number'] ?? $activity['intervention_id'] ?? 'Inconnue' }}
{{ $metadata['created_at_formatted'] ?? date('d/m/Y à H:i', strtotime($activity['created_at'] ?? 'now')) }}
Par  @php // Récupérer l'ID de l'intervention if (is_object($activity)) { $interventionId = $activity->intervention_id ?? null; } else { $interventionId = $activity['intervention_id'] ?? null; } // Récupérer l'ID utilisateur depuis la table new_interventions $userId = null; if ($interventionId) { $intervention = \DB::table('new_interventions')->where('id', $interventionId)->first(); if ($intervention) { $userId = $intervention->created_by ?? null; } } // Débogage \Log::debug('Timeline - User ID depuis new_interventions:', [ 'activity_type' => $activityType, 'intervention_id' => $interventionId, 'user_id_from_intervention' => $userId ]); // Récupérer l'utilisateur depuis la table users if ($userId) { $user = \App\Models\User::find($userId); echo $user ? $user->prenom . ' ' . $user->nom : 'Utilisateur #' . $userId; } else { echo 'Utilisateur inconnu'; } @endphp
Client :  @php // D'abord essayer d'utiliser les noms directs dans les métadonnées $clientName = $metadata['client_name'] ?? $metadata['client'] ?? $metadata['client_display_name'] ?? null; // Si pas de nom direct mais un ID client, chercher dans la base de données if (!$clientName && isset($metadata['client_id'])) { $client = \App\Models\Client::find($metadata['client_id']); $clientName = $client ? $client->client_name : 'Client #' . $metadata['client_id']; } echo $clientName ?? 'Client non défini'; @endphp
@elseif($activityType == 'priority_change')
Changement de priorité - Intervention nº {{ $metadata['intervention_number'] ?? $activity['intervention_id'] ?? 'Inconnue' }}
{{ $metadata['created_at_formatted'] ?? date('d/m/Y à H:i', strtotime($activity['created_at'] ?? 'now')) }}
Par {{ $activity['user_fullname'] ?? $activity['user_name'] ?? 'Utilisateur inconnu' }}
Modification de {{ ucfirst(strtolower($metadata['old_priority'] ?? 'Non définie')) }}{{ ucfirst(strtolower($metadata['new_priority'] ?? 'Non définie')) }}
@elseif($activityType == 'deadline_added')
Ajout d'une deadline - Intervention nº {{ $metadata['intervention_number'] ?? $activity['intervention_id'] ?? 'Inconnue' }}
{{ $metadata['created_at_formatted'] ?? date('d/m/Y à H:i', strtotime($activity['created_at'] ?? 'now')) }}
Par {{ $activity['user_fullname'] ?? $activity['user_name'] ?? 'Utilisateur inconnu' }}
Deadline ajoutée : {{ isset($metadata['deadline_date']) ? date('d/m/Y', strtotime($metadata['deadline_date'])) : 'Date non définie' }}
@elseif($activityType == 'deadline_changed')
Modification de la deadline - Intervention nº {{ $metadata['intervention_number'] ?? $activity['intervention_id'] ?? 'Inconnue' }}
{{ $metadata['created_at_formatted'] ?? date('d/m/Y à H:i', strtotime($activity['created_at'] ?? 'now')) }}
Par {{ $activity['user_fullname'] ?? $activity['user_name'] ?? 'Utilisateur inconnu' }}
Deadline modifiée : {{ isset($metadata['old_deadline']) ? date('d/m/Y', strtotime($metadata['old_deadline'])) : 'Date non définie' }}{{ isset($metadata['new_deadline']) ? date('d/m/Y', strtotime($metadata['new_deadline'])) : 'Date non définie' }}
@elseif($activityType == 'deadline_removed')
Suppression de la deadline - Intervention nº {{ $metadata['intervention_number'] ?? $activity['intervention_id'] ?? 'Inconnue' }}
{{ $metadata['created_at_formatted'] ?? date('d/m/Y à H:i', strtotime($activity['created_at'] ?? 'now')) }}
Par {{ $activity['user_fullname'] ?? $activity['user_name'] ?? 'Utilisateur inconnu' }}
Deadline supprimée : {{ $metadata['old_date'] ?? 'Date non définie' }}
@elseif($activityType == 'dt_added')
Ajout de la date d'intervention - Intervention nº {{ $metadata['intervention_number'] ?? $activity['intervention_id'] ?? 'Inconnue' }}
{{ $metadata['created_at_formatted'] ?? date('d/m/Y à H:i', strtotime($activity['created_at'] ?? 'now')) }}
Par {{ $activity['user_fullname'] ?? $activity['user_name'] ?? 'Utilisateur inconnu' }}
Date d'intervention ajoutée :
@php $date = null; // Cas 1: Métadonnées passées directement if (isset($metadata['intervention_date'])) { $date = $metadata['intervention_date']; } // Cas 2: Métadonnées dans l'activité sous forme de tableau elseif (isset($activity['metadata']) && is_array($activity['metadata']) && isset($activity['metadata']['intervention_date'])) { $date = $activity['metadata']['intervention_date']; } // Cas 3: Métadonnées dans l'activité sous forme de JSON elseif (isset($activity['metadata']) && is_string($activity['metadata'])) { $decodedMetadata = json_decode($activity['metadata'], true); if (isset($decodedMetadata['intervention_date'])) { $date = $decodedMetadata['intervention_date']; } } // Cas 4: Métadonnées dans l'objet activité (Eloquent) elseif (isset($activity->metadata) && is_array($activity->metadata) && isset($activity->metadata['intervention_date'])) { $date = $activity->metadata['intervention_date']; } echo $date ? date('d/m/Y', strtotime($date)) : 'Date non définie'; @endphp
@elseif($activityType == 'dt_removed' || $activityType == 'dt_rm')
Suppression de la date d'intervention - Intervention nº {{ $metadata['intervention_number'] ?? $activity['intervention_id'] ?? 'Inconnue' }}
{{ date('d/m/Y', strtotime($activity['created_at'])) }} à {{ date('H:i', strtotime($activity['created_at'])) }}
Par {{ $activity['user_fullname'] ?? $activity['user_name'] ?? 'Utilisateur inconnu' }}
Date d'intervention supprimée :
@php $date = ''; // Récupérer la date d'intervention depuis les métadonnées if (isset($metadata['old_date'])) { $date = $metadata['old_date']; } elseif (isset($activity['metadata']) && is_array($activity['metadata']) && isset($activity['metadata']['old_date'])) { $date = $activity['metadata']['old_date']; } elseif (is_string($activity['metadata'])) { $decodedMetadata = json_decode($activity['metadata'], true); if (isset($decodedMetadata['old_date'])) { $date = $decodedMetadata['old_date']; } } elseif (isset($activity->metadata) && is_array($activity->metadata) && isset($activity->metadata['old_date'])) { $date = $activity->metadata['old_date']; } @endphp {{ !empty($date) ? $date : 'Date non définie' }}
@elseif($activityType == 'dt_set')
Modification de la date d'intervention - Intervention nº {{ $metadata['intervention_number'] ?? $activity['intervention_id'] ?? 'Inconnue' }}
{{ $metadata['created_at_formatted'] ?? date('d/m/Y à H:i', strtotime($activity['created_at'] ?? 'now')) }}
Par {{ $activity['user_fullname'] ?? $activity['user_name'] ?? 'Utilisateur inconnu' }}
Date d'intervention modifiée :
@php $oldDate = null; // Cas 1: Métadonnées passées directement if (isset($metadata['old_date'])) { $oldDate = $metadata['old_date']; } // Cas 2: Métadonnées dans l'activité sous forme de tableau elseif (isset($activity['metadata']) && is_array($activity['metadata']) && isset($activity['metadata']['old_date'])) { $oldDate = $activity['metadata']['old_date']; } // Cas 3: Métadonnées dans l'activité sous forme de JSON elseif (isset($activity['metadata']) && is_string($activity['metadata'])) { $decodedMetadata = json_decode($activity['metadata'], true); if (isset($decodedMetadata['old_date'])) { $oldDate = $decodedMetadata['old_date']; } } // Cas 4: Métadonnées dans l'objet activité (Eloquent) elseif (isset($activity->metadata) && is_array($activity->metadata) && isset($activity->metadata['old_date'])) { $oldDate = $activity->metadata['old_date']; } echo $oldDate ? date('d/m/Y', strtotime($oldDate)) : 'Date non définie'; @endphp@php $newDate = null; // Cas 1: Métadonnées passées directement if (isset($metadata['new_date'])) { $newDate = $metadata['new_date']; } // Cas 2: Métadonnées dans l'activité sous forme de tableau elseif (isset($activity['metadata']) && is_array($activity['metadata']) && isset($activity['metadata']['new_date'])) { $newDate = $activity['metadata']['new_date']; } // Cas 3: Métadonnées dans l'activité sous forme de JSON elseif (isset($activity['metadata']) && is_string($activity['metadata'])) { $decodedMetadata = json_decode($activity['metadata'], true); if (isset($decodedMetadata['new_date'])) { $newDate = $decodedMetadata['new_date']; } } // Cas 4: Métadonnées dans l'objet activité (Eloquent) elseif (isset($activity->metadata) && is_array($activity->metadata) && isset($activity->metadata['new_date'])) { $newDate = $activity->metadata['new_date']; } echo $newDate ? date('d/m/Y', strtotime($newDate)) : 'Date non définie'; @endphp
@elseif($activityType == 'update' && isset($metadata['changes']) && (isset($metadata['changes']['title']) || isset($metadata['changes']['description'])))
Modification de la description - Intervention nº {{ $metadata['intervention_number'] ?? $activity['intervention_id'] ?? 'Inconnue' }}
{{ $metadata['created_at_formatted'] ?? date('d/m/Y à H:i', strtotime($activity['created_at'] ?? 'now')) }}
Par {{ $activity['user_fullname'] ?? $activity['user_name'] ?? 'Utilisateur inconnu' }}
@if(isset($metadata['changes']) && isset($metadata['changes']['title'])) Objet modifié : @elseif(isset($metadata['changes']) && isset($metadata['changes']['description'])) Description modifiée : @else Détails modifiés : @endif
@if(isset($metadata['changes']) && isset($metadata['changes']['title']))
@php $oldTitle = ''; $newTitle = ''; // Récupérer les titres depuis les métadonnées simplifié if (isset($metadata['changes']['title'])) { if (is_array($metadata['changes']['title'])) { $oldTitle = $metadata['changes']['title']['old'] ?? ''; $newTitle = $metadata['changes']['title']['new'] ?? ''; // Log pour débogage \Log::debug('BLADE - Valeurs de titre trouvées:', [ 'old_title' => $oldTitle, 'new_title' => $newTitle, 'timeline_item_class_present' => 'oui' // Cette classe est définie dans la div principale ]); } else { \Log::warning('BLADE - Format de métadonnées de titre incorrect, attendu un tableau'); } } else { \Log::warning('BLADE - Clé title non trouvée dans les métadonnées changes'); } @endphp {{ !empty($oldTitle) ? $oldTitle : 'Objet non défini' }}{{ !empty($newTitle) ? $newTitle : 'Objet non défini' }}
@endif @if(isset($metadata['changes']) && isset($metadata['changes']['description']))
@php $oldDesc = ''; $newDesc = ''; // Récupérer les descriptions depuis les métadonnées simplifié if (isset($metadata['changes']['description'])) { if (is_array($metadata['changes']['description'])) { $oldDesc = $metadata['changes']['description']['old'] ?? ''; $newDesc = $metadata['changes']['description']['new'] ?? ''; // Log pour débogage \Log::debug('BLADE - Valeurs de description trouvées:', [ 'old_desc_length' => strlen($oldDesc), 'new_desc_length' => strlen($newDesc) ]); } else { \Log::warning('BLADE - Format de métadonnées de description incorrect, attendu un tableau'); } } else { \Log::warning('BLADE - Clé description non trouvée dans les métadonnées changes'); } @endphp
{{ !empty($oldDesc) ? $oldDesc : 'Aucune description' }}{{ !empty($newDesc) ? $newDesc : 'Aucune description' }}
@endif
@elseif($activityType == 'worker_assigned')
Ajout d'intervenant(s) - Intervention nº {{ $metadata['intervention_number'] ?? $activity['intervention_id'] ?? 'Inconnue' }}
{{ $metadata['created_at_formatted'] ?? date('d/m/Y \à H:i', strtotime($activity['created_at'] ?? 'now')) }}
Par {{ $activity['user_fullname'] ?? $activity['user_name'] ?? 'Utilisateur inconnu' }}
Intervenant(s) ajouté(s) : @php // Récupérer la liste des travailleurs depuis les métadonnées $workersData = $metadata['workers'] ?? $metadata['all_workers'] ?? []; @endphp @if(is_array($workersData) && count($workersData)) @foreach($workersData as $loopWorker) {{ $loopWorker['name'] ?? ('Intervenant #' . ($loopWorker['id'] ?? '?')) }} @if(isset($loopWorker['id'])) (ID: {{ $loopWorker['id'] }}) @endif @if(!$loop->last)
@endif @endforeach @else {{ $metadata['worker_name'] ?? 'Intervenant inconnu' }} @if(isset($metadata['worker_id'])) (ID: {{ $metadata['worker_id'] }}) @endif @endif
@elseif($activityType == 'worker_removed')
Retrait d'intervenant(s) - Intervention nº {{ $metadata['intervention_number'] ?? $activity['intervention_id'] ?? 'Inconnue' }}
{{ $metadata['created_at_formatted'] ?? date('d/m/Y \à H:i', strtotime($activity['created_at'] ?? 'now')) }}
Par {{ $activity['user_fullname'] ?? $activity['user_name'] ?? 'Utilisateur inconnu' }}
Intervenant(s) retiré(s) : @php // Récupérer la liste des travailleurs depuis les métadonnées $workersData = $metadata['workers'] ?? $metadata['all_workers'] ?? []; @endphp @if(is_array($workersData) && count($workersData)) @foreach($workersData as $loopWorker) {{ $loopWorker['name'] ?? ('Intervenant #' . ($loopWorker['id'] ?? '?')) }} @if(isset($loopWorker['id'])) (ID: {{ $loopWorker['id'] }}) @endif @if(!$loop->last)
@endif @endforeach @else {{ $metadata['worker_name'] ?? 'Intervenant inconnu' }} @if(isset($metadata['worker_id'])) (ID: {{ $metadata['worker_id'] }}) @endif @endif
@endif @php // Log pour vérifier la structure du HTML généré // Note: La classe timeline-item est bien présente dans la div principale (ligne 57) // La vérification précédente était incorrecte car elle utilisait yieldContent('content') \Log::debug('HTML FINAL GÉNÉRÉ pour ' . $activityType, [ 'activity_type' => $activityType, 'timeline_item_class_present' => 'oui' // Cette classe est définie dans la div principale ]); @endphp {!! $debugOutput !!}