@extends('fragments.fullTemplate') @section('titulo') Detalle usuario portal @endsection @section('estilos') @endsection @section('contenido')
@if(session('error')) @endif

Detalle del usuario portal
Revisa la información del registro antes de aprobarlo. Desde Acceso puedes administrar correo, contraseña y restablecimiento.

@if((int) $usuario->active === 1) Aprobado @elseif((int) $usuario->active === 2) Rechazado @else Pendiente @endif

Datos del tramitador
Información personal necesaria para validar la cuenta del usuario.

Nombre
{{ $usuario->name ?: 'Sin nombre' }}
Apellido
{{ $usuario->last_name ?: 'Sin apellido' }}
Correo electrónico
{{ $usuario->email ?: 'Sin correo' }}
Teléfono
{{ $telefonoTramitador ?: 'Sin teléfono personal' }}
Fecha de registro
{{ $usuario->created_at ? $usuario->created_at->format('d/m/Y H:i') : 'N/A' }}
Último acceso
{{ $usuario->last_login ? \Carbon\Carbon::parse($usuario->last_login)->format('d/m/Y H:i') : 'Sin acceso registrado' }}
@if(!$telefonoPersonalHabilitado)
El campo de teléfono personal no existe en portal_usuarios. No se puede considerar completo el perfil del tramitador sin persistencia personal.
@endif
Perfil
{{ $perfilTramitadorCompleto ? 'Completo' : 'Incompleto' }}
Documentos personales
{{ $resumenDocumentosPersonales['requeridos_aprobados'] ?? 0 }}/{{ $resumenDocumentosPersonales['requeridos'] ?? 0 }} aprobados
Cuenta
@if((int) $usuario->active === 1) Aprobada @elseif((int) $usuario->active === 2) Rechazada @else Pendiente @endif

Documentos personales
Expediente documental del tramitador. Este estado es independiente de la aprobación del usuario y de las empresas.

@if(isset($resumenDocumentosPersonales))
{{ $resumenDocumentosPersonales['requeridos_aprobados'] ?? 0 }}/{{ $resumenDocumentosPersonales['requeridos'] ?? 0 }} aprobados {{ $resumenDocumentosPersonales['pendientes'] ?? 0 }} por revisar {{ $resumenDocumentosPersonales['rechazados'] ?? 0 }} por volver a subir {{ $resumenDocumentosPersonales['sin_cargar'] ?? 0 }} sin cargar
@endif @if(!$documentosPersonalesHabilitados)
La tabla portal_usuario_documentos aún no existe. Ejecuta las migraciones para habilitar la revisión de documentos.
@elseif($documentosPersonales->isEmpty())
No hay documentos personales requeridos configurados para este usuario.
@else
@foreach($documentosPersonales as $documento) @php $cargado = $documentosPersonalesPortal->get($documento->id); $extensiones = collect(explode(',', (string) $documento->extensiones)) ->map(function ($extension) { return strtoupper(trim($extension)); }) ->filter() ->implode(', '); $estatus = $cargado ? $cargado->estatus : 'pendiente'; $colorEstatus = [ 'pendiente' => 'grey', \App\PortalUsuarioDocumento::ESTATUS_PENDIENTE => 'yellow', \App\PortalUsuarioDocumento::ESTATUS_APROBADO => 'green', \App\PortalUsuarioDocumento::ESTATUS_RECHAZADO => 'red', ][$estatus] ?? 'grey'; $textoEstatus = $cargado ? $cargado->estatus_texto : 'Pendiente'; @endphp @endforeach
Documento Formato Estatus Comentario Acciones
{{ $documento->document }} Requerido @if($documento->description)
{{ $documento->description }} @endif
{{ $extensiones ?: 'Formatos permitidos' }} {{ $textoEstatus }} @if($cargado && $cargado->comentario_revision) {{ $cargado->comentario_revision }} @else Sin comentario @endif @if($cargado)
@if(!empty($cargado->archivo_disponible) && !empty($cargado->archivo_url)) Ver @endif @if(!empty($cargado->archivo_disponible) && !empty($cargado->archivo_descarga_url)) Descargar @endif
{{ csrf_field() }}
{{ csrf_field() }}
@else Esperando carga desde el portal. @endif
@endif
@if((int) $usuario->active !== 1 && !$puedeAprobarUsuario)
No es posible aprobar al usuario hasta completar sus datos y aprobar sus documentos personales.
@endif
Regresar Acceso del cliente
@if((int) $usuario->active !== 1)
{{ csrf_field() }}
@endif @if((int) $usuario->active !== 2)
{{ csrf_field() }}
@endif
@endsection