@extends('layouts.app-layout') @section('title', 'Contactos - ' . config('app.name')) @section('navbar_suffix', 'Contactos') @section('content') @php $user = auth()->user(); $volverUrl = $user?->contacto ? route('contacto.dashboard') : route('funcionario.dashboard'); @endphp
{{-- Top actions (igual a Funcionarios) --}}
{{-- Buscador (mismo look) --}}
@php $filtroActual = $filtro ?? 'activos'; $totalCount = $total ?? $contactos->total(); $activosTotal = $activosCount ?? 0; $inactivosTotal = $inactivosCount ?? 0; @endphp
@if(session('success') || session('error') || session('warning'))
@if(session('success'))
{{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif @if(session('warning'))
{{ session('warning') }}
@endif
@endif {{-- Unidades (mantenés el aviso pero con el mismo ancho/layout) --}} @if(!$unidadesAtencion->isEmpty())
@endif {{-- Lista tipo "cards" (igual a Funcionarios) --}}
@forelse($contactos as $contacto) @php $nombre = $contacto->user->nombre ?? ''; $apellido = $contacto->user->apellido ?? ''; $cedula = $contacto->user->cedula ?? '—'; $email = $contacto->user->email ?? '—'; $telefono = $contacto->user->telefono ?? '—'; $unidadesTexto = $contacto->unidadesAtencion ->map(fn($u) => $u->nombre_comercial ?? $u->razon_social ?? null) ->filter() ->values() ->join(', '); $unidadesTexto = $unidadesTexto !== '' ? $unidadesTexto : '—'; $estadoLabel = 'Inactivo'; $estadoClass = 'bg-warning-subtle text-warning-emphasis'; $estadoRaw = $contacto->estado->value ?? $contacto->estado; if ($contacto->trashed()) { $estadoLabel = 'Eliminado'; $estadoClass = 'bg-danger-subtle text-danger-emphasis'; } elseif ($estadoRaw === 'activo') { $estadoLabel = 'Activo'; $estadoClass = 'bg-success-subtle text-success-emphasis'; } $puedeGestionarActivo = !$contacto->trashed() && $estadoRaw === 'activo'; $puedeRestaurar = $contacto->trashed() || $estadoRaw === 'inactivo'; $iniciales = mb_substr($nombre,0,1) . mb_substr($apellido,0,1); $busquedaRow = strtolower(trim("$nombre $apellido $cedula $email $telefono $unidadesTexto")); $tieneUnidadCompartidaTitular = $unidadesTitularIds->isNotEmpty() && $contacto->unidadesAtencion->pluck('id')->intersect($unidadesTitularIds)->isNotEmpty(); $puedeInactivarContacto = $puedeInactivarComoAdmin || $tieneUnidadCompartidaTitular; @endphp
{{-- Avatar --}}
{{ $iniciales }}
{{-- Info --}}
{{ $nombre }} {{ $apellido }}
{{ $estadoLabel }}
{{ $unidadesTexto }}
{{ $cedula }} {{ $email }} {{ $telefono }}
{{-- Acciones --}}
@if($puedeGestionarActivo) @endif @if($puedeRestaurar) @endif
@if($puedeInactivarContacto)
@csrf @method('PATCH')
@endif
{{-- Modal de confirmación de eliminación --}} @if($puedeGestionarActivo) @endif @empty
@if(!$unidadesAtencion->isEmpty()) No hay contactos en tu(s) unidad(es) por el momento. @else No hay contactos registrados. @endif
@endforelse
{{-- Paginación igual a Funcionarios --}} @if($contactos instanceof \Illuminate\Pagination\LengthAwarePaginator && $contactos->hasPages())
Mostrando {{ $contactos->firstItem() }}–{{ $contactos->lastItem() }} de {{ $contactos->total() }} resultados
{{ $contactos->withQueryString()->links('pagination::simple-bootstrap-5') }}
@endif {{-- Card “Agregar contacto existente…” (mantenida, mismo ancho) --}} @if(!$unidadesAtencion->isEmpty())
Agregar contacto existente a tu unidad
@csrf
Solo se aceptan coincidencias exactas.
—
@error('contacto_id')
{{ $message }}
@enderror
@error('unidad_atencion_id')
{{ $message }}
@enderror
@error('rol_en_empresa')
{{ $message }}
@enderror
@endif
@endsection @push('scripts') @endpush