@if($project->domain)
{{-- ACCIÓN PRIMARIA: entrar al admin del sitio.
Lo más usado por el Customer (90% de visitas) — botón
grande primary, no enterrado al final. --}}
@if($project->isReachable() && $project->admin_url)
{{ $project->domain }}
@if($project->isReachable())
Sitio en línea
@elseif($project->pipeline_status === \App\Models\TenantProject::STATUS_FAILED)
Provisionado pendiente — te contactamos por email
@endif
{{-- Provisioning visual: progress bar + ETA cuando aún se está
armando. Da info útil al cliente en lugar de "preparando..." vacío. --}}
@if($project->isProvisioning())
@php [$pct, $etaText] = $project->provisioning_eta; @endphp
Progreso de la Instalación
{{ $etaText }}
{{ $pct }}%
@if($pct >= 20)
Base de datos configurada y credenciales de acceso listas
@else
Configurando base de datos segura...
@endif
@if($pct >= 40)
Certificado de seguridad SSL (HTTPS) registrado
@elseif($pct >= 20)
Registrando certificado de seguridad SSL...
@else
Instalando certificado de seguridad SSL
@endif
@if($pct >= 70)
Plantilla de diseño deluxe y código clonado
@elseif($pct >= 40)
Copiando archivos del modelo deluxe...
@else
Copiando archivos del modelo deluxe
@endif
@if($pct >= 90)
Optimizaciones de velocidad y SEO aplicadas
@elseif($pct >= 70)
Aplicando optimizaciones de velocidad de carga...
@else
Aplicando optimizaciones de velocidad de carga
@endif
@if($pct >= 100)
Panel de administración en línea y listo para usar
@elseif($pct >= 90)
Creando credenciales finales del administrador...
@else
Creando credenciales finales del administrador
@endif
@endif
@else
Asignaremos un dominio una vez completado el provisioning.
@endif
{{-- 1.5 Estado de entrega — capa CD/reseller (delivery_status).
Visible solo si user puede gestionarlo (policy manageDelivery).
Editor inline: radio + textarea + Save. Sin modal. --}}
@can('manageDelivery', $project)
{{ $dLabel }}
@if($deliveryAge && !$isCompleted)
Desde hace {{ $deliveryAge->diffForHumans(null, true) }}
@elseif($isCompleted)
Sin pendientes
@endif
@if(!$isCompleted && $project->delivery_notes)
NOTAS
{{ $project->delivery_notes }}
@endif
{{-- Editor inline. Auto-abierto si tracking sin notas (te empuja a llenar). --}}
delivery_notes ? 'open' : '' }}>
{{ $isCompleted ? 'Marcar estado de entrega' : 'Editar estado' }}
@endcan
{{-- 1.6 Datos del cliente final + asesoría — solo visible para
owner/reseller (policy manageDelivery). Editor inline. --}}
@can('manageDelivery', $project)
{{-- ════════ Zona peligrosa: borrar proyecto ════════
Solo visible si la policy delete() autoriza (failed/archived/paused/required
+ owner o reseller). Active queda explicitamente protegido. --}}
@can('delete', $project)
Zona peligrosa
Borrar proyecto definitivamente
Limpia Stripe (cancela suscripción) +
DNS Hostinger + VPS HestiaCP
(cpanel user + DB + archivos) + marca Airtable
como Archived con audit trail + borra el registro local.
Sólo disponible para estados failed / archived / paused / required.
Esta acción no se puede deshacer fácilmente.
{{-- Modal de confirmación con razón obligatoria --}}