@extends('layouts.admin')

@section('title', 'Ticket #' . $ticket->id)

@section('content')
    <div class="admin-page-header d-flex flex-wrap justify-content-between align-items-center gap-2">
        <div>
            <div class="d-flex align-items-center gap-2">
                <h2 class="admin-page-title mb-0">Ticket #{{ $ticket->id }} - {{ $ticket->subject }}</h>
                {{-- <p class="admin-page-subtitle mb-0">{{ $ticket->subject }}</p> --}}
            </div>
            <div class="d-flex align-items-center gap-2 mt-2">
                @include('admin.tickets.partials.status-badge', ['status' => $ticket->status,'label' => $ticket->statusLabel()])
                @include('admin.tickets.partials.priority-badge', ['priority' => $ticket->priority])
            </div>
        </div>
        <div class="d-flex gap-2">
            <a href="{{ route('admin.orders.show', $ticket->order) }}" class="btn btn-outline-secondary">
                <i class="bi bi-receipt me-1"></i> Order #{{ $ticket->order_id }}
            </a>
            <a href="{{ route('admin.tickets.index') }}" class="btn btn-outline-secondary">
                    <i class="bi bi-arrow-left me-1"></i> Back To Tickets
                </a>
        </div>
    </div>

<div class="admin-content ticket-detail-page">
    <div class="row g-3">
        <div class="col-xl-8">
            <div class="admin-card mb-3">
                <div class="card-header d-flex justify-content-between align-items-center">
                    <h5 class="mb-0">Conversation</h5>
                    <small class="text-muted">{{ $ticket->messages->count() }} messages</small>
                </div>
                <div class="card-body conversation-wrap">
                    @forelse($ticket->messages as $message)
                        @php
                            $isAdmin = $message->sender_type === 'admin';
                        @endphp
                        <div class="message-row {{ $isAdmin ? 'is-admin' : 'is-customer' }}">
                            <div class="message-bubble {{ $isAdmin ? 'admin' : 'customer' }} {{ $message->is_internal ? 'internal' : '' }}">
                                <div class="d-flex justify-content-between align-items-start gap-2 mb-1">
                                    <div>
                                        <strong>{{ $message->sender->name ?? 'User' }}</strong>
                                        <small class="text-muted ms-1">({{ ucfirst($message->sender_type) }})</small>
                                        @if($message->is_internal)
                                            <span class="badge bg-warning text-dark ms-1">Internal Note</span>
                                        @endif
                                    </div>
                                    <small class="text-muted">{{ $message->created_at->format('d M Y, h:i A') }}</small>
                                </div>
                                <div class="message-text">{{ $message->message }}</div>
                            </div>
                        </div>
                    @empty
                        <div class="text-center text-muted py-4">
                            No messages yet.
                        </div>
                    @endforelse
                </div>
            </div>

            <div class="admin-card">
                <div class="card-header">
                    <h5 class="mb-0">Reply</h5>
                </div>
                <div class="card-body">
                    @if($ticket->isClosed())
                        <div class="alert alert-warning mb-3">
                            This ticket is closed by customer. Reply and status actions are disabled.
                        </div>
                    @endif

                    @can('tickets.assign')
                        @if(!$ticket->isClosed() && Route::has('admin.tickets.pick') && is_null($ticket->assigned_to) && $ticket->status === 'open_unassigned')
                            <form method="POST" action="{{ route('admin.tickets.pick', $ticket) }}" class="mb-3">
                                @csrf
                                <button type="submit" class="btn btn-outline-warning">
                                    <i class="bi bi-hand-index-thumb me-1"></i> Pick This Ticket
                                </button>
                            </form>
                        @endif
                    @endcan

                    @can('tickets.reply')
                        @if(!$ticket->isClosed())
                            <form method="POST" action="{{ route('admin.tickets.reply', $ticket) }}">
                                @csrf
                                <div class="mb-3">
                                    <textarea name="message" rows="4" class="form-control @error('message') is-invalid @enderror" placeholder="Type your reply..." required>{{ old('message') }}</textarea>
                                    @error('message')
                                        <div class="invalid-feedback">{{ $message }}</div>
                                    @enderror
                                </div>
                                <div class="d-flex flex-wrap justify-content-between align-items-center gap-2">
                                    <div class="form-check">
                                        <input class="form-check-input" type="checkbox" name="is_internal" value="1" id="is_internal">
                                        <label class="form-check-label" for="is_internal">Internal note (not visible to customer)</label>
                                    </div>
                                    <button class="btn btn-primary" type="submit">
                                        <i class="bi bi-send me-1"></i> Send Reply
                                    </button>
                                </div>
                            </form>
                        @endif
                    @endcan
                </div>
            </div>
        </div>

        <div class="col-xl-4">
            <div class="sticky-top" style="top: 84px;">
                <div class="admin-card mb-3">
                    <div class="card-header">
                        <h5 class="mb-0">Ticket Details</h5>
                    </div>
                    <div class="card-body">
                        <div class="detail-row">
                            <span>Order</span>
                            <strong>#{{ $ticket->order_id }}</strong>
                        </div>
                        <div class="detail-row">
                            <span>Customer</span>
                            <strong>{{ $ticket->customer->name ?? 'N/A' }}</strong>
                        </div>
                        <div class="detail-row">
                            <span>Mobile</span>
                            <strong>{{ $ticket->customer->mobile ?? '-' }}</strong>
                        </div>
                        <div class="detail-row">
                            <span>Status</span>
                            @include('admin.tickets.partials.status-badge', ['status' => $ticket->status, 'label' => $ticket->statusLabel()])
                        </div>
                        <div class="detail-row">
                            <span>Priority</span>
                            @include('admin.tickets.partials.priority-badge', ['priority' => $ticket->priority])
                        </div>
                        <div class="detail-row">
                            <span>Category</span>
                            <strong>{{ ucfirst(str_replace('_', ' ', $ticket->category)) }}</strong>
                        </div>
                        <div class="detail-row">
                            <span>Assigned To</span>
                            <strong>{{ $ticket->assignee->name ?? 'Unassigned' }}</strong>
                        </div>
                        <div class="detail-row mb-0">
                            <span>Last Reply</span>
                            <strong>{{ $ticket->last_reply_at ? $ticket->last_reply_at->format('d M Y, h:i A') : '-' }}</strong>
                        </div>
                    </div>
                </div>

                @can('tickets.assign')
                    @if(!$ticket->isClosed() && Route::has('admin.tickets.assign'))
                        <div class="admin-card mb-3">
                            <div class="card-header">
                                <h6 class="mb-0">Assign Ticket</h6>
                            </div>
                            <div class="card-body">
                                <form method="POST" action="{{ route('admin.tickets.assign', $ticket) }}">
                                    @csrf
                                    <div class="d-flex gap-2">
                                        <select name="assigned_to" class="form-select">
                                            @foreach($staffUsers as $staffUser)
                                                <option value="{{ $staffUser->id }}" {{ (int) $ticket->assigned_to === (int) $staffUser->id ? 'selected' : '' }}>
                                                    {{ $staffUser->name }} ({{ ucfirst($staffUser->user_type) }})
                                                </option>
                                            @endforeach
                                        </select>
                                        <button type="submit" class="btn btn-outline-warning">Assign</button>
                                    </div>
                                </form>
                            </div>
                        </div>
                    @endif
                @endcan

                @can('tickets.update')
                    @if(!$ticket->isClosed())
                        <div class="admin-card">
                            <div class="card-header">
                                <h6 class="mb-0">Update Status</h6>
                            </div>
                            <div class="card-body">
                                <form method="POST" action="{{ route('admin.tickets.update-status', $ticket) }}">
                                    @csrf
                                    @method('PUT')
                                    <div class="d-flex gap-2">
                                        <select name="status" class="form-select">
                                            <option value="assigned" {{ $ticket->status === 'assigned' ? 'selected' : '' }}>Assigned</option>
                                            <option value="in_progress" {{ $ticket->status === 'in_progress' ? 'selected' : '' }}>In Progress</option>
                                            <option value="answered" {{ $ticket->status === 'answered' ? 'selected' : '' }}>Answered</option>
                                            <option value="reopened" {{ $ticket->status === 'reopened' ? 'selected' : '' }}>Reopened</option>
                                        </select>
                                        <button type="submit" class="btn btn-outline-primary">Save</button>
                                    </div>
                                </form>
                            </div>
                        </div>
                    @endif
                @endcan
            </div>
        </div>
    </div>
