@extends('layouts.app-layout') @php use App\Enums\AccionEstadoEnum; use App\Enums\FuncionarioRolEnum; $puedeGestionarAccion = $puedeGestionarAccion ?? (bool) auth()->user()?->funcionario; $esFuncionarioAdmin = (auth()->user()?->funcionario?->rol?->value ?? auth()->user()?->funcionario?->rol) === FuncionarioRolEnum::ADMIN->value; $funcionarios = $funcionarios ?? collect(); $estadoEnum = $accion->estado instanceof AccionEstadoEnum ? $accion->estado : AccionEstadoEnum::tryFrom((string) $accion->estado); $accionEliminada = method_exists($accion, 'trashed') && $accion->trashed(); $accionVencida = $accion->fecha_vencimiento && $accion->fecha_vencimiento->lt(now()->startOfDay()); $estadosContactoDisponibles = AccionEstadoEnum::cases(); $esContactoAutenticado = $esContactoAutenticado ?? (bool) auth()->user()?->contacto; $funcionariosLookup = $funcionarios->map(function ($funcionario) { return [ 'id' => $funcionario->id, 'nombre' => trim(($funcionario->user->nombre ?? '') . ' ' . ($funcionario->user->apellido ?? '')), 'rol' => $funcionario->rol->label(), ]; })->values(); $estadoClass = match($estadoEnum) { AccionEstadoEnum::PENDIENTE => 'bg-warning-subtle text-warning-emphasis', AccionEstadoEnum::EN_PROCESO => 'bg-primary-subtle text-primary', AccionEstadoEnum::FINALIZADA => 'bg-success-subtle text-success', default => 'bg-secondary-subtle text-secondary' }; $estadoLabel = $estadoEnum?->label() ?? ucfirst((string) $accion->estado); @endphp @section('title', 'Acción - ' . config('app.name')) @section('navbar_suffix', 'Acciones') @section('content')

Acción

{{ $accion->detalle_accion }}

@if($puedeGestionarAccion && !$accionEliminada)
@csrf @method('DELETE')
@elseif($puedeGestionarAccion)
@csrf @method('PATCH')
@endif
@if(session('success'))
{{ session('success') }}
@endif
@if($accionEliminada)
Acción eliminada (solo lectura)
@endif

Estado

@if($puedeGestionarAccion && !$accionEliminada)
@csrf @method('PATCH')
@elseif($esContactoAutenticado && !$puedeGestionarAccion && !$accionEliminada) @if(!$accionVencida)
@csrf @method('PATCH')
@else Sin edición (vencida) @endif @endif
{{ $estadoLabel }} @if($accion->es_reunion) Acción de reunión @endif @if($accionVencida && ($puedeGestionarAccion || $accionEliminada)) Vencida @endif

Vencimiento

{{ $accion->fecha_vencimiento ? \Illuminate\Support\Carbon::parse($accion->fecha_vencimiento)->format('d/m/Y') : 'Sin fecha' }}

Fecha de creación

{{ $accion->created_at?->format('d/m/Y H:i') ?? 'No disponible' }}

Última modificación

{{ $accion->updated_at?->format('d/m/Y H:i') ?? 'No disponible' }}

@if($accion->descripcion)

Descripcion

{{ $accion->descripcion }}

@endif @php $unidadesAsociadas = $accion->planes ->pluck('unidadAtencion') ->filter() ->unique('id') ->values(); @endphp

Planes asociados

@if($accion->planes->isNotEmpty()) @foreach($accion->planes as $plan) {{ $plan->titulo }} @endforeach @else Sin plan asignado @endif

Unidades de atención

@if($unidadesAsociadas->isNotEmpty()) @foreach($unidadesAsociadas as $unidad) {{ $unidad->nombre_comercial ?? 'Unidad' }} @endforeach @else Sin unidad asociada @endif

Responsables Innova

{{ $puedeGestionarAccion ? 'Asigna uno o más funcionarios a esta acción.' : 'Responsables asignados a esta acción.' }}

@if($puedeGestionarAccion)
@csrf
@error('funcionario_id')
{{ $message }}
@enderror
@endif
@forelse($accion->responsables as $responsable)
@if($esFuncionarioAdmin) {{ $responsable->user->nombre ?? '' }} {{ $responsable->user->apellido ?? '' }} @else {{ $responsable->user->nombre ?? '' }} {{ $responsable->user->apellido ?? '' }} @endif {{ $responsable->rol?->label() ?? 'Funcionario' }}
@if($puedeGestionarAccion && !$accionEliminada)
@csrf @method('DELETE')
@endif
@empty
Sin responsables asignados.
@endforelse
{{-- Modal de confirmación de eliminación --}} @if($puedeGestionarAccion) @endif @endsection @push('scripts') @endpush