@extends('layouts.app-layout') @php use App\Enums\AccionEstadoEnum; $puedeGestionarAcciones = $puedeGestionarAcciones ?? (bool) auth()->user()?->funcionario; $volverUrl = $volverUrl ?? (auth()->user()?->funcionario ? route('funcionario.dashboard') : route('contacto.dashboard')); $estadoActual = $estado ?? null; $planSeleccionado = $planId ?? null; $soloMiasValor = $soloMias ? 1 : null; $filtroEliminadas = $puedeGestionarAcciones && $estadoActual === 'eliminado'; $colorBordeCards = match ($estadoActual) { AccionEstadoEnum::PENDIENTE->value => '#ffc107', AccionEstadoEnum::EN_PROCESO->value => '#0d6efd', AccionEstadoEnum::FINALIZADA->value => '#198754', 'eliminado' => '#dc3545', default => '#ff7a1a', }; $colorTextoMostrando = match ($estadoActual) { AccionEstadoEnum::PENDIENTE->value => 'var(--bs-warning-text-emphasis)', default => $colorBordeCards, }; $colorFondoCards = match ($estadoActual) { AccionEstadoEnum::PENDIENTE->value => 'rgba(255,193,7,.06)', AccionEstadoEnum::EN_PROCESO->value => 'rgba(13,110,253,.06)', AccionEstadoEnum::FINALIZADA->value => 'rgba(25,135,84,.06)', 'eliminado' => 'rgba(220,53,69,.06)', default => '#ffffff', }; $colorSombraCards = match ($estadoActual) { AccionEstadoEnum::PENDIENTE->value => 'rgba(255,255,255,.82)', AccionEstadoEnum::EN_PROCESO->value => 'rgba(255,255,255,.82)', AccionEstadoEnum::FINALIZADA->value => 'rgba(255,255,255,.82)', 'eliminado' => 'rgba(255,255,255,.82)', default => 'rgba(255,255,255,.72)', }; $filtroActivoMensaje = null; if ($soloMias) { $filtroActivoMensaje = match ($estadoActual) { AccionEstadoEnum::PENDIENTE->value => 'Solo tus acciones pendientes asignadas', AccionEstadoEnum::EN_PROCESO->value => 'Solo tus acciones en proceso asignadas', AccionEstadoEnum::FINALIZADA->value => 'Solo tus acciones finalizadas asignadas', 'eliminado' => 'Solo tus acciones eliminadas asignadas', default => 'Solo tus acciones asignadas', }; } @endphp @section('title', 'Acciones - ' . config('app.name')) @section('navbar_suffix', 'Acciones') @section('content')

Panel de acciones

Acciones

@if ($puedeGestionarAcciones) @endif @if ($puedeFiltrarSoloMias ?? false)
@endif
@if (session('success'))
{{ session('success') }}
@endif
@if ($puedeGestionarAcciones) @endif
@if (($puedeFiltrarSoloMias ?? false) && $soloMias && $filtroActivoMensaje)
Mostrando: {{ $filtroActivoMensaje }}
@endif
@forelse($acciones as $accion) @php $accionEliminada = method_exists($accion, 'trashed') && $accion->trashed(); $estadoAccion = $accionEliminada ? 'eliminado' : ($accion->estado instanceof AccionEstadoEnum ? $accion->estado->value : (string) $accion->estado); $accionVencida = $accion->fecha_vencimiento && $accion->fecha_vencimiento->lt(now()->startOfDay()); $colorBordeAccion = !$estadoActual ? '#ff7a1a' : match ($estadoAccion) { AccionEstadoEnum::PENDIENTE->value => '#ffc107', AccionEstadoEnum::EN_PROCESO->value => '#0d6efd', AccionEstadoEnum::FINALIZADA->value => '#198754', 'eliminado' => '#dc3545', default => $colorBordeCards, }; $colorBordeContenedor = !$estadoActual ? 'rgba(255,122,26,.35)' : match ($estadoAccion) { AccionEstadoEnum::PENDIENTE->value => 'rgba(255,193,7,.38)', AccionEstadoEnum::EN_PROCESO->value => 'rgba(13,110,253,.35)', AccionEstadoEnum::FINALIZADA->value => 'rgba(25,135,84,.35)', 'eliminado' => 'rgba(220,53,69,.35)', default => 'rgba(255,122,26,.35)', }; $estiloCardAccion = "border:0;border-left:4px solid {$colorBordeAccion};"; if ($estadoActual) { $estiloCardAccion .= "background-color:{$colorFondoCards};box-shadow:0 .35rem 1rem {$colorSombraCards},0 .18rem .5rem rgba(15,23,42,.05)!important;"; } $planesTexto = $accion->planes->pluck('titulo')->join(' '); $unidadesTexto = $accion->planes ->pluck('unidadAtencion.nombre_comercial') ->filter() ->unique() ->join(' '); $responsablesTexto = $accion->responsables ->map(fn($r) => trim(($r->user->nombre ?? '') . ' ' . ($r->user->apellido ?? ''))) ->join(' '); $busquedaRow = mb_strtolower( trim( ($accion->detalle_accion ?? '') . ' ' . ($accion->descripcion ?? '') . ' ' . $planesTexto . ' ' . $unidadesTexto . ' ' . $responsablesTexto, ), ); @endphp

{{ \Illuminate\Support\Str::limit($accion->detalle_accion, 120) }}

@if($accion->es_reunion) Reunión @endif @if ($accionEliminada && !$filtroEliminadas) Eliminada @endif @if ($accion->fecha_vencimiento) Vencimiento: {{ \Illuminate\Support\Carbon::parse($accion->fecha_vencimiento)->format('d/m/Y') }} @endif
@if ($accion->descripcion)

{{ \Illuminate\Support\Str::limit($accion->descripcion, 220) }}

@endif @if ($accionEliminada)
Eliminada: {{ $accion->deleted_at?->format('d/m/Y') }}
@endif @php $titulosPlanes = $accion->planes ->pluck('titulo') ->filter() ->unique() ->join(', '); $nombresUnidades = $accion->planes ->pluck('unidadAtencion.nombre_comercial') ->filter() ->unique() ->join(', '); @endphp
{{ \Illuminate\Support\Str::limit($titulosPlanes !== '' ? $titulosPlanes : 'Sin plan', 140) }}
{{ \Illuminate\Support\Str::limit($nombresUnidades !== '' ? $nombresUnidades : 'Sin unidad', 140) }}
@php $nombresResponsables = $accion->responsables ->map( fn($responsable) => trim( ($responsable->user->nombre ?? '') . ' ' . ($responsable->user->apellido ?? ''), ), ) ->filter() ->unique() ->join(', '); @endphp
Responsables: {{ \Illuminate\Support\Str::limit($nombresResponsables !== '' ? $nombresResponsables : 'Sin responsables', 180) }}
@if ($puedeGestionarAcciones)
@if ($accionEliminada)
@csrf @method('PATCH')
@else @endif
@else @if (!$accionEliminada && $accionVencida)
Vencida
@endif @endif
@if($puedeGestionarAcciones && !$accionEliminada) @endif @empty
{{ $filtroEliminadas ? 'No hay acciones eliminadas.' : 'No hay acciones registradas.' }}
@endforelse
@if ($acciones instanceof \Illuminate\Pagination\LengthAwarePaginator && $acciones->hasPages())
Mostrando {{ $acciones->firstItem() }}–{{ $acciones->lastItem() }} de {{ $acciones->total() }} resultados
{{ $acciones->withQueryString()->links('pagination::simple-bootstrap-5') }}
@endif
@endsection @push('scripts') @endpush