{{-- Encabezado --}}

Trabajadores

Administra los trabajadores vinculados a tus empresas.

Nuevo trabajador
{{-- Mensajes --}} @if (session()->has('success'))
{{ session('success') }}
@endif @if (session()->has('warning'))
{{ session('warning') }}
@endif {{-- Datatable --}}
@livewire('empresa.datatables.trabajador-table')
{{-- =================================================== --}} {{-- MODAL REGISTRAR / EDITAR --}} {{-- =================================================== --}} {{ $modoEdicion ? 'Editar trabajador' : 'Nuevo trabajador' }} {{-- Indicador de pasos --}}
@foreach ([ 1 => 'Identificación', 2 => 'Datos personales', 3 => 'Asignación laboral', 4 => 'Confirmación', ] as $numero => $titulo)
@if ($step > $numero) @else {{ $numero }} @endif {{ $titulo }}
@if ($numero < 4)
@endif
@endforeach
{{-- PASO 1 --}} @if ($step === 1)

Identificación

Primero busca al trabajador para evitar registros duplicados.

Si el trabajador ya existe, sus datos personales serán cargados automáticamente y solo se crearán las nuevas asignaciones laborales.
@endif {{-- PASO 2 --}} @if ($step === 2) @php $bloquearDatos = $trabajadorEncontrado && !$modoEdicion; @endphp

Documento

{{ $tipo_documento }} {{ $numero_documento }}

@if ($trabajadorEncontrado) Trabajador encontrado @else Nuevo trabajador @endif
@if ($bloquearDatos)
El trabajador ya existe en el sistema. Sus datos personales se muestran solo como referencia. Podrás asignarlo a tus empresas.
@endif
{{ $this->edadCalculada() !== null ? $this->edadCalculada() . ' años' : 'Seleccione la fecha de nacimiento' }}
@endif {{-- PASO 3 --}} @if ($step === 3)

Asignación laboral

Selecciona empresas y puestos para el trabajador.

@foreach ($asignaciones as $index => $asignacion)

Asignación {{ $index + 1 }}

Empresa y puestos desempeñados

@if (count($asignaciones) > 1) @endif
{{-- Empresa --}}
{{-- Fecha ingreso --}}
{{-- Autocompletado de puestos --}}
{{-- Puestos seleccionados --}} @if (!empty($asignacion['puesto_ids']))
@foreach ($asignacion['puesto_ids'] as $puestoId) @if (isset($puestosPorId[(int) $puestoId])) {{ $puestosPorId[(int) $puestoId] }} @endif @endforeach
@endif
@php $textoBusqueda = mb_strtolower( trim( $asignacion['puesto_search'] ?? '' ) ); $seleccionados = array_map( 'intval', $asignacion['puesto_ids'] ?? [] ); $resultados = collect($puestosTrabajo) ->filter(function ($puesto) use ( $textoBusqueda, $seleccionados ) { if ( in_array( (int) $puesto['id'], $seleccionados, true ) ) { return false; } if ($textoBusqueda === '') { return false; } return str_contains( mb_strtolower( $puesto['nombre'] ), $textoBusqueda ); }) ->take(8); @endphp @if ( $textoBusqueda !== '' && $resultados->isNotEmpty() )
@foreach ($resultados as $puesto) @endforeach
@elseif ( $textoBusqueda !== '' && $resultados->isEmpty() )
No se encontraron puestos disponibles.
@endif
{{-- Puesto principal --}}
@endforeach
@endif {{-- PASO 4 --}} @if ($step === 4)

Confirmación

Revisa la información antes de guardar.

Datos personales

Documento
{{ $tipo_documento }} {{ $numero_documento }}
Trabajador
{{ trim( $nombres . ' ' . $apellido_paterno . ' ' . $apellido_materno ) }}
Edad
{{ $this->edadCalculada() !== null ? $this->edadCalculada() . ' años' : '—' }}
Género
{{ $genero ?: '—' }}
Estado civil
{{ $estado_civil ?: '—' }}
Celular
{{ $celular ?: '—' }}
@foreach ($asignaciones as $index => $asignacion)

{{ $empresasPorId[ (int) $asignacion['empresa_id'] ] ?? 'Empresa no seleccionada' }}

Ingreso: {{ $asignacion['fecha_ingreso'] }}
@foreach ($asignacion['puesto_ids'] as $puestoId) {{ $puestosPorId[ (int) $puestoId ] ?? 'Puesto' }} @if ( (int) $puestoId === (int) $asignacion[ 'puesto_principal_id' ] ) — Principal @endif @endforeach
@endforeach
@endif
Cancelar
@if ( $step > 1 && !($modoEdicion && $step === 2) ) Anterior @endif @if ($step === 1) Buscar y continuar Buscando... @elseif ($step < 4) Siguiente @else {{ $modoEdicion ? 'Guardar cambios' : 'Registrar trabajador' }} Guardando... @endif
{{-- =================================================== --}} {{-- MODAL DETALLE --}} {{-- =================================================== --}} Información del trabajador @if (!empty($trabajadorDetalle))

{{ $trabajadorDetalle['nombre_completo'] }}

{{ $trabajadorDetalle['tipo_documento'] }} {{ $trabajadorDetalle['numero_documento'] }}

Fecha de nacimiento
{{ $trabajadorDetalle['fecha_nacimiento'] }}
Edad
{{ $trabajadorDetalle['edad'] }}
Género
{{ $trabajadorDetalle['genero'] }}
Estado civil
{{ $trabajadorDetalle['estado_civil'] }}
Celular
{{ $trabajadorDetalle['celular'] }}

Asignaciones laborales

@foreach ( $trabajadorDetalle['asignaciones'] as $asignacion )

{{ $asignacion['empresa'] }}

Ingreso: {{ $asignacion['fecha_ingreso'] }}

{{ $asignacion['estado'] }}
@foreach ($asignacion['puestos'] as $puesto) {{ $puesto }} @if ( $puesto === $asignacion['principal'] ) — Principal @endif @endforeach
@endforeach
@endif
Cerrar
{{-- =================================================== --}} {{-- MODAL DESVINCULAR --}} {{-- =================================================== --}} Desvincular trabajador

¿Desea desvincular a {{ $unlinkTrabajadorName }} de todas sus empresas?

No se eliminará el registro global del trabajador. Solo se eliminarán sus asignaciones dentro de tus empresas.
Cancelar Desvincular Desvinculando...