@if(session('success'))
{{ session('success') }}
@endif
Client Profile & Project Space

{{ $client->project_name }}

{{ $client->client_name }} {{ $client->company_name ? "({$client->company_name})" : "" }}
{{ $client->client_email }}
@if($client->client_phone)
{{ $client->client_phone }}
@endif
Lead in Charge: {{ $client->responsibleUser->name ?? 'Unassigned' }}
@if($groupedCallNotes->isEmpty())
📝

No Previous Calls Recorded Yet

When you conduct meetings with this client, AI will transcribe the audio, detect expressions, convert discussion into actionable tasks, and archive them date-wise here.

@else @foreach($groupedCallNotes as $dateKey => $notes)
📅 {{ \Carbon\Carbon::parse($dateKey)->format('F j, Y') }}
{{ $notes->count() }} {{ $notes->count() === 1 ? 'call' : 'calls' }}
@foreach($notes as $note) @php $noteSentiment = strtolower($note->detected_sentiment ?? 'neutral'); $noteBadgeClass = match($noteSentiment) { 'happy' => 'emotion-happy', 'sad' => 'emotion-sad', 'angry' => 'emotion-angry', default => 'emotion-neutral', }; $noteEmoji = match($noteSentiment) { 'happy' => '😊 Happy / Satisfied', 'sad' => '😟 Concerned / Sad', 'angry' => '😡 Frustrated / Angry', default => '😐 Neutral / Professional', }; $todos = $note->todo_items ?? []; if (empty($todos) && !empty($note->action_items)) { $todos = $note->action_items; } @endphp
{{ $note->meeting->title ?? 'Client Call Session' }}
🕒 {{ $note->created_at ? $note->created_at->format('h:i A') : '' }} 🎙️ Host: {{ $note->creator->name ?? 'SingleLogin Host' }} @if($note->emailed_at) ✉️ MoM Emailed ({{ $note->emailed_at->format('M d, h:i A') }}) @endif
@if($noteSentiment === 'angry' && $canViewAngry) @endif
Executive Summary
{{ $note->summary ?? 'Meeting completed with deliverables walkthrough and milestone planning.' }}
📋 Actionable Tasks Converted from Meeting ({{ count($todos) }})
@if(empty($todos))
No actionable tasks logged for this call yet.
@else @foreach($todos as $todo) @php $todoId = $todo['id'] ?? $loop->iteration; $isCompleted = (bool)($todo['completed'] ?? false); $priority = $todo['priority'] ?? 'Medium'; @endphp
{{ $todo['task'] ?? '' }}
👤 {{ $todo['owner'] ?? 'Assigned Lead' }} {{ $priority }} Priority 📅 Due: {{ $todo['deadline'] ?? 'TBD' }}
@endforeach @endif
@if(!empty($note->action_items) && count($note->action_items) > 0)
Action Items & Deliverables
@foreach($note->action_items as $act) @endforeach
Task Owner Deadline Status
{{ is_array($act) ? ($act['task'] ?? json_encode($act)) : $act }} {{ is_array($act) ? ($act['owner'] ?? 'Team') : 'Team' }} {{ is_array($act) ? ($act['deadline'] ?? '-') : '-' }} {{ is_array($act) ? ($act['status'] ?? 'Pending') : 'Pending' }}
@endif @if(!empty($note->key_decisions) && count($note->key_decisions) > 0)
Key Decisions Made
    @foreach($note->key_decisions as $dec)
  • {{ is_array($dec) ? ($dec['decision'] ?? json_encode($dec)) : $dec }}
  • @endforeach
@endif
📄 View Complete Minutes of Meeting (MoM)
{!! nl2br(e($note->mom_content)) !!}
@if($note->raw_transcript)
🎙️ View Spoken Call Speech Transcript
{!! nl2br(e($note->raw_transcript)) !!}
@endif @php $hasRecording = !empty($note->recording_path) || !empty($note->recordings) || (!empty($note->meeting) && (!empty($note->meeting->recording_path) || !empty($note->meeting->recordings))); $recPath = $note->recording_path ?? ($note->meeting->recording_path ?? null); if (!$recPath && !empty($note->recordings)) { $firstRec = $note->recordings[0]; $recPath = is_array($firstRec) ? ($firstRec['url'] ?? $firstRec['full_url'] ?? null) : $firstRec; } if (!$recPath && !empty($note->meeting->recordings)) { $firstRec = $note->meeting->recordings[0]; $recPath = is_array($firstRec) ? ($firstRec['url'] ?? $firstRec['full_url'] ?? null) : $firstRec; } @endphp @if($hasRecording && $recPath)
🎥
Video Call Recording
High-fidelity WebRTC meeting recording
📥 Download Video
@endif
@endforeach
@endforeach @endif
@if($client->meetings->isEmpty())

No Upcoming Meetings Scheduled

Schedule a future call or launch an instant video meeting room.

@else
@foreach($client->meetings as $meeting) @php $meetingHasRec = !empty($meeting->recording_path) || !empty($meeting->recordings); $meetingRecPath = $meeting->recording_path; if (!$meetingRecPath && !empty($meeting->recordings)) { $firstRec = $meeting->recordings[0]; $meetingRecPath = is_array($firstRec) ? ($firstRec['url'] ?? $firstRec['full_url'] ?? null) : $firstRec; } @endphp
{{ $meeting->meeting_type === 'instant' ? '⚡ Instant' : '📅 Scheduled' }} • {{ $meeting->status }} @if($meetingHasRec) 🎥 Recording Available @endif
{{ $meeting->title }}
@if($meeting->scheduled_at)
🕒 {{ $meeting->scheduled_at->format('M d, Y - h:i A') }} ({{ $meeting->duration_minutes }}m)
@else
🕒 Created: {{ $meeting->created_at->format('M d, Y - h:i A') }}
@endif
👤 Host: {{ $meeting->host->name ?? 'SingleLogin Host' }}
@if(!empty($meeting->client_emails))
✉️ Client Invites: {{ count($meeting->client_emails) }}
@endif
@if($meeting->agenda)
Agenda: {{ $meeting->agenda }}
@endif
@if($meetingHasRec && $meetingRecPath) 📥 Video @endif 👉 Join Room
@endforeach
@endif

Project Scope & Specifications

{{ $client->project_details ?: 'No detailed scope description provided.' }}

Assigned Internal Project Team

Responsible Project Lead
{{ $client->responsibleUser->name ?? 'Unassigned' }}
{{ $client->responsibleUser->email ?? '' }}
@foreach($client->getTeamMembers() as $member)
Team Member
{{ $member->name }}
{{ $member->email }}
@endforeach