@extends('crm.layouts.app') @section('title', 'Appointment #' . $appointment->id) @push('scripts') @endpush @section('content')

Appointment Details

{{ $appointment->client->name ?? 'Unknown Client' }} — {{ $appointment->scheduled_at->format('l, F j, Y') }}

@if (session('success'))

{{ session('success') }}

@endif

Appointment Information

Client
@if($appointment->client) {{ $appointment->client->name }} @else Unassigned @endif
Status
@php $statusColors = [ 'scheduled' => 'bg-blue-50 text-blue-700 ring-blue-600/20', 'confirmed' => 'bg-indigo-50 text-indigo-700 ring-indigo-600/20', 'in_progress' => 'bg-yellow-50 text-yellow-800 ring-yellow-600/20', 'completed' => 'bg-green-50 text-green-700 ring-green-600/20', 'cancelled' => 'bg-red-50 text-red-700 ring-red-600/20', 'no_show' => 'bg-gray-50 text-gray-600 ring-gray-500/10', ]; $color = $statusColors[$appointment->status] ?? 'bg-gray-50 text-gray-600 ring-gray-500/10'; @endphp {{ str_replace('_', ' ', ucfirst($appointment->status)) }}
Artist
@if($appointment->artist)
{{ strtoupper(substr($appointment->artist->name, 0, 1)) }} {{ $appointment->artist->name }}
@else Not assigned @endif
Scheduled Date
{{ $appointment->scheduled_at->format('l, F j, Y') }}
Time
{{ $appointment->scheduled_at->format('g:i A') }}
@if($appointment->notes)

Notes

{{ $appointment->notes }}

@endif

Images

{{ $appointment->images->count() }} {{ Str::plural('photo', $appointment->images->count()) }}
@if($appointment->images->count() > 0)
    @foreach ($appointment->images as $image)
  • {{ ucfirst($image->type) }} image

    {{ ucfirst($image->type) }}

    {{ $image->created_at->format('M j, Y') }}

    @csrf @method('DELETE')
  • @endforeach
@else

No images

Upload photos from the edit page.

@endif
@php $bodyParts = $appointment->bodyParts; @endphp

Body Mapping

@if($bodyParts->count() > 0) {{ $bodyParts->count() }} {{ Str::plural('zone', $bodyParts->count()) }} @endif

Loading 3D model...

Drag to rotate · Scroll to zoom
@if($bodyParts->count() > 0)
@foreach($bodyParts as $part)

{{ $part->label }}

@if($part->pivot->notes)

{{ $part->pivot->notes }}

@endif
@php $zoneColors = [ 'todo' => 'bg-gray-50 text-gray-600 ring-gray-500/10', 'in_progress' => 'bg-yellow-50 text-yellow-800 ring-yellow-600/20', 'completed' => 'bg-green-50 text-green-700 ring-green-600/20', 'healed' => 'bg-blue-50 text-blue-700 ring-blue-600/20', ]; $zoneColor = $zoneColors[$part->pivot->status] ?? 'bg-gray-50 text-gray-600 ring-gray-500/10'; @endphp {{ str_replace('_', ' ', ucfirst($part->pivot->status)) }}
@if($part->pivot->photo_path)
{{ $part->label }}
@endif
@endforeach
@else

No body zones mapped yet. Add zones from the edit page.

@endif

Financials

Price
${{ number_format($appointment->price, 2) }}
@if($appointment->tip_amount > 0)
Tip
${{ number_format($appointment->tip_amount, 2) }}
@endif @if($appointment->earnings > 0)
Earnings
${{ number_format($appointment->earnings, 2) }}
@endif
Total
${{ number_format($appointment->price + ($appointment->tip_amount ?? 0), 2) }}
@if($appointment->client)

Client

{{ strtoupper(substr($appointment->client->name, 0, 1)) }}

{{ $appointment->client->name }}

@if($appointment->client->email)

{{ $appointment->client->email }}

@endif
@if($appointment->client->phone)
{{ $appointment->client->phone }}
@endif
@endif @php $consentForm = $appointment->images->firstWhere('type', 'consent_form'); $consentSignature = $appointment->consentSignature; @endphp

Consent

@if($consentSignature)
Signed on {{ $consentSignature->created_at->format('M j, Y') }}
@elseif($consentForm) View Consent Form @else
No consent form on file
@endif
@if($appointment->deposit)

Deposit

Amount
${{ number_format($appointment->deposit->amount, 2) }}
Status
{{ ucfirst($appointment->deposit->status) }}
@endif
@endsection