{{-- Chat Block Partial --}} {{-- Required variables: $chat (Chat model), $current (current user), $other (other user) --}} {{-- Optional variables: $projectId (for project_id hidden field) --}}

تواصل مع @if($other->isFreelancer()) {{$other?->name}} @else {{$other?->name}} @endif

@if(isset($chat) && $chat->messages->count() > 0) @php // Group messages by DATE only (Y-m-d) for date separators $messagesByDate = $chat->messages->groupBy(function ($message) { return $message->created_at->format('Y-m-d'); }); @endphp @foreach ($messagesByDate as $dateKey => $dayMessages) @php $dateCarbon = \Carbon\Carbon::parse($dateKey); $fullDateLabel = $dateCarbon->locale('ar')->translatedFormat('l، j F Y'); $daysDiff = (int) $dateCarbon->diffInDays(now(), false); if ($dateCarbon->isToday()) { $dateLabel = 'اليوم'; } elseif ($dateCarbon->isYesterday()) { $dateLabel = 'أمس'; } else { $dateLabel = 'منذ ' . $daysDiff . ' ' . ($daysDiff >= 3 && $daysDiff <= 10 ? 'أيام' : 'يوم'); } @endphp {{-- Date Separator --}}
{{ $dateLabel }}
@foreach($dayMessages as $msg) @php $sender = $msg->sender_id; $attachments = $chat->media()->where('collection_name', 'chats')->where('custom_properties->message_id', $msg->id)->get(); // Determine online status $msgUser = ($sender == getCurrentUser()->id) ? $current : $other; $msgIsOnline = false; if($msgUser && $msgUser->last_login) { try { $msgIsOnline = \Carbon\Carbon::parse($msgUser->last_login)->diffInMinutes(now()) < 10; } catch (\Exception $e) { $msgIsOnline = false; } } @endphp @if($sender == getCurrentUser()->id)
@if($current->isFreelancer()) @else @endif
@if($current->isFreelancer()) {{ $current->name }} @else {{ $current->name }} @endif {{ $msg->created_at->format('h:i A') }}
{!! format_text($msg->message) !!} @if($attachments->count() > 0)
@foreach($attachments as $media) @php $mediaExt = strtolower(pathinfo($media->file_name, PATHINFO_EXTENSION)); $isAudioMedia = str_starts_with($media->mime_type ?? '', 'audio/') || in_array($mediaExt, ['webm','ogg','mp3','m4a','wav','aac','opus']); $isImageMedia = str_starts_with($media->mime_type ?? '', 'image/') || in_array($mediaExt, ['jpg','jpeg','png','gif','webp','bmp','svg']); @endphp @if($isAudioMedia)
@elseif($isImageMedia) {{$media->file_name}} @else
{{$media->file_name}}
{{number_format($media->size / 1024, 2)}} KB
تحميل
@endif @endforeach
@endif
@else
@if($other->isFreelancer()) @else @endif
@if($other->isFreelancer()) {{ $other->name }} @else {{ $other->name }} @endif {{ $msg->created_at->format('h:i A') }}
{!! format_text($msg->message) !!} @if($attachments->count() > 0)
@foreach($attachments as $media) @php $mediaExt = strtolower(pathinfo($media->file_name, PATHINFO_EXTENSION)); $isAudioMedia = str_starts_with($media->mime_type ?? '', 'audio/') || in_array($mediaExt, ['webm','ogg','mp3','m4a','wav','aac','opus']); $isImageMedia = str_starts_with($media->mime_type ?? '', 'image/') || in_array($mediaExt, ['jpg','jpeg','png','gif','webp','bmp','svg']); @endphp @if($isAudioMedia)
@elseif($isImageMedia) {{$media->file_name}} @else
{{$media->file_name}}
{{number_format($media->size / 1024, 2)}} KB
تحميل
@endif @endforeach
@endif
@endif @endforeach @endforeach @endif
@csrf @if(isset($projectId)) @endif @if(auth()->user()->isFreelancer()) @else @endif
{{-- Chat JavaScript will be included by the parent page's @section('js-body') --}}