@extends('root') @section('title', 'WhatsApp Integration') @section('content')
@include('components.breadcrumb', [ 'title' => 'WhatsApp Integration', 'links' => [['url' => route('client.dashboard'), 'label' => 'Dashboard']], 'current' => 'Integration' ]) {{-- Success Banner untuk Self Service upgrade --}} @if(session('package_upgraded') || request('upgraded')) @endif {{-- Success Message dengan Detail WABA --}} @if(session('success')) @endif {{-- Error Message dengan Detail --}} @if(session('error')) @endif {{-- Meta Not Configured Warning --}} @if(!$isMetaConfigured)
Facebook Login for Business belum dikonfigurasi. Hubungi administrator untuk mengaktifkan fitur integrasi WhatsApp.
@endif
Status Integrasi

Package Type

{{ $integrationStatus['package_type_label'] }}

Integration Mode

{{ ucfirst($integrationStatus['integration_mode']) }}
{{--

Status WABA

@if($integrationStatus['waba_status'] === 'connected') Connected @else Not Connected @endif

Jumlah WABA

{{ $integrationStatus['waba_count'] }}
--}}

Billing

@if($integrationStatus['platform_handles_billing']) Dikelola Platform @else Meta Direct + Platform Margin @endif
{{-- Facebook Login for Business Card --}} @if(($oauthStatus['allowed'] ?? true) && $isMetaConfigured)
@if($integrationStatus['package_type'] === 'self_service') Self Service WhatsApp Business @else Upgrade ke Self Service @endif
@if($integrationStatus['package_type'] === 'self_service')

Anda sudah menggunakan Self Service!

{{--

Hubungkan WABA tambahan atau kelola integrasi yang sudah ada.

--}} @else

Hubungkan WhatsApp Business Account Anda melalui Facebook Login for Business.

Keuntungan Self Service:
  • Gunakan WABA milik sendiri
  • Kontrol penuh atas nomor bisnis
  • Onboarding otomatis via Meta
@endif

Semua pesan tetap dikirim via platform. Token disimpan dengan aman.

@if($integrationStatus['package_type'] !== 'self_service') {{-- Facebook Login Button (Embedded Signup) --}}

Package otomatis berubah setelah WABA terhubung

@endif
@endif {{-- Activation Status Card (Hidden as per new requirement) --}}
Status Aktivasi WhatsApp Business
{{-- Content akan diisi via JavaScript --}}
@if($integrationStatus['package_type'] === 'shared') Nomor WhatsApp (Shared Pool) @else WABA Terhubung @endif
@if($integrationStatus['package_type'] === 'self_service' && $isMetaConfigured) @endif
{{-- Package Shared: Tampilkan info shared pool --}} @if($integrationStatus['package_type'] === 'shared')
Menggunakan Shared Pool

Pesan Anda dikirim melalui nomor WhatsApp bersama yang dikelola platform. Anda tidak perlu menghubungkan WABA sendiri.

@if($isMetaConfigured) Upgrade ke Self Service @endif
{{-- Package Dedicated/Self Service: Tampilkan WABA terhubung --}} @elseif($wabas->isEmpty())
Belum ada WABA yang terhubung

@if($integrationStatus['package_type'] === 'self_service') Hubungkan WABA Anda untuk mulai mengirim pesan. @else Hubungkan WABA Anda untuk upgrade ke Self Service. @endif

