@extends('layouts.app', ['title' => 'Solicitudes de edición']) @section('content') @php $actionText = fn ($action) => match ($action) { 'delete' => 'Eliminar', 'cancel' => 'Cancelar', default => 'Editar', }; $statusClass = fn ($status) => match ($status) { 'approved' => 'green', 'denied' => 'red', default => 'yellow', }; $statusText = fn ($status) => match ($status) { 'approved' => 'Aprobada', 'denied' => 'Rechazada', default => 'Pendiente', }; $fmtVal = function ($x) { if ($x === null || $x === '') return '—'; if (is_array($x)) return \Illuminate\Support\Str::limit(json_encode($x, JSON_UNESCAPED_UNICODE), 60); return \Illuminate\Support\Str::limit((string) $x, 60); }; $norm = fn ($x) => is_array($x) ? json_encode($x) : (string) ($x ?? ''); $changesOf = function ($approval) use ($norm) { $payload = is_array($approval->payload) ? $approval->payload : []; $before = is_array($approval->before) ? $approval->before : []; $changes = []; foreach ($payload as $k => $v) { if (in_array($k, ['_token', '_method', 'cancellation_reason'], true)) continue; $old = $before[$k] ?? null; if ($norm($old) !== $norm($v)) $changes[$k] = [$old, $v]; } return $changes; }; @endphp

Solicitudes de edición, cancelación o eliminación

Autoriza acciones puntuales para usuarios que no son administradores. Cada solicitud debe incluir el motivo capturado por el usuario.

@forelse($requests as $approval) @empty @endforelse
Solicitante Acción Registro Motivo Estado Fecha Atendida por
{{ $approval->user?->name ?? 'Usuario eliminado' }}
{{ $approval->user?->role ?? '—' }}
{{ $actionText($approval->action) }} {{ $approval->target_label ?: ($approval->target_type.' #'.$approval->target_id) }}
{{ $approval->route_name ?: '—' }}
@php $changes = $approval->action !== 'cancel' ? $changesOf($approval) : []; @endphp @if($changes)
Ver cambios ({{ count($changes) }}) @foreach($changes as $field => $pair) @endforeach
CampoAntesNuevo
{{ $field }} {{ $fmtVal($pair[0]) }} {{ $fmtVal($pair[1]) }}
@endif
{{ $approval->notes ?: 'Sin motivo registrado' }} @if(!empty($approval->details))
Detalle: {{ $approval->details }}
@endif
{{ $statusText($approval->status) }} @if($approval->applied)
Aplicada automáticamente
@endif
{{ optional($approval->created_at)->format('d/m/Y H:i') }} {{ $approval->approver?->name ?? '—' }} @if($approval->used_at)
Usada: {{ $approval->used_at->format('d/m/Y H:i') }}
@endif
@if($approval->status === 'pending')
@csrf @method('PATCH')
@csrf @method('PATCH')
@else Atendida @endif
No hay solicitudes registradas.
{{ $requests->links() }}
@endsection