@extends('layouts/layoutMaster') @section('title', 'Metricas Mariachi') @section('page-style') @endsection @section('content') @php $statusMap = [ 'active' => ['label' => 'Activo', 'class' => 'success'], 'draft' => ['label' => 'Borrador', 'class' => 'secondary'], 'awaiting_plan' => ['label' => 'Sin plan', 'class' => 'warning'], 'awaiting_payment' => ['label' => 'Esperando pago', 'class' => 'warning'], 'paused' => ['label' => 'Pausado', 'class' => 'danger'], ]; $usagePercent = $openDraftLimit > 0 ? min(100, (int) round(($openDraftsCount / $openDraftLimit) * 100)) : 0; @endphp
@if($planIssues !== [])
Ajustes pendientes
@foreach($planIssues as $issue) {{ $issue }} @endforeach
@endif
Clientes {{ number_format($openQuotesTotal) }} abiertas para responder Publicaciones {{ number_format((int) ($listingTotals['active'] ?? 0)) }} anuncios activos
Solicitudes

{{ number_format($quotesTotal) }}

30 días: {{ number_format($quotes30d) }}
Respuesta

{{ $responseRate }}%

{{ $pendingFirstReply }} esperando primera respuesta
Vistas

{{ number_format($viewsTotal) }}

30 días: {{ number_format($views30d) }}
Favoritos

{{ number_format($favoritesTotal) }}

30 días: {{ number_format($favorites30d) }}
@if($listings->isNotEmpty())

Tus anuncios

@foreach($listings->take(3) as $listing) @php $statusInfo = $statusMap[$listing->status] ?? ['label' => $listing->status, 'class' => 'secondary']; @endphp

{{ $listing->title }}

{{ $listing->city_name ?: 'Sin ciudad definida' }}
{{ $statusInfo['label'] }}
{{ number_format((int) $listing->views_count) }} Vistas
{{ number_format((int) $listing->favorites_count) }} Favoritos
{{ number_format((int) $listing->quotes_count) }} Solicitudes
Actualizado {{ $listing->updated_at?->diffForHumans() ?: '-' }} Editar
@endforeach
@endif
Metricas de anuncios

Datos reales tomados de tus anuncios, conversaciones, favoritos y reseñas.

@if(! $profile)

Aun no tienes perfil de mariachi. Completa tu perfil para ver metricas.

@else @if($planIssues !== [])
Tu plan actual requiere ajuste.
@endif
Borradores abiertos

{{ $openDraftLimit === 0 ? $openDraftsCount : $openDraftsCount.' / '.$openDraftLimit }}

Activos: {{ (int) ($listingTotals['active'] ?? 0) }} · En revisión: {{ number_format((int) $listings->where('review_status', \App\Models\MariachiListing::REVIEW_PENDING)->count()) }}

@if($openDraftLimit > 0)
@else Sin tope para borradores en tu paquete actual. @endif
Vistas reales

{{ number_format($viewsTotal) }}

Ultimos 30 dias: {{ number_format($views30d) }}

Favoritos reales

{{ number_format($favoritesTotal) }}

Ultimos 30 dias: {{ number_format($favorites30d) }}

Solicitudes reales

{{ number_format($quotesTotal) }}

Abiertas: {{ number_format($openQuotesTotal) }} · Ultimos 30 dias: {{ number_format($quotes30d) }}

Tasa de respuesta

{{ $responseRate }}%

Respondidas: {{ $repliedConversations }} / {{ $totalConversations }} · Pendientes primera respuesta: {{ $pendingFirstReply }}

Reseñas aprobadas

{{ number_format($approvedReviewsTotal) }}

Calificacion promedio: {{ number_format($approvedRatingAvg, 2) }} / 5

Anuncios nuevos (30d)

{{ number_format($newListings30d) }}

Periodo de analisis: ultimos 30 dias.

Estado del perfil

{{ $profile->verification_status ?: 'Sin verificar' }}

@if($profile->hasActiveVerification()) Verificación activa hasta {{ $profile->verification_expires_at?->format('Y-m-d') ?: 'nuevo aviso' }} @elseif($profile->verification_status === 'payment_pending') Verificación en revisión @else Sin verificación activa @endif

{{-- Gráfico de tendencia 30 días --}}
Tendencia últimos 30 días
Vistas y solicitudes por día
{{-- Tabla de rendimiento por anuncio --}} @if($listings->isNotEmpty())
Rendimiento por anuncio
@foreach($listings as $listing) @php $statusInfo = $statusMap[$listing->status] ?? ['label' => $listing->status, 'class' => 'secondary']; $expiresAt = $listing->currentPlanExpiresAt(); $daysLeft = $expiresAt ? (int) now()->diffInDays($expiresAt, false) : null; $expiryClass = $daysLeft !== null ? ($daysLeft <= 7 ? 'text-danger fw-semibold' : ($daysLeft <= 30 ? 'text-warning fw-semibold' : 'text-muted')) : 'text-muted'; @endphp @endforeach
Anuncio Estado Vistas Favoritos Solicitudes Calificación Vence
{{ mb_strlen($listing->title) > 45 ? mb_substr($listing->title, 0, 45).'…' : $listing->title }}
{{ $listing->city_name }}
{{ $statusInfo['label'] }} {{ number_format((int) $listing->views_count) }} {{ number_format((int) $listing->favorites_count) }} {{ number_format((int) $listing->quotes_count) }} @if((int) $listing->open_quotes_count > 0) {{ $listing->open_quotes_count }} abiertas @endif @if((int) $listing->approved_reviews_count > 0) {{ number_format((float) $listing->approved_rating_avg, 1) }} ★ ({{ $listing->approved_reviews_count }}) @else @endif @if($expiresAt) {{ $daysLeft !== null && $daysLeft <= 0 ? 'Vencido' : ($daysLeft.'d') }}
{{ $expiresAt->format('d/m/Y') }}
@else @endif
Renovar
@endif @endif
@endsection @section('page-script') @vite('resources/assets/vendor/libs/apex-charts/apexcharts.js') @endsection