@extends('layouts/layoutMaster') @section('title', 'Perfil del proveedor') @section('vendor-style') @vite(['resources/assets/vendor/libs/select2/select2.scss']) @endsection @section('page-style') @endsection @section('vendor-script') @vite(['resources/assets/vendor/libs/select2/select2.js']) @endsection @section('content') @php $publicHandle = $profile->slug ?: 'm-xxxxxxx'; $displayName = $profile->avatarDisplayName(); $avatarInitials = $profile->avatarInitials(); $canManageProfilePhoto = $profile->canManageProfilePhoto(); $showProfilePhoto = $profile->shouldShowProfilePhoto(); $canManageProfileCover = $profile->canManageProfileCover(); $showProfileCover = $profile->shouldShowProfileCover(); $publicProfileUrl = \Illuminate\Support\Facades\Route::has('mariachi.provider.public.show') && filled($profile->slug) ? route('mariachi.provider.public.show', ['handle' => $profile->slug]) : null; $profileChecklist = [ ['label' => 'Nombre', 'done' => filled($profile->business_name)], ['label' => 'Descripcion', 'done' => filled($profile->short_description)], ['label' => 'Telefono', 'done' => filled($defaultPhoneNumber)], ['label' => 'WhatsApp', 'done' => filled($profile->whatsapp)], ['label' => 'Logo', 'done' => $showProfilePhoto], ['label' => 'Portada', 'done' => $showProfileCover], ['label' => 'Instagram', 'done' => filled($profile->instagram)], ['label' => 'Facebook', 'done' => filled($profile->facebook)], ]; $completedProfileItems = collect($profileChecklist)->where('done', true)->count(); $profileCompletion = (int) round(($completedProfileItems / max(count($profileChecklist), 1)) * 100); $mediaReadyCount = collect([ $showProfilePhoto, $showProfileCover, filled($profile->instagram), filled($profile->facebook), filled($profile->tiktok), filled($profile->youtube), ])->filter()->count(); $requiresActivation = $user->requiresActivation(); $activeSubscription = $profile->activeSubscription; $activePlan = $activeSubscription?->plan; $activationStatusMeta = match (true) { $requiresActivation => [ 'label' => 'Pendiente', 'class' => 'warning', 'title' => 'Tu acceso todavía necesita activación', 'description' => 'Primero activa la cuenta. Después eliges planes por anuncio cuando quieras publicar con visibilidad.', ], filled($activePlan?->name) => [ 'label' => 'Operativo', 'class' => 'success', 'title' => 'Tu cuenta ya puede operar con anuncios', 'description' => 'Tu acceso está activo. Los planes y upgrades se gestionan por anuncio desde el panel de publicaciones.', ], default => [ 'label' => 'Listo', 'class' => 'secondary', 'title' => 'Tu acceso está habilitado', 'description' => 'Completa el perfil y luego elige visibilidad por anuncio según cada campaña.', ], }; $verificationBaseAmount = (int) (collect($verificationPlans ?? [])->min('amount_cop') ?? 0); $verificationStatusMeta = match ((string) $profile->verification_status) { 'verified' => $profile->hasActiveVerification() ? ['label' => 'Verificado', 'class' => 'success', 'description' => 'Tu insignia está activa y ya puedes usar handle premium y mejores señales de confianza.'] : ['label' => 'Vencida', 'class' => 'warning', 'description' => 'La verificación venció. Puedes renovarla cuando quieras desde este mismo flujo.'], 'payment_pending' => ['label' => 'En revisión', 'class' => 'warning', 'description' => 'El pago y los documentos ya entraron a revisión manual.'], 'rejected' => ['label' => 'Rechazada', 'class' => 'danger', 'description' => 'La última solicitud fue rechazada. Revisa el motivo y vuelve a intentarlo.'], default => ['label' => 'Sin verificación', 'class' => 'secondary', 'description' => 'Actívala para sumar confianza, insignia y handle premium.'], }; @endphp
@if(session('status'))
{{ session('status') }}
@endif @if($errors->any())
Hay errores de validacion.
@endif
@csrf @method('PATCH')
@if($showProfileCover) Portada del perfil @else @endif Perfil del artista
@if($showProfilePhoto) Foto del proveedor @else
{{ $avatarInitials }}
@endif

Panel de identidad

{{ $displayName }}

@if($publicProfileUrl) @{{ $publicHandle }} @else @{{ $publicHandle }} @endif Actualiza foto, texto y enlaces para que el perfil convierta mejor.

Este perfil es la base para responder clientes mas rapido, mostrar confianza y publicar anuncios sin friccion.

