@extends('layouts.app-layout') @php use App\Enums\PlanAccionEstadoEnum; $puedeGestionarPlanes = $puedeGestionarPlanes ?? (bool) auth()->user()?->funcionario; $volverUrl = $volverUrl ?? (auth()->user()?->funcionario ? route('funcionario.dashboard') : route('contacto.dashboard')); $estadoActual = $estado ?? null; $esVistaTotal = blank($estadoActual) || $estadoActual === 'total'; $filtroEliminados = $puedeGestionarPlanes && $estadoActual === 'eliminado'; $colorBordeCards = match ($estadoActual) { PlanAccionEstadoEnum::ASIGNADO->value => '#ffc107', PlanAccionEstadoEnum::EN_PROCESO->value => '#0d6efd', PlanAccionEstadoEnum::FINALIZADO->value => '#198754', 'eliminado' => '#dc3545', default => '#0d6efd', }; $colorFondoCards = match ($estadoActual) { PlanAccionEstadoEnum::ASIGNADO->value => 'rgba(255,193,7,.06)', PlanAccionEstadoEnum::EN_PROCESO->value => 'rgba(13,110,253,.06)', PlanAccionEstadoEnum::FINALIZADO->value => 'rgba(25,135,84,.06)', 'eliminado' => 'rgba(220,53,69,.06)', default => '#ffffff', }; $colorSombraCards = match ($estadoActual) { PlanAccionEstadoEnum::ASIGNADO->value => 'rgba(255,255,255,.82)', PlanAccionEstadoEnum::EN_PROCESO->value => 'rgba(255,255,255,.82)', PlanAccionEstadoEnum::FINALIZADO->value => 'rgba(255,255,255,.82)', 'eliminado' => 'rgba(255,255,255,.82)', default => 'rgba(255,255,255,.72)', }; @endphp @section('title', 'Planes de acción - ' . config('app.name')) @section('navbar_suffix', 'Planes de acción') @section('content')

Panel de planes

Planes de acción

@if ($puedeGestionarPlanes) @endif
@if (session('success')) @endif
@if ($puedeGestionarPlanes) @endif
@forelse($planes as $plan) @php $planEliminado = method_exists($plan, 'trashed') && $plan->trashed(); $estadoPlan = $planEliminado ? 'eliminado' : ($plan->estado instanceof PlanAccionEstadoEnum ? $plan->estado->value : (string) $plan->estado); $colorBordePlan = $esVistaTotal ? '#0d6efd' : match ($estadoPlan) { PlanAccionEstadoEnum::ASIGNADO->value => '#ffc107', PlanAccionEstadoEnum::EN_PROCESO->value => '#0d6efd', PlanAccionEstadoEnum::FINALIZADO->value => '#198754', 'eliminado' => '#dc3545', default => $colorBordeCards, }; $colorBordeContenedor = $esVistaTotal ? 'rgba(13,110,253,.35)' : match ($estadoPlan) { PlanAccionEstadoEnum::ASIGNADO->value => 'rgba(255,193,7,.38)', PlanAccionEstadoEnum::EN_PROCESO->value => 'rgba(13,110,253,.35)', PlanAccionEstadoEnum::FINALIZADO->value => 'rgba(25,135,84,.35)', 'eliminado' => 'rgba(220,53,69,.35)', default => 'rgba(13,110,253,.35)', }; $colorBordeInicialPlan = match ($estadoPlan) { PlanAccionEstadoEnum::ASIGNADO->value => 'rgba(255,193,7,.42)', PlanAccionEstadoEnum::EN_PROCESO->value => 'rgba(13,110,253,.38)', PlanAccionEstadoEnum::FINALIZADO->value => 'rgba(25,135,84,.38)', 'eliminado' => 'rgba(220,53,69,.36)', default => 'rgba(13,110,253,.32)', }; $estiloCardPlan = "border:0;border-left:4px solid {$colorBordePlan};"; if (!$esVistaTotal) { $estiloCardPlan .= "background-color:{$colorFondoCards};box-shadow:0 .35rem 1rem {$colorSombraCards},0 .18rem .5rem rgba(15,23,42,.05)!important;"; } $estiloInicialPlan = $esVistaTotal ? 'background:linear-gradient(135deg,#e8f1ff,#d9e8ff);color:#0d4cc0;' : "background:#ffffff;color:#0d4cc0;border:1px solid {$colorBordeInicialPlan};"; $estadoEnum = $plan->estado instanceof PlanAccionEstadoEnum ? $plan->estado : PlanAccionEstadoEnum::tryFrom($plan->estado); $acciones = $plan->acciones ?? collect(); $accionesTotal = $acciones->count(); $accionesFinalizadas = $acciones->where('estado', 'finalizada')->count(); $accionesTexto = $acciones->pluck('detalle_accion')->join(' '); $busquedaRow = mb_strtolower( trim( ($plan->titulo ?? '') . ' ' . ($plan->unidadAtencion->nombre_comercial ?? '') . ' ' . ($plan->descripcion ?? '') . ' ' . ($estadoEnum?->label() ?? '') . ' ' . $accionesTexto, ), ); @endphp
{{ mb_substr($plan->titulo, 0, 1) }}

{{ \Illuminate\Support\Str::limit($plan->titulo, 120) }}

@if ($plan->fecha_vencimiento) Vencimiento: {{ $plan->fecha_vencimiento?->format('d/m/Y') }} @endif @if ($planEliminado && !$filtroEliminados) Eliminado @endif
Unidad: {{ \Illuminate\Support\Str::limit($plan->unidadAtencion->nombre_comercial ?? '—', 100) }} @if ($planEliminado) · Eliminado: {{ $plan->deleted_at?->format('d/m/Y') }} @endif
@if ($puedeGestionarPlanes)
@if ($planEliminado)
@csrf @method('PATCH')
@else @endif
@endif
{{ $accionesTotal }} {{ $accionesTotal === 1 ? 'acción' : 'acciones' }} {{ $accionesFinalizadas }} finalizada{{ $accionesFinalizadas === 1 ? '' : 's' }}
@if ($plan->descripcion)

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

@endif
@if ($puedeGestionarPlanes && !$planEliminado) @endif @empty
{{ $filtroEliminados ? 'No hay planes eliminados.' : 'No hay planes de acción creados.' }}
@endforelse
@if ($planes instanceof \Illuminate\Pagination\LengthAwarePaginator && $planes->hasPages())
Mostrando {{ $planes->firstItem() }}–{{ $planes->lastItem() }} de {{ $planes->total() }} resultados
{{ $planes->withQueryString()->links('pagination::simple-bootstrap-5') }}
@endif
@endsection @push('scripts') @endpush