@extends('layouts.admin')

@section('title', 'Detail Lamaran')

@section('content')
<div class="max-w-4xl">
    {{-- Applicant Info --}}
    <div class="bg-white rounded-xl border border-gray-100 p-6 mb-6">
        <h3 class="text-lg font-semibold text-gray-800 mb-4">Data Pelamar</h3>
        <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
            <div>
                <span class="text-sm text-gray-500">Nama</span>
                <p class="font-medium text-gray-800">{{ $application->applicant->name }}</p>
            </div>
            <div>
                <span class="text-sm text-gray-500">Email</span>
                <p class="font-medium text-gray-800">{{ $application->applicant->email }}</p>
            </div>
            <div>
                <span class="text-sm text-gray-500">WhatsApp</span>
                <p class="font-medium text-gray-800">{{ $application->applicant->whatsapp }}</p>
            </div>
            <div>
                <span class="text-sm text-gray-500">Pendidikan</span>
                <p class="font-medium text-gray-800">{{ $application->applicant->education }}</p>
            </div>
            <div>
                <span class="text-sm text-gray-500">Jenis Kelamin</span>
                <p class="font-medium text-gray-800">{{ $application->applicant->gender ?? '-' }}</p>
            </div>
            <div>
                <span class="text-sm text-gray-500">Tanggal Lahir</span>
                <p class="font-medium text-gray-800">{{ $application->applicant->birth_date ? $application->applicant->birth_date->format('d M Y') : '-' }}</p>
            </div>
        </div>

        {{-- Documents Download --}}
        @if(count($application->document_paths) > 0)
        <div class="mt-4 pt-4 border-t border-gray-100">
            <p class="text-xs font-medium text-gray-500 mb-2">Dokumen Pelamar</p>
            <div class="flex flex-wrap gap-2">
                @foreach($application->document_paths as $i => $docPath)
                <a href="{{ asset('storage/' . $docPath) }}" target="_blank"
                    class="inline-flex items-center bg-blue-50 text-blue-600 px-4 py-2 rounded-lg text-sm font-medium hover:outline hover:outline-2 hover:outline-blue-300">
                    <svg class="w-4 h-4 mr-1.5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg>
                    Dokumen {{ $i + 1 }}
                </a>
                @endforeach
            </div>
        </div>
        @endif
    </div>

    {{-- Job Info --}}
    <div class="bg-white rounded-xl border border-gray-100 p-6 mb-6">
        <h3 class="text-lg font-semibold text-gray-800 mb-4">Lowongan</h3>
        <div class="flex items-center space-x-4 flex-wrap gap-2">
            @if($application->jobListing->company_logo)
            <img src="{{ asset('storage/' . $application->jobListing->company_logo) }}" class="w-12 h-12 object-contain rounded-lg border">
            @endif
            <div>
                <p class="font-medium text-gray-800">{{ $application->jobListing->title }}</p>
                <p class="text-sm text-gray-500">{{ $application->jobListing->company }} — {{ $application->jobListing->location }}</p>
                <p class="text-sm text-green-600 font-medium mt-1">{{ $application->jobListing->formatted_salary }}</p>
            </div>
        </div>
    </div>

    {{-- Status & Dynamic Stage Progress --}}
    <div class="bg-white rounded-xl border border-gray-100 p-6 mb-6">
        <h3 class="text-lg font-semibold text-gray-800 mb-4">Status & Tahapan</h3>

        <div class="flex items-center space-x-4 mb-6">
            <span class="inline-block px-4 py-2 text-sm font-medium rounded-full {{ $application->status_badge_class }}">
                {{ $application->status_label }}
            </span>
            <span class="text-sm text-gray-400">
                Progress: {{ $application->progress['current'] }}/{{ $application->progress['total'] }} ({{ $application->progress['percentage'] }}%)
            </span>
        </div>

        {{-- Dynamic Stage Flow --}}
        @php $stages = $application->jobListing->stages; @endphp
        @if($stages->count() > 0)
        <div class="flex items-center flex-wrap gap-2 mb-6">
            <div class="flex items-center space-x-2">
                <div class="px-3 py-1.5 text-xs font-medium rounded-full {{ $application->status !== 'applied' ? 'bg-green-100 text-green-700' : 'bg-blue-100 text-blue-700 ring-2 ring-blue-300' }}">
                    Lamaran Masuk
                </div>
                <span class="text-gray-300">&rarr;</span>
            </div>
            @foreach($stages as $stage)
            @php
                $passedStatus = 'stage' . $stage->stage_number . '_passed';
                $filledStatus = 'stage' . $stage->stage_number . '_form_filled';
                $isPassed = false;
                $isCurrent = false;

                if ($application->status === 'accepted' || $application->status === 'rejected') {
                    $isPassed = true;
                } elseif (preg_match('/^stage(\d+)/', $application->status, $m)) {
                    $currentNum = (int)$m[1];
                    if ($currentNum > $stage->stage_number) {
                        $isPassed = true;
                    } elseif ($currentNum == $stage->stage_number) {
                        $isCurrent = true;
                        $isPassed = str_contains($application->status, '_form_filled');
                    }
                }
            @endphp
            <div class="flex items-center space-x-2">
                <div class="px-3 py-1.5 text-xs font-medium rounded-full
                    {{ $isPassed ? 'bg-green-100 text-green-700' : ($isCurrent ? 'bg-yellow-100 text-yellow-700 ring-2 ring-yellow-300' : 'bg-gray-100 text-gray-400') }}">
                    {{ $stage->stage_number }}. {{ $stage->name }}
                    @if($isCurrent && str_contains($application->status, '_passed'))
                        <span class="text-[10px]">(menunggu form)</span>
                    @elseif($isCurrent && str_contains($application->status, '_form_filled'))
                        <span class="text-[10px]">(form terisi)</span>
                    @endif
                </div>
                <span class="text-gray-300">&rarr;</span>
            </div>
            @endforeach
            <div class="px-3 py-1.5 text-xs font-medium rounded-full
                {{ $application->status === 'accepted' ? 'bg-green-100 text-green-700 ring-2 ring-green-300' : ($application->status === 'rejected' ? 'bg-red-100 text-red-700 ring-2 ring-red-300' : 'bg-gray-100 text-gray-400') }}">
                {{ $application->status === 'accepted' ? 'Diterima' : ($application->status === 'rejected' ? 'Ditolak' : 'Keputusan Akhir') }}
            </div>
        </div>
        @endif

        {{-- Timeline --}}
        <div class="space-y-3 text-sm">
            <div class="flex items-center space-x-3">
                <span class="w-3 h-3 rounded-full bg-green-500"></span>
                <span>Melamar: {{ $application->applied_at?->format('d M Y H:i') }}</span>
            </div>
            @foreach($application->stageResponses->sortBy(fn($r) => $r->jobStage->stage_number ?? 0) as $response)
            <div class="flex items-center space-x-3">
                <span class="w-3 h-3 rounded-full bg-indigo-500"></span>
                <span>Form {{ $response->jobStage->name ?? 'Tahap' }} diisi: {{ $response->submitted_at?->format('d M Y H:i') ?? $response->created_at->format('d M Y H:i') }}</span>
            </div>
            @endforeach
            @if($application->final_decision_at)
            <div class="flex items-center space-x-3">
                <span class="w-3 h-3 rounded-full {{ $application->status === 'accepted' ? 'bg-green-500' : 'bg-red-500' }}"></span>
                <span>Keputusan Akhir: {{ $application->final_decision_at->format('d M Y H:i') }}</span>
            </div>
            @endif
        </div>

        {{-- Admin Action Panel --}}
        @if(!in_array($application->status, ['accepted', 'rejected']))
        <div class="mt-6 pt-6 border-t border-gray-100">
            <h4 class="text-sm font-semibold text-gray-700 mb-4">Kontrol Admin</h4>

            @php
                // Determine what the next logical action is
                $currentStatus = $application->status;
                $nextAction = null;
                $nextLabel = null;
                $nextStageNum = null;

                if ($currentStatus === 'applied') {
                    $firstStage = $stages->first();
                    if ($firstStage) {
                        $nextAction = 'stage' . $firstStage->stage_number . '_passed';
                        $nextLabel = 'Loloskan ke ' . $firstStage->name;
                        $nextStageNum = $firstStage->stage_number;
                    }
                } elseif (preg_match('/^stage(\d+)_form_filled$/', $currentStatus, $m)) {
                    $currentStageNum = (int) $m[1];
                    $nextStage = $stages->first(fn($s) => $s->stage_number > $currentStageNum);
                    if ($nextStage) {
                        $nextAction = 'stage' . $nextStage->stage_number . '_passed';
                        $nextLabel = 'Loloskan ke ' . $nextStage->name;
                        $nextStageNum = $nextStage->stage_number;
                    } else {
                        // Last stage form filled, next is final decision
                        $nextAction = null; // will show accept/reject buttons
                    }
                } elseif (preg_match('/^stage(\d+)_passed$/', $currentStatus, $m)) {
                    // Waiting for form, can't advance yet
                    $currentStageNum = (int) $m[1];
                    $currentStage = $stages->first(fn($s) => $s->stage_number === $currentStageNum);
                }
            @endphp

            {{-- Current Status Explanation --}}
            <div class="bg-gray-50 rounded-lg p-4 mb-4">
                @if($currentStatus === 'applied')
                    <p class="text-sm text-gray-600"><span class="font-medium">Status:</span> Pelamar baru mendaftar. Anda bisa meloloskan ke tahap pertama.</p>
                @elseif(preg_match('/^stage(\d+)_passed$/', $currentStatus, $m))
                    @php
                        $stNum = (int) $m[1];
                        $stName = $stages->first(fn($s) => $s->stage_number === $stNum)?->name ?? "Tahap {$stNum}";
                        $hasForm = !empty($stages->first(fn($s) => $s->stage_number === $stNum)?->form_fields);
                    @endphp
                    @if($hasForm)
                        <p class="text-sm text-yellow-600"><span class="font-medium">Menunggu:</span> Pelamar belum mengisi formulir <strong>{{ $stName }}</strong>. Belum bisa diloloskan ke tahap berikutnya.</p>
                    @else
                        <p class="text-sm text-gray-600"><span class="font-medium">Status:</span> Pelamar lolos {{ $stName }} (tanpa form). Anda bisa meloloskan ke tahap berikutnya.</p>
                    @endif
                @elseif(preg_match('/^stage(\d+)_form_filled$/', $currentStatus, $m))
                    @php
                        $stNum = (int) $m[1];
                        $stName = $stages->first(fn($s) => $s->stage_number === $stNum)?->name ?? "Tahap {$stNum}";
                    @endphp
                    <p class="text-sm text-green-600"><span class="font-medium">Formulir {{ $stName }} sudah terisi.</span> Anda bisa meloloskan ke tahap berikutnya atau menolak pelamar.</p>
                @endif
            </div>

            {{-- Quick Action Buttons --}}
            <div class="flex flex-wrap gap-3 mb-4">
                @if($nextAction)
                    {{-- Loloskan ke tahap berikutnya --}}
                    <form action="{{ route('admin.applications.status', $application) }}" method="POST" class="inline">
                        @csrf @method('PATCH')
                        <input type="hidden" name="status" value="{{ $nextAction }}">
                        <button type="submit" class="bg-green-600 text-white px-5 py-2.5 rounded-lg text-sm font-medium hover:outline hover:outline-2 hover:outline-green-800"
                            onclick="return confirm('Loloskan pelamar ini? Notifikasi akan langsung dikirim via Email & WhatsApp.')">
                            {{ $nextLabel }}
                        </button>
                    </form>
                @endif

                @if($currentStatus !== 'applied' && preg_match('/^stage(\d+)_passed$/', $currentStatus) && !empty($stages->first(fn($s) => $s->stage_number === (int) preg_replace('/\D/', '', $currentStatus))?->form_fields))
                    {{-- Cannot advance while waiting for form --}}
                @else
                    {{-- Accept/Reject buttons --}}
                    @if(!$nextAction || preg_match('/^stage(\d+)_form_filled$/', $currentStatus))
                        <form action="{{ route('admin.applications.status', $application) }}" method="POST" class="inline">
                            @csrf @method('PATCH')
                            <input type="hidden" name="status" value="accepted">
                            <button type="submit" class="bg-emerald-600 text-white px-5 py-2.5 rounded-lg text-sm font-medium hover:outline hover:outline-2 hover:outline-emerald-800"
                                onclick="return confirm('TERIMA pelamar ini? Notifikasi akan langsung dikirim.')">
                                Terima
                            </button>
                        </form>
                    @endif

                    <form action="{{ route('admin.applications.status', $application) }}" method="POST" class="inline">
                        @csrf @method('PATCH')
                        <input type="hidden" name="status" value="rejected">
                        <button type="submit" class="bg-red-600 text-white px-5 py-2.5 rounded-lg text-sm font-medium hover:outline hover:outline-2 hover:outline-red-800"
                            onclick="return confirm('TOLAK pelamar ini? Notifikasi akan langsung dikirim.')">
                            Tolak
                        </button>
                    </form>
                @endif
            </div>

            {{-- Advanced: Manual Status Override --}}
            <details class="mt-4">
                <summary class="text-xs text-gray-400 cursor-pointer hover:text-gray-600">Ubah status manual (advanced)</summary>
                <div class="mt-3 p-4 bg-gray-50 rounded-lg">
                    <form action="{{ route('admin.applications.status', $application) }}" method="POST">
                        @csrf @method('PATCH')
                        <div class="flex flex-col sm:flex-row sm:items-start gap-3">
                            <div class="flex-1">
                                <select name="status" class="w-full border border-gray-200 rounded-lg px-4 py-2.5 text-sm focus:ring-2 focus:ring-indigo-500 outline-none">
                                    @foreach($availableStatuses as $st)
                                    <option value="{{ $st['value'] }}" {{ $application->status === $st['value'] ? 'selected' : '' }}>
                                        {{ $st['label'] }}
                                    </option>
                                    @endforeach
                                </select>
                            </div>
                            <button type="submit" class="bg-indigo-600 text-white px-5 py-2.5 rounded-lg text-sm font-medium hover:outline hover:outline-2 hover:outline-indigo-800 whitespace-nowrap"
                                onclick="return confirm('Yakin mengubah status? Notifikasi akan langsung dikirim ke pelamar.')">
                                Update & Kirim Notifikasi
                            </button>
                        </div>
                        <div class="mt-3">
                            <label class="block text-xs text-gray-500 mb-1">Catatan Admin (opsional)</label>
                            <textarea name="admin_notes" rows="2" placeholder="Catatan internal..."
                                class="w-full border border-gray-200 rounded-lg px-3 py-2 text-sm focus:ring-2 focus:ring-indigo-500 outline-none">{{ $application->admin_notes }}</textarea>
                        </div>
                    </form>
                </div>
            </details>
        </div>
        @else
        {{-- Final status reached --}}
        <div class="mt-6 pt-6 border-t border-gray-100">
            <div class="rounded-lg p-4 {{ $application->status === 'accepted' ? 'bg-green-50' : 'bg-red-50' }}">
                <p class="text-sm font-medium {{ $application->status === 'accepted' ? 'text-green-700' : 'text-red-700' }}">
                    Pelamar ini telah {{ $application->status === 'accepted' ? 'DITERIMA' : 'DITOLAK' }}
                    pada {{ $application->final_decision_at?->format('d M Y H:i') }}.
                </p>
            </div>

            @if($application->status === 'rejected')
            {{-- Check if there's a pending rejection notification (pre-fetched from controller) --}}

            <div class="bg-yellow-50 border border-yellow-200 rounded-lg p-4 mt-3">
                <p class="text-sm text-yellow-800 font-medium mb-1">Status ini ditetapkan otomatis oleh sistem setelah semua tahap selesai.</p>
                @if($pendingRejectNotif)
                <p class="text-sm text-yellow-700">Notifikasi gagal dijadwalkan pada: <strong>{{ \Carbon\Carbon::parse($pendingRejectNotif->scheduled_at)->format('d M Y H:i') }}</strong></p>
                <p class="text-sm text-yellow-700 mt-1">Jika pelamar ini <strong>lolos/diterima</strong>, ubah status ke "Diterima" sebelum notifikasi gagal terkirim. Notifikasi gagal akan otomatis dibatalkan.</p>
                @else
                <p class="text-sm text-yellow-700">Jika pelamar ini <strong>lolos/diterima</strong>, ubah status di bawah ini.</p>
                @endif
            </div>

            {{-- Quick accept button --}}
            <div class="flex flex-wrap gap-3 mt-3">
                <form action="{{ route('admin.applications.status', $application) }}" method="POST" class="inline">
                    @csrf @method('PATCH')
                    <input type="hidden" name="status" value="accepted">
                    <button type="submit" class="bg-emerald-600 text-white px-5 py-2.5 rounded-lg text-sm font-medium hover:outline hover:outline-2 hover:outline-emerald-800"
                        onclick="return confirm('TERIMA pelamar ini? Notifikasi gagal yang terjadwal akan dibatalkan dan notifikasi diterima akan langsung dikirim.')">
                        Ubah ke Diterima
                    </button>
                </form>
            </div>
            @endif

            {{-- Allow reverting --}}
            <details class="mt-4">
                <summary class="text-xs text-gray-400 cursor-pointer hover:text-gray-600">Ubah status (revert)</summary>
                <div class="mt-3 p-4 bg-gray-50 rounded-lg">
                    <form action="{{ route('admin.applications.status', $application) }}" method="POST">
                        @csrf @method('PATCH')
                        <div class="flex flex-col sm:flex-row sm:items-start gap-3">
                            <div class="flex-1">
                                <select name="status" class="w-full border border-gray-200 rounded-lg px-4 py-2.5 text-sm focus:ring-2 focus:ring-indigo-500 outline-none">
                                    @foreach($availableStatuses as $st)
                                    <option value="{{ $st['value'] }}" {{ $application->status === $st['value'] ? 'selected' : '' }}>
                                        {{ $st['label'] }}
                                    </option>
                                    @endforeach
                                </select>
                            </div>
                            <button type="submit" class="bg-indigo-600 text-white px-5 py-2.5 rounded-lg text-sm font-medium hover:outline hover:outline-2 hover:outline-indigo-800 whitespace-nowrap"
                                onclick="return confirm('Yakin mengubah status?')">
                                Update
                            </button>
                        </div>
                    </form>
                </div>
            </details>
        </div>
        @endif
    </div>

    {{-- Stage Responses --}}
    @if($application->stageResponses->count() > 0)
    @foreach($application->stageResponses as $response)
    <div class="bg-white rounded-xl border border-gray-100 p-6 mb-6">
        <h3 class="text-lg font-semibold text-gray-800 mb-4">
            Data Formulir: {{ $response->jobStage->name ?? 'Tahap ' . $response->jobStage->stage_number }}
        </h3>
        <p class="text-xs text-gray-400 mb-4">Diisi pada: {{ $response->submitted_at?->format('d M Y H:i') }}</p>

        @if($response->responses)
        <div class="space-y-3">
            @foreach($response->responses as $fieldName => $fieldData)
            <div class="bg-gray-50 rounded-lg p-3">
                <span class="text-sm text-gray-500">{{ is_array($fieldData) ? ($fieldData['label'] ?? $fieldName) : $fieldName }}</span>
                <p class="text-gray-800 font-medium">{{ is_array($fieldData) ? ($fieldData['value'] ?? '-') : $fieldData }}</p>
            </div>
            @endforeach
        </div>
        @endif

        @if($response->cv_path)
        <div class="mt-4 pt-4 border-t border-gray-100">
            <a href="{{ asset('storage/' . $response->cv_path) }}" target="_blank"
                class="inline-flex items-center bg-blue-50 text-blue-600 px-4 py-2 rounded-lg text-sm font-medium hover:outline hover:outline-2 hover:outline-blue-300">
                Dokumen (Tahap {{ $response->jobStage->stage_number }})
            </a>
        </div>
        @endif
    </div>
    @endforeach
    @endif

    {{-- Notification Logs --}}
    <div class="bg-white rounded-xl border border-gray-100 p-6 mb-6">
        <h3 class="text-lg font-semibold text-gray-800 mb-4">Log Notifikasi</h3>
        @if($application->notificationLogs->count() > 0)
        <div class="space-y-2">
            @foreach($application->notificationLogs->sortByDesc('created_at') as $log)
            <div class="flex items-center justify-between p-3 bg-gray-50 rounded-lg text-sm">
                <div>
                    <span class="font-medium text-gray-700">{{ $log->type }}</span>
                    <span class="text-gray-400 ml-2">({{ $log->channel }})</span>
                </div>
                <div class="flex items-center space-x-2">
                    <span class="px-2 py-1 text-xs rounded-full {{ $log->status === 'sent' ? 'bg-green-100 text-green-700' : ($log->status === 'failed' ? 'bg-red-100 text-red-700' : 'bg-yellow-100 text-yellow-700') }}">
                        {{ $log->status }}
                    </span>
                    <span class="text-xs text-gray-400">{{ $log->created_at->format('d/m H:i') }}</span>
                </div>
            </div>
            @endforeach
        </div>
        @else
        <p class="text-gray-400 text-sm">Belum ada notifikasi</p>
        @endif
    </div>

    <a href="{{ route('admin.applications.index') }}" class="text-gray-500 hover:text-gray-700 text-sm font-medium">← Kembali ke Daftar Lamaran</a>
</div>
@endsection