</div>
@endsection

@push('styles')
<style>
.ticket-detail-page .conversation-wrap {
    max-height: 60vh;
    overflow-y: auto;
    background: #f8fafc;
}

.ticket-detail-page .message-row {
    display: flex;
    margin-bottom: .85rem;
}

.ticket-detail-page .message-row.is-admin {
    justify-content: flex-end;
}

.ticket-detail-page .message-row.is-customer {
    justify-content: flex-start;
}

.ticket-detail-page .message-bubble {
    width: min(100%, 680px);
    border-radius: .75rem;
    padding: .75rem .85rem;
    border: 1px solid #e5e7eb;
    background: #fff;
}

.ticket-detail-page .message-bubble.admin {
    background: #d0fbf7;
    border-color: #d0fbf7;
}

.ticket-detail-page .message-bubble.internal {
    background: #fff7e6;
    border-color: #fde68a;
}

.ticket-detail-page .message-text {
    white-space: pre-wrap;
    word-break: break-word;
}

.ticket-detail-page .detail-row {
    display: flex;
    justify-content: space-between;
    gap: .75rem;
    border-bottom: 1px solid #eef2f7;
    padding: .55rem 0;
    margin-bottom: .2rem;
}

.ticket-detail-page .detail-row > span {
    color: #6b7280;
}
</style>
@endpush