{{ $profileCompletion }}% completo {{ $completedProfileItems }}/{{ count($profileChecklist) }} campos clave listos {{ $showProfileCover ? 'Portada activa' : 'Portada pendiente' }}
Perfil
{{ $profileCompletion }}%
Completitud para publicar y responder mejor.
Contacto
{{ filled($profile->whatsapp) ? 'OK' : 'Pend.' }}
{{ filled($profile->whatsapp) ? 'WhatsApp listo para clientes.' : 'Agrega WhatsApp para acelerar respuestas.' }}
Media
{{ $mediaReadyCount }}
Activos visuales y redes conectadas.

Cuenta y visibilidad

Controla acceso, pagos y verificación desde un solo lugar

Aquí se separa claramente tu perfil público como artista de la configuración técnica de la cuenta.

Acceso y suscripción

{{ $activationStatusMeta['title'] }}

{{ $activationStatusMeta['label'] }}

{{ $activationStatusMeta['description'] }}

Estado de la cuenta {{ $user->statusLabel() }}
Activación @if($requiresActivation) ${{ number_format((int) ($activationPlan?->amount_cop ?? $activationPayment?->amount_cop ?? 0), 0, ',', '.') }} COP @elseif($activePlan) {{ $activePlan->name }} @else Sin bloqueo @endif
Siguiente paso @if($requiresActivation) {{ $user->daysUntilActivationDeadline() !== null ? $user->daysUntilActivationDeadline().' día(s)' : 'Activar cuenta' }} @elseif($activeSubscription?->renews_at) Renueva {{ $activeSubscription->renews_at->format('Y-m-d') }} @elseif($activeSubscription?->ends_at) Vigente hasta {{ $activeSubscription->ends_at->format('Y-m-d') }} @else Elegir plan por anuncio @endif
@if($requiresActivation) Activar cuenta @else Gestionar anuncios @endif Crear anuncio

Verificación

Refuerza confianza y marca pública

{{ $verificationStatusMeta['label'] }}

{{ $verificationStatusMeta['description'] }}

Precio base ${{ number_format($verificationBaseAmount, 0, ',', '.') }} COP
Handle @{{ $publicHandle }}
Vigencia {{ $profile->verification_expires_at?->format('Y-m-d') ?: 'Sin vigencia activa' }}

Pagos recientes

Ten contexto de lo que ya moviste en la cuenta

Ver historial
@if($recentListingPayments->isEmpty() && ! $activationPayment && ! $latestVerificationPayment)

Todavía no hay movimientos recientes. Cuando actives cuenta, pagues anuncios o verificación, aparecerán aquí.

@else
@if($activationPayment)

Activación de cuenta

{{ $activationPayment->statusLabel() }} · {{ $activationPayment->reviewed_at?->format('Y-m-d H:i') ?: 'Pendiente de revisión' }}

${{ number_format((int) $activationPayment->amount_cop, 0, ',', '.') }}
@endif @if($latestVerificationPayment)

Verificación {{ $latestVerificationPayment->plan_code }}

{{ $latestVerificationPayment->statusLabel() }} · {{ $latestVerificationPayment->duration_months }} mes(es)

${{ number_format((int) $latestVerificationPayment->amount_cop, 0, ',', '.') }}
@endif @foreach($recentListingPayments as $payment)

{{ $payment->listing?->title ?: 'Anuncio' }}

{{ \Illuminate\Support\Str::headline($payment->targetPlanCode()) }} · {{ $payment->statusLabel() }}

${{ number_format($payment->chargedAmountCop(), 0, ',', '.') }}
@endforeach
@endif

Contacto rapido

Datos para que te escriban sin vueltas

Pon lo esencial primero para que editar correo, telefono y WhatsApp sea rapido y claro.

@error('phone_country_iso2')
{{ $message }}
@enderror
@error('phone_number')
{{ $message }}
@enderror

Presentacion

Cuenta quien eres en pocas lineas

Tu resumen debe servir para publicar anuncios, responder mensajes y dar claridad al instante.

Resume lo esencial del grupo en una descripcion breve, clara y util desde la primera lectura.

Redes y confianza

Conecta tus canales visibles

Agrega solo lo que ayude a validar el grupo y llevar clientes a una conversacion real.

@if($canManageProfilePhoto || $canManageProfileCover)

Imagenes

Logo y portada para que el perfil se vea serio

Sube solo lo necesario. El flujo debe sentirse simple y directo en cualquier pantalla.

@if($canManageProfilePhoto)
Cambiar foto

JPG, PNG o WEBP. Maximo 3 MB. La optimizamos a 512 x 512 para que cargue rapido.

@endif @if($canManageProfileCover)
Cambiar portada

JPG, PNG o WEBP. Maximo 5 MB. Recomendado entre 1200 y 1600 px de ancho.

@endif
@endif
@endsection