@if($isMetaConfigured) @endif
@else
@foreach($wabas as $waba) @endforeach
Akun WABA Nomor WhatsApp Mode Integrasi Status Aksi
{{ $waba->account_name ?: 'WhatsApp Business' }}
ID: {{ $waba->waba_id }}
{{ $waba->phone_number ?: '-' }} @if($waba->phone_number_id)
Phone ID: {{ Str::limit($waba->phone_number_id, 20) }} @endif
@php $modeClass = match($waba->integration_mode?->value ?? 'pool') { 'oauth' => 'bg-purple', 'managed' => 'bg-success', default => 'bg-info', }; $modeLabel = match($waba->integration_mode?->value ?? 'pool') { 'oauth' => 'Self Service (OAuth)', 'managed' => 'Dedicated', default => 'Shared Pool', }; @endphp {{ $modeLabel }} @php // Use code_verification_status from raw_meta_response as primary source $codeVerificationStatus = null; $phoneStatus = null; $rawResponse = $waba->raw_meta_response ?? []; if (isset($rawResponse['phone']['code_verification_status'])) { $codeVerificationStatus = strtoupper($rawResponse['phone']['code_verification_status']); } if (isset($rawResponse['phone']['status'])) { $phoneStatus = strtoupper($rawResponse['phone']['status']); } // Determine final status based on code_verification_status if ($codeVerificationStatus === 'VERIFIED') { $finalStatus = 'verified'; $statusLabel = 'Verified'; } elseif ($codeVerificationStatus === 'UNVERIFIED') { $finalStatus = 'unverified'; $statusLabel = 'Unverified'; } elseif ($codeVerificationStatus === 'PENDING') { $finalStatus = 'pending'; $statusLabel = 'Pending'; } elseif ($phoneStatus === 'CONNECTED' || $phoneStatus === 'REGISTERED') { // If phone is connected/registered but no code_verification_status, show Registered $finalStatus = 'registered'; $statusLabel = 'Registered'; } elseif ($waba->phone_status === 'active' || $waba->phone_status === 'REGISTERED') { $finalStatus = 'registered'; $statusLabel = 'Registered'; } elseif ($waba->phone_status === 'pending' || $waba->phone_status === 'PENDING') { $finalStatus = 'pending'; $statusLabel = 'Pending'; } elseif (in_array($waba->status, ['error', 'rejected', 'banned'])) { $finalStatus = 'error'; $statusLabel = 'Error/Banned'; } elseif ($waba->status === 'syncing') { $finalStatus = 'syncing'; $statusLabel = 'Syncing...'; } elseif ($waba->status === 'active') { $finalStatus = 'active'; $statusLabel = 'Active'; } else { $finalStatus = 'pending'; $statusLabel = 'Pending'; } // Map to UI $statusClass = match($finalStatus) { 'verified', 'registered', 'active' => 'bg-success-subtle text-success', 'error' => 'bg-danger-subtle text-danger', 'syncing' => 'bg-info-subtle text-info', 'pending', 'unverified' => 'bg-warning-subtle text-warning', default => 'bg-secondary' }; $statusIcon = match($finalStatus) { 'verified', 'registered', 'active' => 'ti-circle-check', 'error' => 'ti-alert-octagon', 'syncing' => 'ti-refresh ti-spin', default => 'ti-clock' }; $statusTooltip = match($finalStatus) { 'verified' => 'Nomor WhatsApp Business sudah terverifikasi dan siap digunakan', 'registered' => 'Nomor WhatsApp Business sudah aktif dan siap digunakan', 'pending' => 'WhatsApp membutuhkan waktu untuk mengaktifkan nomor bisnis. Pesan akan tersedia setelah proses selesai.', 'unverified' => 'Nomor WhatsApp Business belum terverifikasi oleh Meta', default => '' }; @endphp {{ $statusLabel }} @if($codeVerificationStatus)
Code: {{ $codeVerificationStatus }}
@endif @if($finalStatus === 'active' && $waba->oauth_expires_at)
Expires: {{ $waba->oauth_expires_at->format('d M Y') }}
@endif @if($waba->phone_status === 'error')
Cek Meta Business Manager
@endif {{-- Webhook Status Badge --}} @if($waba->isOauth())
@if($waba->webhook_status === 'active' && $waba->is_subscribed) Webhook Active @elseif($waba->webhook_status === 'failed') Webhook Failed @elseif($waba->webhook_status === 'pending') Webhook Pending @endif
@endif
@if($waba->integration_mode?->value === 'oauth')
@if($waba->webhook_status !== 'active' || !$waba->is_subscribed) @endif
@else Dikelola Platform @endif
@if($integrationStatus['package_type'] === 'self_service')
Self Service Mode

Pesan dikirim melalui WABA Anda. Biaya dikenakan langsung oleh Meta ke Business Manager Anda.

@elseif($integrationStatus['package_type'] === 'dedicated')
Dedicated Mode

WABA khusus yang dikelola platform untuk bisnis Anda. Biaya termasuk dalam paket langganan.

@endif @endif
@if(session('oauth_wabas')) @endif @endsection @push('scripts') {{-- Facebook SDK for JavaScript --}} @endpush @push('styles') @endpush