WhatsApp Messages

Kelola pesan WhatsApp untuk klien dan grup

@php $totalMessages = $messages->total(); $outboundCount = \App\Models\Message::count(); $inboundCount = \App\Models\InboundMessage::count(); $unreadCount = \App\Models\InboundMessage::where('is_read', false)->count(); @endphp

Total Pesan

{{ number_format($totalMessages) }}

Terkirim

{{ number_format($outboundCount) }}

Diterima

{{ number_format($inboundCount) }}

Belum Dibaca

{{ number_format($unreadCount) }}

Filter & Pencarian

@if (session()->has('message')) @endif @if (session()->has('error')) @endif
@forelse($messages as $message)
@if(isset($message->direction) && $message->direction === 'inbound')
@else
@endif
@if(isset($message->direction) && $message->direction === 'inbound')

{{ $message->sender_name ?? 'Unknown Contact' }}

{{ $message->sender_phone }}

@else

{{ $message->title }}

Dibuat oleh sistem

@endif
@if(isset($message->direction) && $message->direction === 'inbound') Masuk @else Keluar @endif
@if(isset($message->direction) && $message->direction === 'inbound') @if($message->message_body)

{{ $message->message_body }}

@endif @else @if($message->content)

{{ $message->content }}

@endif @endif
@php $msgType = isset($message->direction) && $message->direction === 'inbound' ? ($message->is_group ? 'group' : 'personal') : $message->type; @endphp @if($msgType === 'personal') Personal @else Grup @endif @if(isset($message->direction) && $message->direction === 'inbound') @php $typeInfo = match($message->message_type) { 'text' => ['icon' => '📝', 'label' => 'Teks', 'color' => 'gray'], 'image' => ['icon' => '🖼️', 'label' => 'Gambar', 'color' => 'pink'], 'video' => ['icon' => '🎥', 'label' => 'Video', 'color' => 'red'], 'document' => ['icon' => '📄', 'label' => 'Dokumen', 'color' => 'yellow'], 'audio' => ['icon' => '🎵', 'label' => 'Audio', 'color' => 'indigo'], default => ['icon' => '📄', 'label' => ucfirst($message->message_type), 'color' => 'gray'], }; @endphp {{ $typeInfo['icon'] }} {{ $typeInfo['label'] }} @else {!! $message->message_type_icon !!} {{ ucfirst($message->message_type) }} @endif @if(!isset($message->direction) || $message->direction !== 'inbound') @if($message->type === 'personal') {{ $message->phone }} @else @php $groupMatch = $whatsappGroups->firstWhere('group_id', $message->group_id); @endphp {{ $groupMatch?->name ?? 'Grup' }} @endif @endif @if(isset($message->direction) && $message->direction === 'inbound') {{ optional($message->received_at)->format('d M Y H:i') ?? $message->created_at->format('d M Y H:i') }} @else {{ $message->created_at->format('d M Y H:i') }} @endif
@if(isset($message->direction) && $message->direction === 'inbound') @if($message->is_read) Dibaca @else Belum Dibaca @endif @else {!! $message->status_badge !!} @endif @if(isset($message->direction) && $message->direction === 'inbound') @else
@endif
@empty

Belum Ada Pesan

Mulai kirim pesan WhatsApp ke klien atau grup Anda

@endforelse
@if($messages->hasPages())
{{ $messages->links() }}
@endif @if($showModal)
@if($modalMode === 'view')

Detail Pesan Keluar

Informasi lengkap pesan terkirim

@elseif($modalMode === 'view-inbound')

Pesan Masuk

Detail pesan yang diterima

@elseif($modalMode === 'edit')

Edit Pesan

Ubah informasi pesan

@else

Pesan Baru

Kirim pesan WhatsApp

@endif
@if($modalMode === 'view' && $selectedMessage)

{{ $selectedMessage->title }}

@if($selectedMessage->type === 'personal') Personal @else Grup @endif {!! $selectedMessage->message_type_icon !!} {{ ucfirst($selectedMessage->message_type) }}
{!! $selectedMessage->status_badge !!}
@if($selectedMessage->type === 'personal') @else @endif
Penerima
{{ $selectedMessage->type === 'personal' ? 'Personal' : 'Grup' }}
@if($selectedMessage->type === 'personal') @php // Try to get contact name from database $contact = \App\Models\ContactPerson::where('whatsapp', 'like', '%' . substr($selectedMessage->phone, -10) . '%')->first(); $displayName = $contact ? $contact->name : null; @endphp @if($displayName)

{{ $displayName }}

