@extends('admin.layout') @section('title', 'Détails du membre') @section('content') @include('admin._retour', ['vers' => route('users.index')])

@yield('title')

@php // On ne peut gérer un administrateur que s'il s'agit de soi-même $canManage = auth()->user()?->canManage($user) ?? false; @endphp {{-- Les zones de la fiche (js/sur-place.js) : les messages, qui flottent en haut a droite, et la carte de l'employe, que la fenetre de modification met a jour sans recharger la page. Supprimer ou restaurer ramenent a la liste. --}}
@if (session('success'))
{{ session('success') }}
@endif @if (session('error'))
{{ session('error') }}
@endif
{{-- ================== CARD USER ================== --}}
@php // Photo d'identite, resolue comme dans l'organigramme : les chemins stockes // viennent de Windows (antislashs) et peuvent porter un prefixe storage/. // PhotoHelper renvoie la miniature quand la commande photos:thumbs en a // genere une, les originaux depassant parfois 4 Mo. Sans photo, on retombe // sur le meme fichier par defaut que OrganigrammeController. $photoPath = $user->image ?: 'storage/PHOTOS_IDENTITE_EMPLOYES_ACPORTAIL/image_defaut.jpg'; $photoPath = str_replace('\\', '/', $photoPath); if (\Illuminate\Support\Str::startsWith($photoPath, 'storage/')) { $photoPath = \Illuminate\Support\Str::after($photoPath, 'storage/'); } $photoUrl = \App\Helpers\PhotoHelper::url($photoPath); @endphp {{-- Header utilisateur --}}
{{-- La photo par defaut ne se regarde pas en grand. --}} @if ($user->image) @endif {{ $user->nom }} {{ $user->prenom }} @if ($user->image) @endif

{{ $user->nom }} {{ $user->prenom }}

{{-- Deux etats distincts : deleted_at dit que le membre n'est plus salarie (il sort des plannings), `actif` qu'il peut se connecter au logiciel. --}} @if ($user->trashed()) Compte supprimé @else {{ $user->actif ? 'Accès au logiciel ouvert' : 'Accès au logiciel fermé' }} @endif
{{-- Membre supprime : modifier, envoyer les identifiants ou supprimer a nouveau n'a pas de sens, seule la restauration est proposee. L'envoi d'identifiants serait meme nuisible, il ecrirait un mot de passe et enverrait un mail a un employe parti. --}} @if ($user->trashed()) @can('users.restore')
nom . ' ' . $user->prenom)), $user->poste ? mb_strtoupper($user->poste) : null, $user->email]))));"> @csrf @method('PUT')
@endcan @else @can('users.edit') @if ($canManage) {{-- La fenetre de la liste, ouverte ici : on modifie sans quitter la fiche, et c'est elle qu'on retrouve. --}} @endif @endcan @can('users.sendCredentials') @if ($canManage)
nom . ' ' . $user->prenom)), $user->poste ? mb_strtoupper($user->poste) : null, $user->email]))));"> @csrf {{-- Sans adresse valable, rien ne partirait : le bouton le dit. --}} @php $sansEmail = !filter_var((string) $user->email, FILTER_VALIDATE_EMAIL); @endphp
@endif @endcan @can('users.delete') @if ($canManage)
nom . ' ' . $user->prenom)), $user->poste ? mb_strtoupper($user->poste) : null, $user->email]))));"> @csrf @method('DELETE')
@endif @endcan @endif
{{-- Infos principales --}}

Poste :
{{ mb_strtoupper($user->poste) }}


{{-- Rôles --}}
Rôles :
@forelse ($user->roles as $role) {{ mb_strtoupper($role->name) }} @empty Aucun rôle @endforelse
{{-- Permissions --}}
Permissions :
@forelse ($user->getAllPermissions() as $perm) @permissionBadge($perm->name) @empty Aucune permission @endforelse
{{-- ================== PLANNINGS ================== --}}
🗓️ Plannings ({{ $planningsTotal }})
@include('admin.membres.users._plannings_accordion', [ 'plannings' => $plannings, 'planningInfos' => $planningInfos, 'user' => $user, ]) @if ($planningsTotal > $planningsLimit) @endif
{{-- ================== ABSENCES ================== --}}
🌴 Absences
{{-- Les mêmes cellules que la liste des absences, par les mêmes partiels : la colonne de l'employé en moins, on est sur sa fiche, et la raison prend sa place. --}}
@forelse ($absences as $absence) @empty @endforelse
{{ __('Raison') }} {{ __('Période') }} {{ __('Saisie') }}
@include('admin.plannings.absences._raison', ['absence' => $absence]) @include('admin.plannings.absences._periode', ['absence' => $absence]) @include('admin.plannings.absences._saisie', ['absence' => $absence])
Aucune absence.
{{-- ================== HISTORIQUE ================== Deux lectures de `logs` : ce qu'on a change sur sa fiche (rôle, accès, responsables…), et ce qu'il a fait lui-même dans ACPORTAIL, chaque ligne menant à l'élément touché. --}} @php $historiqueFiche = app(\App\Services\Historique\HistoriqueFiche::class); $historiqueEmploye = $historiqueFiche->de($user); $actionsEmploye = $historiqueFiche->actionsDe($user); @endphp
@include('admin._historique', ['historique' => $historiqueEmploye, 'cle' => 'fiche'])
@include('admin._historique', [ 'historique' => $actionsEmploye, 'cle' => 'actions', 'avecElement' => true, 'sansAuteur' => true, ])
@include('admin.membres.users._modale') @endsection