@if($contact && $contact->client)

{{ $contact->client->name }}

@endif
@endif
@php // Format phone number: +62 812-3456-7890 $phone = $selectedMessage->phone; if (strlen($phone) >= 10) { $formatted = '+' . substr($phone, 0, 2) . ' ' . substr($phone, 2, 3) . '-' . substr($phone, 5, 4) . '-' . substr($phone, 9); echo $formatted; } else { echo $phone; } @endphp
@else @php $group = $whatsappGroups->firstWhere('group_id', $selectedMessage->group_id); @endphp @if($group)

{{ $group->name }}

@if($group->description)

{{ $group->description }}

@endif
{{ $group->participant_count ?? 'Banyak' }} anggota
@else

Grup WhatsApp

ID: {{ $selectedMessage->group_id }}

@endif @endif
@if($selectedMessage->content)
{{ $selectedMessage->message_type === 'text' ? 'Isi Pesan' : 'Caption' }}

{{ $selectedMessage->content }}

@endif @if($selectedMessage->media_url)
Media
@if($selectedMessage->message_type === 'image') Image @elseif($selectedMessage->message_type === 'video') @else {{ $selectedMessage->media_filename }} @endif
@endif
@if($selectedMessage->scheduled_at)
Dijadwalkan

{{ $selectedMessage->scheduled_at->format('d M Y, H:i') }}

@endif @if($selectedMessage->sent_at)
Terkirim

{{ $selectedMessage->sent_at->format('d M Y, H:i') }}

@endif @if(!$selectedMessage->sent_at && !$selectedMessage->scheduled_at)
Dibuat

{{ $selectedMessage->created_at->format('d M Y, H:i') }}

@endif
@if($selectedMessage->error_message)
Terjadi Kesalahan

{{ $selectedMessage->error_message }}

@endif
@elseif($modalMode === 'view-inbound' && $selectedMessage)

{{ $selectedMessage->sender_name ?? 'Kontak Tidak Dikenal' }}

{{ $selectedMessage->sender_phone }}
@if($selectedMessage->is_read) Dibaca @else Belum Dibaca @endif
@if($selectedMessage->is_group) Grup @else Personal @endif @php $typeInfo = match($selectedMessage->message_type) { 'text' => ['icon' => '📝', 'label' => 'Teks'], 'image' => ['icon' => '🖼️', 'label' => 'Gambar'], 'video' => ['icon' => '🎥', 'label' => 'Video'], 'document' => ['icon' => '📄', 'label' => 'Dokumen'], 'audio' => ['icon' => '🎵', 'label' => 'Audio'], default => ['icon' => '📄', 'label' => ucfirst($selectedMessage->message_type)], }; @endphp {{ $typeInfo['icon'] }} {{ $typeInfo['label'] }} @if($selectedMessage->is_group && $selectedMessage->group_name) {{ $selectedMessage->group_name }} @endif
@if($selectedMessage->message_body)
Isi Pesan

{{ $selectedMessage->message_body }}

@else

Tidak ada konten teks

@endif @if($selectedMessage->media_url)
Media
@if($selectedMessage->message_type === 'image') Image @elseif($selectedMessage->message_type === 'video') @else {{ $selectedMessage->media_filename ?? 'Download File' }} @endif
@endif
Diterima

{{ $selectedMessage->received_at->format('d M Y, H:i:s') }}

@if(!$selectedMessage->is_read) @endif
@else
@error('title') {{ $message }} @enderror
@error('type') {{ $message }} @enderror
@error('message_type') {{ $message }} @enderror
@if($type === 'personal')
@error('contact_id') {{ $message }} @enderror

@if($contact_id) Nomor terisi otomatis dari contact yang dipilih. Untuk input manual, pilih "-- Pilih Contact atau Input Manual --" di dropdown. @else Pilih contact dari dropdown atau input manual dengan format 62812xxxxxx @endif

@error('phone') {{ $message }} @enderror
@else

Pastikan Group ID sesuai (contoh JID: 120363xxxx@g.us).

@error('group_id') {{ $message }} @enderror
@endif @if($message_type !== 'text')
@error('media_file') {{ $message }} @enderror @if ($media_file)
@if($message_type === 'image') @else

File ready: {{ $media_file->getClientOriginalName() }}

@endif
@endif @if($media_url && $modalMode === 'edit')
Current file will be replaced if you upload a new one
@endif
@endif
@error('content') {{ $message }} @enderror
@if(!$send_now)
@error('scheduled_at') {{ $message }} @enderror
@endif
@endif
@endif